Improve hypertext to textarea conversion
This commit is contained in:
parent
1bce968961
commit
159c218c89
|
@ -6,6 +6,33 @@
|
||||||
|
|
||||||
local fixers = ...
|
local fixers = ...
|
||||||
local get_player_information, type = minetest.get_player_information, type
|
local get_player_information, type = minetest.get_player_information, type
|
||||||
|
local function remove_hypertext(text)
|
||||||
|
-- If the text doesn't contain backslashes use gsub for performance
|
||||||
|
if not text:find('\\', 1, true) then
|
||||||
|
return text:gsub('<[^>]+>', '')
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Otherwise iterate over it
|
||||||
|
local res = ''
|
||||||
|
local escaping, ignoring
|
||||||
|
for i = 1, #text do
|
||||||
|
local char = text:sub(i, i)
|
||||||
|
if ignoring then
|
||||||
|
ignoring = char ~= '>'
|
||||||
|
elseif escaping then
|
||||||
|
res = res .. char
|
||||||
|
escaping = false
|
||||||
|
elseif char == '<' then
|
||||||
|
ignoring = true
|
||||||
|
elseif char == '\\' then
|
||||||
|
escaping = true
|
||||||
|
else
|
||||||
|
res = res .. char
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return res
|
||||||
|
end
|
||||||
|
|
||||||
local function backport_for(name, formspec)
|
local function backport_for(name, formspec)
|
||||||
local info = get_player_information(name)
|
local info = get_player_information(name)
|
||||||
local formspec_version = info and info.formspec_version or 1
|
local formspec_version = info and info.formspec_version or 1
|
||||||
|
@ -43,7 +70,7 @@ local function backport_for(name, formspec)
|
||||||
node.type = 'textarea'
|
node.type = 'textarea'
|
||||||
node.name = ''
|
node.name = ''
|
||||||
node.label = ''
|
node.label = ''
|
||||||
node.default = node.text:gsub('<[^>]+>', '')
|
node.default = remove_hypertext(node.text)
|
||||||
node.text = nil
|
node.text = nil
|
||||||
elseif node_type == 'scroll_container' then
|
elseif node_type == 'scroll_container' then
|
||||||
modified = true
|
modified = true
|
||||||
|
|
Loading…
Reference in New Issue