Modul:Gemeindeschlüssel
Utseende
Dokumentationen för denna modul kan skapas på Modul:Gemeindeschlüssel/dok
p = {}
-- function Gemeindeschlussel, formatering av tyska kommunkoder
function p.Gemeindeschlussel(frame)
local kod = frame.args['kommunkod']
local kod_len = mw.ustring.len(kod)
if not (kod_len == 5 or kod_len == 7 or kod_len == 8 or kod_len == 9) or mw.ustring.find(kod,"%D")~=nil then return "Felaktig kommunkod" end
resultat = mw.ustring.sub(kod,1,2).." "..mw.ustring.sub(kod,3,3).." "..mw.ustring.sub(kod,4,5)
if kod_len >=7 then resultat = resultat.." "..mw.ustring.sub(kod,6,kod_len) end
return resultat
end
-- function Regionalschlussel, formatering av tyska regionalkoder
function p.Regionalschlussel(frame)
function getRegionalCode(id)
id = mw.ustring.match((id or ''),'[Qq]%d+') or mw.wikibase.getEntityIdForCurrentPage()
id = (tonumber(mw.ustring.sub(id,2)) < 2 ^ 31) and id or mw.wikibase.getEntityIdForCurrentPage()
id = mw.wikibase.entityExists(id) and id or mw.wikibase.getEntityIdForCurrentPage()
resultat = ''
local t = mw.wikibase.getAllStatements(id,'P1388')
for i,v in ipairs(t) do
local s = v.mainsnak.datavalue.value
if mw.ustring.len(s) > mw.ustring.len(resultat) and not (v.qualifiers and v.qualifiers.P582) then resultat = s end
end
if mw.ustring.len(resultat) > 0 then return resultat end
t = mw.wikibase.getAllStatements(id,'P439')
for i,v in ipairs(t) do
local s = v.mainsnak.datavalue.value
if mw.ustring.len(s) > mw.ustring.len(resultat) and mw.ustring.len(s) == 8 and not (v.qualifiers and v.qualifiers.P582) then resultat = s end
end
if mw.ustring.len(resultat) == 8 then
t = mw.wikibase.getAllStatements(id,'P31')
for i,v in ipairs(t) do
if v.mainsnak.datavalue.value.id == 'Q15974311' and not (v.qualifiers and v.qualifiers.P582) then
resultat = mw.ustring.sub(resultat,1,5)..'9'..mw.ustring.sub(resultat,6,8)..mw.ustring.sub(resultat,6,8)
return resultat
end
end
resultat = ''
end
return resultat
end
local kod = frame.args['regionalkod'] or getRegionalCode(frame.args['q'])
local kod_len = mw.ustring.len(kod)
local min_len = tonumber(frame.args['minimilängd']) or (mw.ustring.sub(kod,6,6) == '5') and 12 or 9
local rel_len = tonumber(frame.args['relevanslängd']) or 1
if min_len < 2 then min_len = 2 end
if min_len > 5 and min_len < 9 then min_len = 5 end
if min_len > 9 and min_len < 12 then min_len = 9 end
if min_len > 12 then min_len = 12 end
rel_len = (rel_len > min_len) and min_len or rel_len
if kod_len < rel_len then return "" end
if kod_len < min_len then return "Felaktig regionalkod" end
if not (kod_len == 2 or kod_len == 3 or kod_len == 4 or kod_len == 5 or kod_len == 9 or kod_len == 12) or mw.ustring.find(kod,"%D")~=nil then return "Felaktig regionalkod" end
resultat = mw.ustring.sub(kod,1,2)
if kod_len == 2 then return resultat end
resultat_br = min_len == 2 and resultat.."<br/>" or ""
resultat = resultat.." "..mw.ustring.sub(kod,3,3)
if kod_len == 3 then return resultat_br..resultat end
resultat_br = resultat_br..(min_len == 3 and resultat.."<br/>" or "")
resultat = resultat.." "..mw.ustring.sub(kod,4,4)
if kod_len == 4 then return resultat_br..resultat end
resultat_br = resultat_br..(min_len == 4 and resultat.."<br/>" or "")
resultat = resultat..mw.ustring.sub(kod,5,5)
if kod_len == 5 then return resultat_br..resultat end
resultat_br = resultat_br..(min_len <= 5 and resultat.."<br/>" or "")
resultat = resultat.." "..mw.ustring.sub(kod,6,9)
if kod_len == 9 then return resultat_br..resultat end
resultat_br = resultat_br..(min_len <= 9 and resultat.."<br/>" or "")
resultat = resultat.." "..mw.ustring.sub(kod,10,12)
return resultat_br..resultat
end
return p