Модуль:Loc/Marking
Материал из Space Station 14 Вики
Для документации этого модуля может быть создана страница Модуль:Loc/Marking/doc
local p = {}
local function trim(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end
local function transform(s)
if not s or s == "" then return "" end
local pattern = "%[([%w_]+)(=([^%]]+))?%](.-)%[/%1%]"
local changed = true
while changed do
changed = false
s = s:gsub(pattern, function(tag, _, param, inner)
changed = true
local t = mw.ustring.lower(tag)
if t == "bold" then
return "'''" .. inner .. "'''"
elseif t == "italic" then
return "''" .. inner .. "''"
elseif t == "bolditalic" or (t == "bold" and inner:match("^%b''")) then
return "'''''" .. inner .. "'''''"
elseif t == "head" or t == "h" then
local lvl = tonumber(param) or 1
if lvl < 1 then lvl = 1 end
if lvl > 6 then lvl = 6 end
local eq = mw.ustring.rep("=", lvl)
local content = trim(inner)
return eq .. " " .. content .. " " .. eq .. "\n\n"
elseif t == "color" then
return '<span style="color:' .. mw.text.encode(param) .. ';">' .. inner .. '</span>'
elseif t == "bullet" then
return "· " .. inner
else
return inner
end
end)
end
s = s:gsub("%[/?[%w_]+[^%]]*%]", "")
return s
end
function p.main(frame)
local args = frame.args or {}
local text = args[1] or args.text or ""
if type(text) ~= "string" then text = tostring(text) end
local out = transform(text)
return out
end
return p