Modul:Sandkasse/Njardarlogar/levde
Dokumentasjon for modulen kan opprettast på Modul:Sandkasse/Njardarlogar/levde/dok
--[[
Krav:
{{levde|1. januar 1901 - 30. desember 1974}}
{{levde|fødd 1. januar 1901 i Harstad som Lars Larsen, daud 30. desember 1974 i Haslebygd}}
{{levde|? i Harstad, daud ? 1974 i Haslebygd}}
]]--
local sams = require('Modul:Sams')
local p = {}
function p.erDag(oppg)
if oppg:find('^%d%d%.$') or oppg:find('^%d%.$') then
return true
else
return false
end
end
function p.erMaanad(oppg)
if sams.erI(oppg, sams.maanader()) then
return true
else
return false
end
end
function p.erAarstal(oppg)
if oppg:find('^%-*%d+$') then
return true
else
return false
end
end
function p.dato(arg_spl, n)
-- Henta ut datoen
datoTab = {}
if p.erDag(arg_spl[n]) then
datoTab['dag'] = arg_spl[n]
datoTab['månad'] = arg_spl[n+1]
datoTab['år'] = arg_spl[n+2]
datoTab['dato'] = '[[' .. datoTab['dag'] .. ' ' .. datoTab['månad'] .. ']]' .. ' [[' .. datoTab['år'] .. ']]'
hopp = n+2
elseif p.erMaanad(arg_spl[n]) then
datoTab['månad'] = arg_spl[n]
datoTab['år'] = arg_spl[n+1]
datoTab['dato'] = datoTab['månad'] .. ' [[' .. datoTab['år'] .. ']]'
hopp = n+1
elseif p.erAarstal(arg_spl[n]) then
datoTab['år'] = arg_spl[n]
datoTab['dato'] = '[[' .. datoTab['år'] .. ']]'
hopp = n
elseif arg_spl[n] == '?' then
datoTab['dato'] = 'ukjend fødedato'
hopp = n
end
return datoTab, hopp
end
function p.namn(arg_spl, n)
-- Henta ut namnet
-- Mogelege avgrensingar: «,», «som», «-», «–»
for i, ele in ipairs(arg_spl) do
if i > n then
if ele == ',' or ele == 'som' or ele == '-' or ele == '–' then
ende = i-1
break
else
ende = i
end
if ele:find(',$') then
ende = i
length = ele:len()
arg_spl[ende] = ele:sub(1, length-1)
break
end
end
end
namnet = table.concat(arg_spl, ' ', n+1, ende)
return namnet
end
function p.stad(arg_spl, n)
-- Henta ut stad
-- Mogelege avgrensingar: «,», «som», «-», «–»
for i, ele in ipairs(arg_spl) do
if i > n then
if ele == ',' or ele == 'som' or ele == '-' or ele == '–' then
ende = i-1
break
else
ende = i
end
if ele:find(',$') then
ende = i
length = ele:len()
arg_spl[ende] = ele:sub(1, length-1)
break
end
end
end
if ende == n + 1 and not arg_spl[ende]:find(']]') then
arg_spl[ende] = '[[' .. arg_spl[ende] .. ']]'
end
stadnamn = ' ' .. table.concat(arg_spl, ' ', n, ende)
return stadnamn
end
function p.hovud(ramme)
arg = ramme:getParent().args
hArg = arg[1]
if hArg:find('%d–%d') then -- syrg for mellomrom
hArg = hArg:gsub('–', ' - ')
elseif hArg:find('%d%-%d') then
hArg = hArg:gsub('-', ' - ')
elseif hArg:find('%?.%d') then
hArg = hArg:gsub('%?.', '? - ')
end
arg_spl = mw.text.split(hArg, ' ')
l = table.maxn(arg_spl)
hopp = 0
stad1 = nil
stad2 = nil
foedd_dato = ''
foedenamn = ''
kat1 = ''
kat2 = ''
kat3 = ''
kat4 = ''
for n, arget in ipairs(arg_spl) do
if arget == 'fødd' or n == 1 then
if arget == 'fødd' then
byrj = n + 1
else
byrj = n
end
if arg_spl[byrj] == 'i' or arg_spl[byrj] == 'på' then -- ukjend fødedato
foedd_dato = ''
else
datoTab, hopp = p.dato(arg_spl, byrj)
foedd_dato = datoTab['dato']
end
if foedd_dato ~= '' and datoTab['år'] then
kat1 = '[[Kategori:Fødde i ' .. datoTab['år'] .. ']]'
if datoTab['dag'] then
kat2 = '[[Kategori:Fødde den ' .. datoTab['dag'] .. ' ' .. datoTab['månad'] .. ']]'
end
end
elseif arget == 'daud' or arget == 'død' or arget == '-' then
datoTab, hopp = p.dato(arg_spl, n+1)
daud_dato = datoTab['dato']
if daud_dato ~= '' and datoTab['år'] then
kat3 = '[[Kategori:Døde i ' .. datoTab['år'] .. ']]'
if datoTab['dag'] then
kat4 = '[[Kategori:Døde den ' .. datoTab['dag'] .. ' ' .. datoTab['månad'] .. ']]'
end
end
elseif arget == 'i' or arget == 'på' then
if not stad1 then
stad1 = p.stad(arg_spl, n)
else
stad2 = p.stad(arg_spl, n)
end
elseif arget == 'som' then
foedenamn, hopp = p.namn(arg_spl, n)
foedenamn = ' som ' .. "'''" .. foedenamn .. "'''"
end
end
if not stad1 then
stad1 = ''
end
if not stad2 then
stad2 = ''
end
if stad1 == '' and stad2 == '' and foedenamn == '' then -- stuttversjon
tekst = '(' .. foedd_dato .. '–' .. daud_dato .. ')'
else -- langversjon
tekst = '(fødd ' .. foedd_dato .. stad1 .. foedenamn .. ', daud ' .. daud_dato .. stad2 .. ')'
end
tekst = tekst .. kat1 .. kat2 .. kat3 .. kat4
return tekst
end
return p