Module:Sandbox/Premeditated/kommune explained

local wd = require('Module:Wd')local data = mw.loadData("Module:Sandbox/Premeditated/kommune/data")local getArgs = require('Module:Arguments').getArgs

local p =

function p.test(frame) local i = 10 local c = 100 return i,cend

local function getRef(frame) return frame:callParserFunctionend

local function round(num, numDecimalPlaces) return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))end

-- BUILDER!!

local table_sort = local header_sort =

local function sorted_iter(t) local fin = for i, val in pairs(t) do for i2, val2 in pairs(table_sort) do if i

val2 then if tonumber(val) then table.insert(fin,i2, tonumber(val)) else table.insert(fin,i2, val) end end end end return finend

function p.tabell(frame) local args = getArgs(frame) local fylkenr = tonumber(args[1]) local row = local tbl = mw.html.create('table') tbl :addClass('wikitable sortable') :tag('caption'):wikitext(data['fylke'][fylkenr]['fylke']):done local header = mw.html.create('tr'):done for ih, valh in pairs(header_sort) do local hData = mw.html.create('th') :wikitext(valh):done header:node(hData) end tbl:node(header) for i, val in pairs(data['nummerserie'][fylkenr]) do row = mw.html.create('tr'):done :tag('td'):wikitext(val):done for i1,val2 in pairs(sorted_iter(data['kommune'][val])) do if type(val2)

'number' then local data = mw.html.create('td') :wikitext(mw.language.getContentLanguage:formatNum(val2)):done row:node(data) else local data = mw.html.create('td') :wikitext(val2):done row:node(data) end end tbl:node(row) end tbl:tag('tr') :addClass('sortbottom') :tag('td') :attr('colspan', 16) :wikitext('Alle rader med unntak av "nr." og "kommune" er i enheten km². Basert på data hentet fra Kartverket.' .. getRef(frame)):done-- local html = tostring(tbl)-- local dumphtml = require('Module:Dump')._dumphtml-- return dumphtml(html) return tostring(tbl)end

function p.innbprkm(frame) local args = getArgs(frame) local knr = tonumber(args['knr']) or tonumber(args[1]) local innb = tonumber(args['innb']) or tonumber(args[2]) local unit = local ref = for nr, val in pairs(args) do if string.lower(val)

'enhet' then unit = ' innb./km²' elseif string.lower(val)

'ref' then ref = getRef(frame) elseif string.lower(val)

'wd' then knr = tonumber(wd._properties) innb = tonumber(wd._property) if not knr or knr

then knr = tonumber(string.match(wd._properties, "%d+")) end end end if pcall(function return data['kommune'][knr]['landareal'] end) and innb then return mw.language.getContentLanguage:formatNum(round(innb/tonumber(data['kommune'][knr]['landareal']),2)) .. unit .. ref elseif pcall(function return data['fylke'][knr]['landareal'] end) and innb then return mw.language.getContentLanguage:formatNum(round(innb/tonumber(data['fylke'][knr]['landareal']),2)) .. unit .. ref else local qid = mw.wikibase.getEntityIdForTitle(data['kommune'][knr]['kommune'] .. ' kommune',"nnwiki") innb = tonumber(wd._property)

if pcall(function return data['kommune'][knr]['landareal'] end) and innb then return mw.language.getContentLanguage:formatNum(round(innb/tonumber(data['kommune'][knr]['landareal']),2)) .. unit .. ref else return "" end endend

function p.main(frame) local args = getArgs(frame) local nr = tonumber(args[1]) or nil local verdi = 'kommune' local unit = local ref =

for nr2, val in pairs(args) do if string.lower(val)

'enhet' then unit = ' km²' elseif string.lower(val)

'ref' then ref = getRef(frame) elseif string.lower(val)

'wd' then nr = tonumber(wd._properties) if not nr or nr

then nr = tonumber(string.match(wd._properties, "%d+")) end end end if nr

nil then return end if args['hent'] then verdi = string.lower(args['hent']) elseif nr <= 54 and nr >= 3 then verdi = 'fylke' end if nr <= 54 and nr >= 3 then if pcall(function return data['fylke'][nr][verdi] end) then if type(data['fylke'][nr][verdi])

"number" then return mw.language.getContentLanguage:formatNum(data['fylke'][nr][verdi]) .. unit .. ref else return data['fylke'][nr][verdi] .. unit .. ref end else error("Not a valid fylkenummer in the list") end end if pcall(function return data['kommune'][nr][verdi] end) then if type(data['kommune'][nr][verdi])

"number" then return mw.language.getContentLanguage:formatNum(data['kommune'][nr][verdi]) .. unit .. ref else return data['kommune'][nr][verdi] .. unit .. ref end else error("Not a valid kommunenummer in the list") end

end

return p