Модуль:Loc/Marking: различия между версиями

мНет описания правки
мНет описания правки
Строка 51: Строка 51:
local function parse_attrs(attr_str)
local function parse_attrs(attr_str)
     if not attr_str then return nil end
     if not attr_str then return nil end
     attr_str = mw.ustring.gsub(attr_str, "^%s*=%s*", "")
     attr_str = mw.ustring.gsub(attr_str, "^%s*=%s*", "")
     attr_str = trim(attr_str)
     attr_str = trim(attr_str)
     if attr_str == "" then return nil end
     if attr_str == "" then return nil end
Строка 57: Строка 57:
     local params = {}
     local params = {}


     for k, v in mw.ustring.gmatch(attr_str, "([%w_%-%:]+)%s*=%s*\"(.-)\"") do
     for k, v in mw.ustring.gmatch(attr_str, "([%w_%-%:]+)%s*=%s*\"(.-)\"") do
         params[mw.ustring.lower(k)] = v
         params[mw.ustring.lower(k)] = v
     end
     end
     attr_str = mw.ustring.gsub(attr_str, "([%w_%-%:]+)%s*=%s*\"(.-)\"", "")
     attr_str = mw.ustring.gsub(attr_str, "([%w_%-%:]+)%s*=%s*\"(.-)\"", "")


     for k, v in mw.ustring.gmatch(attr_str, "([%w_%-%:]+)%s*=%s*([^%s%]]+)") do
     for k, v in mw.ustring.gmatch(attr_str, "([%w_%-%:]+)%s*=%s*([^%s%]]+)") do
         params[mw.ustring.lower(k)] = v
         params[mw.ustring.lower(k)] = v
     end
     end
     attr_str = mw.ustring.gsub(attr_str, "([%w_%-%:]+)%s*=%s*([^%s%]]+)", "")
     attr_str = mw.ustring.gsub(attr_str, "([%w_%-%:]+)%s*=%s*([^%s%]]+)", "")


     local unnamed = mw.ustring.match(attr_str, "%s*\"(.-)\"")
     local unnamed = mw.ustring.match(attr_str, "%s*\"(.-)\"")
Строка 114: Строка 114:


local function process_nowiki_equals(str)
local function process_nowiki_equals(str)
str = str:gsub('==', '==')
str = str:gsub('#', '#')
             :gsub(' ', '  ')
            :gsub('=', '=')
            :gsub(' ', ' ')
            :gsub('{', '{')
             :gsub('"', '"')
            :gsub("'", '
')
            :gsub('*', '*')
return str
return str
end
end
Строка 123: Строка 128:
     local text = args[1] or args.text or ""
     local text = args[1] or args.text or ""
     text = mw.text.unstripNoWiki(text)
     text = mw.text.unstripNoWiki(text)
     text = transform(text)
     text = process_nowiki_equals(text)
     return process_nowiki_equals(text)
     return transform(text)
end
end


return p
return p