Module:CountryData: Difference between revisions
From Zoophilia Wiki
Jump to navigationJump to search
meta>SiBr4 Moved from my sandbox |
(No difference)
|
Revision as of 09:25, 21 August 2015
Documentation for this module may be created at Module:CountryData/doc
function gettable(frame,country,params)
--Returns the parameters of a country data template as a Lua table
--If not a valid data template, return empty table
if string.find(frame:preprocess("{{Country data "..country.."}}"),"^%{%{ *%{%{%{1")
then
--Params to be passed into data template
params = params or {}
--Transclude template without first parameter for string list of params
local s = frame:expandTemplate({title="Country data "..country;args=params})
--Replace parameter delimiters with arbitrary control characters
--to avoid clashes if param values contain equals/pipe signs
s = string.gsub(s,"|([^|=]-)=","\1\1%1\2")
s = string.gsub(s,"}}%s*$","\1")
--Loop over string and add params to table
local part = {}
for par in string.gmatch(s,"\1[^\1\2]-\2[^\1\2]-\1") do
local k = string.match(par,"\1%s*(.-)%s*\2")
local v = string.match(par,"\2%s*(.-)%s*\1")
part[k] = v
end
return part
else
return {}
end
end
function p.getalias(frame)
--Returns a single parameter value from a data template
local part = gettable(frame,frame.args[1])
return tostring(part[frame.args[2]])
end
function p.gettemplate(frame)
--For testing, recreates the country data from the created Lua table
--Get data table
local data = gettable(frame,frame.args[1])
--Concatenate fields into a template-like string
local out = "{{ {{{1}}}"
for k,v in pairs(data) do
out = out.."\n| "..k.." = "..v
end
return out.."\n}}"
end