Module:Sandbox/ProcrastinatingReader/ib

local getArgs = require('Module:Arguments').getArgs

local p = {}

local function isempty(s) return s == nil or s == '' end

local function dataValue(frame, settlementName, parameterName, itemName) return frame:expandTemplate{ title = 'Data '..settlementName..' municipality', args = { parameterName, itemName }} end

local function getNetValue(frame, argCategory, argName) local args = getArgs(frame) local argType = args['arg_type'] and (args['arg_type']..'_') or '' local paramName = argCategory..'_'..argType..argName

local net = args[paramName] or dataValue(frame, args['subdivision_name'], paramName, args['name'])

return net end

function p.nativeName(frame) local val = frame.args[1] if val then local match = mw.ustring.match(val, "{{[Ii]nfobox (%a*)") --if true then return match end if match and match[1] then return match[1] end end return "" end

function p.area(frame) local args = getArgs(frame) local argCategory = 'area' local km2 = getNetValue(frame, argCategory, 'km2') local ha = getNetValue(frame, argCategory, 'ha') local acre = getNetValue(frame, argCategory, 'acre') local sqmi = getNetValue(frame, argCategory, 'sq_mi') local dunam = getNetValue(frame, argCategory, 'dunam') if not (isempty(km2) and isempty(ha) and isempty(acre) and isempty(sqmi) and isempty(dunam)) then return frame:expandTemplate{ title = 'infobox_settlement/areadisp', args = { ['km2'] = km2, ['ha'] = ha, ['acre'] = acre, ['sqmi'] = sqmi, ['dunam'] = dunam, ['link'] = args['dunam_link'], ['pref'] = args['unit_pref'], ['name'] = args['subdivision_name'], ['mag'] = args['area_magnitude'] }}	else return "" end end

function p.demographics(frame) local args = getArgs(frame) local tArgs = { ['child'] = 'yes', ['headerstyle'] = 'text-align:left', }

for i = 1,2 do		local dtype = getNetValue(frame, 'demographics', 'type'..i)		if not isempty(dtype) then local series = i + 20 * (i-1) tArgs['header'..series] = dtype..' '.. getNetValue(frame, 'demographics1', 'footnotes') ..' ' tArgs['rowclass'..series] = 'mergedtoprow' for j = 1,10 do				local dval = getNetValue(frame, 'demographics1', 'title'..j)				if not isempty(dval) then tArgs['rowclass'..(series + j)] = 'mergedrow' tArgs['label'..(series + j)] = ' • '..getNetValue(frame, 'demographics1', 'title'..j)					tArgs['data'..(series + j)] = getNetValue(frame, 'demographics1', 'info'..j)				end end end end return frame:expandTemplate{ title = 'infobox', args = tArgs} end

function p.generic(frame) local args = getArgs(frame) local paramName = args['param_name'] return getNetValue(frame, 'area', paramName) end

return p