Modul:ISOtilNorskdato: Forskjell mellom sideversjoner
Hopp til navigering
Hopp til søk
tar bort sporing av feil datoformat, dette håndteres bedre an Modul:Citation/CS1/Date validation |
rv |
||
| Linje 1: | Linje 1: | ||
local p = {} | local p = {} | ||
local lang = mw.getContentLanguage() | local lang = mw.getContentLanguage() | ||
-- HtmlError = require('Modul:Error') | |||
function p.isodato(frame) | function p.isodato(frame) | ||
local dato = mw.text.trim(frame.args[1]) | local dato = mw.text.trim(frame.args[1]) | ||
if dato:match("^%d%d%d%d%-%d%d%-%d%d$") or dato:match("^%d%d%d%d%-%d%d%-%d$") or dato:match("^%d%d%d%d%-%d%-%d%d$") or dato:match("^%d%d%d%d%-%d%-%d$") then | if dato:match("^%d%d%d%d%-%d%d%-%d%d$") or dato:match("^%d%d%d%d%-%d%d%-%d$") or dato:match("^%d%d%d%d%-%d%-%d%d$") or dato:match("^%d%d%d%d%-%d%-%d$") then | ||
local day = lang:formatDate('j. F', dato) | if dato:match("^%d%d%d%d%-%d%d%-%d%d$") then | ||
local year = lang:formatDate('Y', dato) | local month_number = string.sub(dato, 6, 7) | ||
assert(tonumber(year), frame.args[1]) | local day_number = string.sub(dato, 9, 10) | ||
if tonumber(month_number) > 12 then | |||
result = dato .. "<sup><small>'''Feil datoformat''': månedstallet er høyere enn 12</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
elseif tonumber(day_number) > 31 then | |||
result = dato .. "<sup><small>'''Feil datoformat''': dagstallet er høyere enn 31</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
else | |||
local day = lang:formatDate('j. F', dato) | |||
local year = lang:formatDate('Y', dato) | |||
assert(tonumber(year), frame.args[1]) | |||
local args = mw.text.trim(frame.args[2]) | |||
if args == 'n' then | |||
result = day.. " "..year | |||
else | |||
result = "[["..day.."]] [["..year.."]]" | |||
end | |||
end | |||
elseif dato:match("^%d%d%d%d%-%d%d%-%d$") then | |||
local month_number = string.sub(dato, 6, 7) | |||
if tonumber(month_number) > 12 then | |||
result = dato .. '<sup><small>Feil datoformat: månedstallet er høyere enn 12</small></sup>[[Kategori:Sider som inneholder feil datoformat]]' | |||
else | |||
local day = lang:formatDate('j. F', dato) | |||
local year = lang:formatDate('Y', dato) | |||
assert(tonumber(year), frame.args[1]) | |||
local args = mw.text.trim(frame.args[2]) | |||
if args == 'n' then | |||
result = day.. " "..year | |||
else | |||
result = "[["..day.."]] [["..year.."]]" | |||
end | |||
end | |||
elseif dato:match("^%d%d%d%d%-%d%-%d%d$") then | |||
local day_number = string.sub(dato, 8, 9) | |||
if tonumber(day_number) > 31 then | |||
result = dato .. "<sup><small>'''Feil datoformat''': dagstallet er høyere enn 31</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
else | |||
local day = lang:formatDate('j. F', dato) | |||
local year = lang:formatDate('Y', dato) | |||
assert(tonumber(year), frame.args[1]) | |||
local args = mw.text.trim(frame.args[2]) | |||
if args == 'n' then | |||
result = day.. " "..year | |||
else | |||
result = "[["..day.."]] [["..year.."]]" | |||
end | |||
end | |||
else | |||
local day = lang:formatDate('j. F', dato) | |||
local year = lang:formatDate('Y', dato) | |||
assert(tonumber(year), frame.args[1]) | |||
local args = mw.text.trim(frame.args[2]) | local args = mw.text.trim(frame.args[2]) | ||
if args == 'n' then | if args == 'n' then | ||
| Linje 14: | Linje 64: | ||
result = "[["..day.."]] [["..year.."]]" | result = "[["..day.."]] [["..year.."]]" | ||
end | end | ||
end | |||
elseif dato:match("^%d%d%s%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%a%a%a%a%s%d%d%d%d$") then | |||
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
elseif dato:match("^%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%d%s%d%d%d%d$") then | |||
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
elseif dato:match("^%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") then | |||
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
elseif dato:match("^%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") then | |||
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
elseif dato:match("^%d%s%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%a%a%a%a%s%d%d%d%d$") then | |||
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
elseif dato:match("^%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%s%d%d%d%d$") then | |||
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
elseif dato:match("^%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") then | |||
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
elseif dato:match("^%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") then | |||
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]" | |||
else | else | ||
result = dato | result = dato | ||
end | end | ||
return result | return result | ||
end | end | ||
return p | return p | ||
Sideversjonen fra 14. aug. 2014 kl. 19:09
| Denne modulen brukes på over 137 000 sider. Det anbefales at endringer testes i en sandkasse før de legges inn. Diskuter gjerne også endringer på diskusjonssiden først. |
Denne modulen bruker #time-funksjonen til å omdanne datoer til formen DD. MMMM ÅÅÅÅ (for eksempel 21. februar 1981) som er standard på no.wiki.
Den første, og eneste, parameteren er datoen man ønsker å omsette til norsk wikistandard.
Se mal:ISOtilNorskdato som er frontend for modulen.
- Modul:ISOtilNorskdato • Modul:ISOtilNorskdato/sandkasse • forskjellig (diff)
local p = {}
local lang = mw.getContentLanguage()
-- HtmlError = require('Modul:Error')
function p.isodato(frame)
local dato = mw.text.trim(frame.args[1])
if dato:match("^%d%d%d%d%-%d%d%-%d%d$") or dato:match("^%d%d%d%d%-%d%d%-%d$") or dato:match("^%d%d%d%d%-%d%-%d%d$") or dato:match("^%d%d%d%d%-%d%-%d$") then
if dato:match("^%d%d%d%d%-%d%d%-%d%d$") then
local month_number = string.sub(dato, 6, 7)
local day_number = string.sub(dato, 9, 10)
if tonumber(month_number) > 12 then
result = dato .. "<sup><small>'''Feil datoformat''': månedstallet er høyere enn 12</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
elseif tonumber(day_number) > 31 then
result = dato .. "<sup><small>'''Feil datoformat''': dagstallet er høyere enn 31</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
else
local day = lang:formatDate('j. F', dato)
local year = lang:formatDate('Y', dato)
assert(tonumber(year), frame.args[1])
local args = mw.text.trim(frame.args[2])
if args == 'n' then
result = day.. " "..year
else
result = "[["..day.."]] [["..year.."]]"
end
end
elseif dato:match("^%d%d%d%d%-%d%d%-%d$") then
local month_number = string.sub(dato, 6, 7)
if tonumber(month_number) > 12 then
result = dato .. '<sup><small>Feil datoformat: månedstallet er høyere enn 12</small></sup>[[Kategori:Sider som inneholder feil datoformat]]'
else
local day = lang:formatDate('j. F', dato)
local year = lang:formatDate('Y', dato)
assert(tonumber(year), frame.args[1])
local args = mw.text.trim(frame.args[2])
if args == 'n' then
result = day.. " "..year
else
result = "[["..day.."]] [["..year.."]]"
end
end
elseif dato:match("^%d%d%d%d%-%d%-%d%d$") then
local day_number = string.sub(dato, 8, 9)
if tonumber(day_number) > 31 then
result = dato .. "<sup><small>'''Feil datoformat''': dagstallet er høyere enn 31</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
else
local day = lang:formatDate('j. F', dato)
local year = lang:formatDate('Y', dato)
assert(tonumber(year), frame.args[1])
local args = mw.text.trim(frame.args[2])
if args == 'n' then
result = day.. " "..year
else
result = "[["..day.."]] [["..year.."]]"
end
end
else
local day = lang:formatDate('j. F', dato)
local year = lang:formatDate('Y', dato)
assert(tonumber(year), frame.args[1])
local args = mw.text.trim(frame.args[2])
if args == 'n' then
result = day.. " "..year
else
result = "[["..day.."]] [["..year.."]]"
end
end
elseif dato:match("^%d%d%s%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%d%s%a%a%a%a%a%a%a%a%a%s%d%d%d%d$") then
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
elseif dato:match("^%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%d%s%d%d%d%d$") then
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
elseif dato:match("^%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%d%a%a%p%s%d%d%d%d$") then
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
elseif dato:match("^%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%d%a%a%s%d%d%d%d$") then
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
elseif dato:match("^%d%s%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%a%a%a%s%d%d%d%d$") or dato:match("^%d%s%a%a%a%a%a%a%a%a%a%s%d%d%d%d$") then
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
elseif dato:match("^%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%s%d%d%d%d$") then
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
elseif dato:match("^%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%a%a%p%s%d%d%d%d$") then
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
elseif dato:match("^%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") or dato:match("^%a%a%a%a%a%a%a%a%a%s%d%a%a%s%d%d%d%d$") then
result = dato .. "<sup><small>'''Feil datoformat'''</small></sup>[[Kategori:Sider som inneholder feil datoformat]]"
else
result = dato
end
return result
end
return p