Bước tới nội dung

Mô đun:CountryData

Bách khoa toàn thư mở Wikipedia
local p = {}local mostUsed = mw.loadData('Module:CountryData/summary')local function getcontents(frame,country,params)  return frame:expandTemplate({title="Country data "..country;args=params})endfunction p.getcachedtable(frame, country, params)	country = mostUsed.redirects[country] or country	if params and next(params) then return p.gettable(frame, country, params) end	-- Uses mw.loadData to cache data for the most-used templates	if mostUsed.pages[country] then		local cache = mw.loadData('Module:CountryData/cache' .. mostUsed.pages[country])		if cache.data[country] then return cache.data[country] end	end	-- if not in cache	return p.gettable(frame, country, params)endfunction p.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  local bool, s = pcall(getcontents,frame,country,params or {})  if bool and (string.find(s,"^%{%{ *%{%{%{1") or string.find(s,"^%{%{safesubst: *%{%{%{1"))  then    --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")      if v and not (v=="" and string.find(k,"^flag alias")) then        part[k] = v      end    end    return part  else  	return {}  endendfunction p.getalias(frame)--Returns a single parameter value from a data template  local part = p.gettable(frame,frame.args[1])  if frame.args.variant    then return tostring(part[frame.args[2].."-"..frame.args.variant]                         or part[frame.args[2]] or frame.args.def)    else return tostring(part[frame.args[2]] or frame.args.def)  endendfunction p.gettemplate(frame)--For testing, recreates the country data from the created Lua table  --Get data table  local data = p.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}}"endreturn p