Modul:Levde/test
Testmodul for å gjera det lettare å røyna ut oppdateringar av skriptet.
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]:gsub(',$', '')) then
datoTab['år'] = arg_spl[n]:gsub(',$', '')
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: «,», «-», «–» og «og»
for i, ele in ipairs(arg_spl) do
if i > n then
if ele == ',' or ele == '-' or ele == '–' or ele == 'og' 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», «-», «–» og «og»
for i, ele in ipairs(arg_spl) do
if i > n then
if ele == ',' or ele == 'som' or ele == '-' or ele == '–' or ele == 'og' 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 then
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, ' ')
else
arg_spl = {''}
end
l = table.maxn(arg_spl)
hopp = 0
stad1 = nil
stad2 = nil
foedd_dato = ''
daud_dato = ''
foedenamn = ''
foedd_kring = ''
daud_kring = ''
kat1 = ''
kat2 = ''
kat3 = ''
kat4 = ''
side = 'fødd' -- kva dato jobbar me med?
maanadsliste = sams.maanader()
eining = mw.wikibase.getEntity()
if eining and eining.claims and eining.claims.p569 then
WDfoedd = eining.claims.p569[0].mainsnak.datavalue.value['time']
WDsplitta = mw.text.split(WDfoedd, '-')
plussminus = WDsplitta[1]:sub(1, 1)
aarstal_i = WDsplitta[1]:find('[^+-0]')
datoTabFoedd = {}
datoTabFoedd['år'] = WDsplitta[1]:sub(aarstal_i, -1)
datoTabFoedd['månad'] = maanadsliste[tonumber(WDsplitta[2])]
datoTabFoedd['dag'] = WDsplitta[3]:sub(1, 2):gsub('0', '') .. '.'
datoTabFoedd['dato'] = '[[' .. datoTabFoedd['dag'] .. ' ' .. datoTabFoedd['månad'] .. ']] [[' .. datoTabFoedd['år'] .. ']]'
end
if eining and eining.claims and eining.claims.p570 then
WDdaud = eining.claims.p570[0].mainsnak.datavalue.value['time']
WDsplitta = mw.text.split(WDdaud, '-')
plussminus = WDsplitta[1]:sub(1, 1)
aarstal_i = WDsplitta[1]:find('[^+-0]')
datoTabDaud = {}
datoTabDaud['år'] = WDsplitta[1]:sub(aarstal_i, -1)
datoTabDaud['månad'] = maanadsliste[tonumber(WDsplitta[2])]
datoTabDaud['dag'] = WDsplitta[3]:sub(1, 2):gsub('0', '') .. '.'
datoTabDaud['dato'] = '[[' .. datoTabDaud['dag'] .. ' ' .. datoTabDaud['månad'] .. ']] [[' .. datoTabDaud['år'] .. ']]'
end
i_hovudNR = mw.title.getCurrentTitle():inNamespace(0) -- er me i hovudnamnerommet?
for n, arget in ipairs(arg_spl) do
if arget == 'kring' or arget == 'ca.' or arget == 'cirka' then
if side == 'fødd' then
foedd_kring = 'kring '
elseif side == 'daud' then
daud_kring = 'kring '
end
elseif arget == 'fødd' or n == 1 then --or (n == 2 and foedd_kring ~= '') then
if arg_spl[n+1] == 'kring' or arg_spl[n+1] == 'ca.' or arg_spl[n+1] == 'cirka' then
datoindeks = n+2
elseif arget == 'fødd' then
datoindeks = n+1
else
datoindeks = n
end
if not arg_spl[1] == '' then
datoTabFoedd, hopp = p.dato(arg_spl, datoindeks)
end
elseif arget == 'daud' or arget == 'død' or arget == '-' then
side = 'daud'
if arg_spl[n+1] == 'kring' or arg_spl[n+1] == 'ca.' or arg_spl[n+1] == 'cirka' then
datoindeks = n+2
else
datoindeks = n+1
end
if not arg_spl[1] == '' then
datoTabDaud, hopp = p.dato(arg_spl, datoindeks)
end
elseif arget == 'i' or arget == 'på' then
if side == 'fødd' then
stad1 = p.stad(arg_spl, n)
elseif side == 'daud' then
stad2 = p.stad(arg_spl, n)
end
elseif arget == 'som' then
foedenamn, hopp = p.namn(arg_spl, n)
foedenamn = ' som ' .. "'''" .. foedenamn .. "'''"
end
end
foedd_dato = datoTabFoedd['dato'] or ''
if foedd_dato ~= '' and datoTabFoedd['år'] then
kat1 = '[[Kategori:Fødde i ' .. datoTabFoedd['år'] .. ']]'
if datoTabFoedd['dag'] then
kat2 = '[[Kategori:Fødde den ' .. datoTabFoedd['dag'] .. ' ' .. datoTabFoedd['månad'] .. ']]'
end
end
daud_dato = datoTabDaud['dato']
if daud_dato ~= '' and datoTabDaud['år'] then
kat3 = '[[Kategori:Døde i ' .. datoTabDaud['år'] .. ']]'
if datoTabDaud['dag'] then
kat4 = '[[Kategori:Døde den ' .. datoTabDaud['dag'] .. ' ' .. datoTabDaud['månad'] .. ']]'
end
end
if not stad1 then
stad1 = ''
end
if not stad2 then
stad2 = ''
end
if not i_hovudNR then
kat1 = ''
kat2 = ''
kat3 = ''
kat4 = ''
end
if stad1 == '' and stad2 == '' and foedenamn == '' then -- stuttversjon
tekst = '(' .. foedd_kring .. foedd_dato .. '–' .. daud_kring .. daud_dato .. ')'
else -- langversjon
tekst = '(fødd ' .. foedd_kring .. foedd_dato .. stad1 .. foedenamn .. ', daud ' .. daud_kring .. daud_dato .. stad2 .. ')'
end
tekst = tekst .. kat1 .. kat2 .. kat3 .. kat4
tekst = tekst:gsub(',]]', ']]') -- snøggløysing for å få bort uynskte komma
return tekst
end
return p