Přeskočit na obsah

Modul:Parse

Tato stránka je zamčena
Z Wikipedie, otevřené encyklopedie
localp={}

localCHAR,SET,REPLACE=0x1,0x2,0x4

-- https:// mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Character_class
localescapeChars={
['^']=CHAR+SET,
['$']=CHAR,
['(']=CHAR,
[')']=CHAR,
['%']=CHAR+SET+REPLACE,
['.']=CHAR,
['[']=CHAR+SET,
[']']=CHAR+SET,
['*']=CHAR,
['+']=CHAR,
['-']=CHAR+SET,
['?']=CHAR,
}

localfunctionescape(c,context)
localbit32=require('bit32')
localmask=escapeChars[c]or0x0
ifbit32.btest(mask,context)then
return'%'..c
else
returnc
end
end

functionp.splitAndMap(str,data,separator,unified_param,marker)
ifnotmarkerormarker==''then
marker=','
elseifmw.ustring.len(marker)>1then
error('marker must be a single character')
end
localstring_to_parse=mw.text.trim(str)
string_to_parse=mw.ustring.gsub(
string_to_parse,
'('..string.char(0x7F)..'.-'..string.char(0x7F)..')',
escape(marker,REPLACE)..'%1'..escape(marker,REPLACE))
string_to_parse=mw.ustring.gsub(
string_to_parse,
escape(marker,CHAR)..'['..escape(marker,SET)..' ]*',
escape(marker,REPLACE))
localparsed_table=mw.text.split(string_to_parse,marker,true)
forpos,arginpairs(parsed_table)do
ifunified_param==nilthen
ifdata[arg]~=nilthen
parsed_table[pos]=data[arg]
else
parsed_table[pos]=arg
end
else
ifstring.match(arg,string.char(0x7F))==nilthen
arg=string.gsub(unified_param,'%(hodnota%)',arg)
end
parsed_table[pos]=arg
end
end

returntable.concat(parsed_table,separator)
end

functionp.horizontalList(context)
returnp.splitAndMap(context.args[1],context.args,'',context.args[2])
end

functionp.countriesWithFlags(context)
localdata={}
local__index=function(t,key)
ifmw.ustring.find(key,'[%[%]|<>]')then
returnnil
end
localvalue=context:expandTemplate{title='Vlajka a název',args={key}}
t[key]=value
returnvalue
end
setmetatable(data,{__index=__index})
returnp.splitAndMap(context.args[1],data,'<br>')
end

functionp.regions(context)
localdata={}
local__index=function(t,key)
ifmw.ustring.find(key,'[%[%]|<>]')then
returnnil
end
localvalue='[[okres '..key..'|'..key..']]'
t[key]=value
returnvalue
end
setmetatable(data,{__index=__index})
returnp.splitAndMap(context.args[1],data,', ')
end

functionp.ghsStatements(context)
localcodes=mw.text.trim(context.args[1])
localmarker='+'
localstatements=mw.text.split(codes,marker,true)
localknown=context.args
for_,statementinpairs(statements)do
ifknown[statement]==nilthen
return' ">'..context:expandTemplate{title='Chyba',args={'Neznámá věta'}}..' <span title= "'
end
end
returnp.splitAndMap(codes,known,' ',context.args[2],marker)
end

returnp