Modul:gammalstavning
Dokumentation för denna modul finns på /dok (redigera), /test
Syfte
redigeraImplementerar {{gammalstavning}}
.
Parametrar
redigera- (obligatorisk) språkkod (se Wiktionary:Alla språk och koder med antal huvuduppslag och Modul:lang/data)
- (obligatorisk) kod för reformen (gemener, se
{{gammalstavning}}
för listan, eller-
för ospecificerad) - (obligatorisk) ny (aktuell eller näst nyare) stavning (utan hakparenteser
[[
...]]
) - (optionell) ejtagg=1 utelämna texten
(ålderdomligt)
(vid kedjelagd användning) - caller=true, pagenameoverridetestonly=, nocat=true, nocat=false
Exempel och självtest
redigera{sv|hv|vilken}
- sida "hvilken", svenska
(ålderdomligt) genom stavningsreformen 1906 ersatt av vilken
{da|aa|forstå}
- sida "forstaa", danska
(ålderdomligt) genom rättskrivningsreformen 1948 ersatt av forstå
{sv|-|glass}
- sida "glass", ospecificerad reform
(ålderdomligt) ersatt av glass
{da|aa|forstå|junk=uppskattas-ej}
- FEL, sida "forstaa", ogiltig parameter
Ogiltiga parametrar -- "Mall:gammalstavning" använder inte parameter "junk=".
{Sv|hv|vilken}
- FEL, sida "hvilken", uppenbarligen ogiltig språkkod
Uppenbarligen ogiltig språkkod -- Kod "Sv" skickades in i "Mall:gammalstavning".
{sv|av|vilken}
- FEL, sida "hvilken", svenska, okänd reform
Mallsyntax -- Okänd förkortning för reform "av" för språkkod "sv" skickad in i "Mall:gammalstavning".
Felhantering
redigera6 olika fel detekteras. Spårningskategori Kategori:Mallsyntax och andra. Tydliga röda varningar visas vid förhandsgranskning men inte i sparade versioner.
Behövda submoduler
redigeraAutomatiserade test
redigeraAll tests passed. (refresh)
Text | Expected | Actual | |
---|---|---|---|
{{gammalstavning|sv|hv|vilken|pagenameoverridetestonly=hvilken|nocat=false}} | <i>(ålderdomligt) genom [[w:stavningsreformen 1906|stavningsreformen 1906]] ersatt av</i> [[vilken]][[Kategori:Svenska/Ålderdomligt|hvilken]] | <i>(ålderdomligt) genom [[w:stavningsreformen 1906|stavningsreformen 1906]] ersatt av</i> [[vilken]][[Kategori:Svenska/Ålderdomligt|hvilken]] | |
{{gammalstavning|sv|wv|öfvergifva|pagenameoverridetestonly=öfwergifwa|nocat=false}} | <i>(ålderdomligt) genom övergången från fraktur till antikva ersatt av</i> [[öfvergifva]][[Kategori:Svenska/Ålderdomligt|z°fwergifwa]] | <i>(ålderdomligt) genom övergången från fraktur till antikva ersatt av</i> [[öfvergifva]][[Kategori:Svenska/Ålderdomligt|z°fwergifwa]] | |
{{gammalstavning|sv|-|dom|pagenameoverridetestonly=dem|nocat=false}} | <i>(ålderdomligt) ersatt av</i> [[dom]][[Kategori:Svenska/Ålderdomligt|dem]] | <i>(ålderdomligt) ersatt av</i> [[dom]][[Kategori:Svenska/Ålderdomligt|dem]] |
Text | Expected | Actual | |
---|---|---|---|
{{gammalstavning|da|aa|forstå|pagenameoverridetestonly=forstaa|nocat=false}} | <i>(ålderdomligt) genom [[:da:w:Retskrivningsreformen i 1948|rättskrivningsreformen 1948]] ersatt av</i> [[forstå]][[Kategori:Danska/Ålderdomligt|forstaa]] | <i>(ålderdomligt) genom [[:da:w:Retskrivningsreformen i 1948|rättskrivningsreformen 1948]] ersatt av</i> [[forstå]][[Kategori:Danska/Ålderdomligt|forstaa]] |
Text | Expected | Actual | |
---|---|---|---|
{{gammalstavning|da|aa|forstå|junk=uppskattas-ej|pagenameoverridetestonly=forstaa|nocat=false}} | <br><span class="error"><b>Ogiltiga parametrar -- "Mall:gammalstavning" använder inte parameter "junk=".</b></span></br>[[Kategori:Ogiltiga parametrar]][[Kategori:Ogiltiga parametrar (gammalstavning)]] | <br><span class="error"><b>Ogiltiga parametrar -- "Mall:gammalstavning" använder inte parameter "junk=".</b></span></br>[[Kategori:Ogiltiga parametrar]][[Kategori:Ogiltiga parametrar (gammalstavning)]] | |
{{gammalstavning| |aa|lyn|pagenameoverridetestonly=lin|nocat=false}} | <br><span class="error"><b>Mallsyntax -- Obligatorisk parameter saknas i "Mall:gammalstavning".</b></span></br>Språkkod, förkortning för reform och ny stavning krävs alltid.[[Kategori:Mallsyntax]][[Kategori:Mallsyntax (gammalstavning)]] | <br><span class="error"><b>Mallsyntax -- Obligatorisk parameter saknas i "Mall:gammalstavning".</b></span></br>Språkkod, förkortning för reform och ny stavning krävs alltid.[[Kategori:Mallsyntax]][[Kategori:Mallsyntax (gammalstavning)]] | |
{{gammalstavning|Da|aa|forstå|pagenameoverridetestonly=forstaa|nocat=false}} | <br><span class="error"><b>Uppenbarligen ogiltig språkkod -- Kod "Da" skickades in i "Mall:gammalstavning".</b></span></br>[[Kategori:Uppenbarligen ogiltig språkkod]][[Kategori:Uppenbarligen ogiltig språkkod (gammalstavning)]] | <br><span class="error"><b>Uppenbarligen ogiltig språkkod -- Kod "Da" skickades in i "Mall:gammalstavning".</b></span></br>[[Kategori:Uppenbarligen ogiltig språkkod]][[Kategori:Uppenbarligen ogiltig språkkod (gammalstavning)]] | |
{{gammalstavning|aad|aa|forstå|pagenameoverridetestonly=forstaa|nocat=false}} | <br><span class="error"><b>Okänd språkkod -- Kod "aad" skickades in i "Mall:gammalstavning".</b></span></br>[[Kategori:Okänd språkkod]][[Kategori:Okänd språkkod (gammalstavning)]] | <br><span class="error"><b>Okänd språkkod -- Kod "aad" skickades in i "Mall:gammalstavning".</b></span></br>[[Kategori:Okänd språkkod]][[Kategori:Okänd språkkod (gammalstavning)]] | |
{{gammalstavning|id|fv|provinsi|pagenameoverridetestonly=profinsi|nocat=false}} | <br><span class="error"><b>Mallsyntax -- Okänd förkortning för reform "fv" för språkkod "id" skickad in i "Mall:gammalstavning".</b></span></br>[[Kategori:Mallsyntax]][[Kategori:Mallsyntax (gammalstavning)]] | <br><span class="error"><b>Mallsyntax -- Okänd förkortning för reform "fv" för språkkod "id" skickad in i "Mall:gammalstavning".</b></span></br>[[Kategori:Mallsyntax]][[Kategori:Mallsyntax (gammalstavning)]] | |
{{gammalstavning|sv|fv|[[övergiva]]|pagenameoverridetestonly=öfvergifva|nocat=false}} | <br><span class="error"><b>Mallsyntax -- Ny stavning ska anges utan hakparenteser för "Mall:gammalstavning".</b></span></br>[[Kategori:Mallsyntax]][[Kategori:Mallsyntax (gammalstavning)]] | <br><span class="error"><b>Mallsyntax -- Ny stavning ska anges utan hakparenteser för "Mall:gammalstavning".</b></span></br>[[Kategori:Mallsyntax]][[Kategori:Mallsyntax (gammalstavning)]] |
-- (obligatory) language code
-- (obligatory) code for reform (lowercase, see list, or "-" for unspecified)
-- (obligatory) new (current or next newer) spelling (raw word without brackets "[["..."]]")
-- (optional) "ejtagg=1" (suppress text "(ålderdomligt) " for chained use)
local exporttbl = {}
local import_lang = require ("Modul:lang")
local import_param = require ("Modul:param")
local import_sort = require ("Modul:sort")
local name_short = "gammalstavning"
local name_long = '"Mall:' .. name_short .. '"'
local reformer = {}
reformer["sv|wv"] = "övergången från fraktur till antikva"
reformer["sv|th"] = "förenklingen under 1800-talet"
reformer["sv|eä"] = "sjätte upplagan av [[w:SAOL|SAOL]] (1889)"
reformer["sv|qv"] = reformer["sv|eä"] -- 1889
reformer["sv|gk"] = "sjunde upplagan av [[w:SAOL|SAOL]] (1900)"
reformer["sv|hv"] = "[[w:stavningsreformen 1906|stavningsreformen 1906]]"
reformer["sv|dt"] = reformer["sv|hv"] -- 1906
reformer["sv|f"] = reformer["sv|hv"] -- 1906
reformer["sv|fv"] = reformer["sv|hv"] -- 1906
reformer["da|aa"] = "[[:da:w:Retskrivningsreformen i 1948|rättskrivningsreformen 1948]]"
reformer["da|dl"] = reformer["da|aa"]
reformer["da|ld"] = reformer["da|aa"]
reformer["de|ss"] = "[[:en:w:German orthography reform of 1996|rättskrivningsreformen 1996]]"
reformer["de|auh"] = reformer["de|ss"]
reformer["de|ff"] = reformer["de|ss"]
reformer["de|sär"] = reformer["de|ss"]
reformer["de|eä"] = reformer["de|ss"]
reformer["is|zs"] = "stavningsreformen 1973"
reformer["nn|gk"] = "[[:en:Wiktionary:Norwegian_Nynorsk_spelling_reforms#1917|reformen år 1917]]"
local function expandTwo (control_string, insert_m_string, insert_v_string)
local temp_string = ''
local expanded_string = ''
local x_length = 0
local x_index = 0
local chark = 0
local charl = 0
x_length = string.len (control_string)
while true do
if (x_index==x_length) then
break
end--if
chark = string.byte (control_string,(x_index+1),(x_index+1))
x_index = x_index + 1
charl = 0
if (x_index<x_length) then
charl = string.byte (control_string,(x_index+1),(x_index+1))
end--if
if ((chark==64) and (charl==77)) then -- @M cannot be empty
temp_string = insert_m_string
x_index = x_index + 1
else
if ((chark==64) and (charl==86)) then -- @V can be empty
temp_string = insert_v_string
x_index = x_index + 1
else
temp_string = string.char (chark)
end--if
end--if
expanded_string = expanded_string .. temp_string
end--while
return expanded_string
end--function expandTwo
function exporttbl.go (arxframent)
local arxsomons = 0
local legal_params = {}
local many_complaints = {}
local list_bad_params = ''
local violating_string = ''
local problem_1_main = ''
local problem_2_desc = ''
local problem_3_hint = ''
local p_2_desc_expanded = ''
local pagename = '' -- only for sorting hint/key
local reform_desc = ''
local error_visible = ''
local error_cat = ''
local good_visible = ''
local good_cat = ''
local final_result = ''
local error_code = 0
local boo_bad_brackets = false
local boo_reform_type_specified = false
local boo_ej_tagg = false
local boo_no_cat_true = false
local boo_no_cat_false = false
arxsomons = arxframent.args -- "args" from our own "frame"
if (arxsomons['caller']=="true") then
arxsomons = arxframent:getParent().args -- "args" from caller's "frame"
end--if
legal_params = {[0]=3,"ejtagg","nocat","pagenameoverridetestonly"}
list_bad_params = import_param.go (arxsomons,legal_params)
pagename = arxsomons["pagenameoverridetestonly"] or mw.title.getCurrentTitle().text
local lang_code = mw.text.trim (arxsomons[1] or "")
local reform_code = mw.text.trim (arxsomons[2] or "")
local new_spelling = mw.text.trim (arxsomons[3] or "")
boo_ej_tagg = (arxsomons["ejtagg"]=="1")
boo_no_cat_true = (arxsomons["nocat"]=="true")
boo_no_cat_false = (arxsomons["nocat"]=="false")
many_complaints[1] = {'Ogiltiga parametrar','@M använder inte @V'}
many_complaints[2] = {'Mallsyntax','Obligatorisk parameter saknas i @M','Språkkod, förkortning för reform och ny stavning krävs alltid.'}
many_complaints[3] = {'Uppenbarligen ogiltig språkkod','Kod @V skickades in i @M'}
many_complaints[4] = {'Okänd språkkod','Kod @V skickades in i @M'}
many_complaints[5] = {'Mallsyntax','Okänd @V skickad in i @M'} -- "@V" contains both ref code and lang code
many_complaints[6] = {'Mallsyntax','Ny stavning ska anges utan hakparenteser för @M'}
boo_reform_type_specified = (reform_code~="-") -- can still be unknown
if boo_reform_type_specified then
reform_desc = reformer[lang_code .. '|' .. reform_code] or "" -- circumvent risk of type "nil"
end--if
boo_bad_brackets = (string.find(new_spelling,'[',1,true)~=nil) or (string.find(new_spelling,']',1,true)~=nil)
while true do
if list_bad_params ~= '' then
error_code = 1
violating_string = list_bad_params
break
end--if
if ((lang_code=="") or (reform_code=="") or (new_spelling=="")) then
error_code = 2 -- no string here
break
end--if
if import_lang.isObviouslyInvalid(lang_code) then
error_code = 3
violating_string = '"' .. lang_code .. '"'
break
end--if
if not import_lang.hasLanguage(lang_code) then
error_code = 4
violating_string = '"' .. lang_code .. '"'
break
end--if
if (boo_reform_type_specified and (reform_desc=="")) then
error_code = 5
violating_string = 'förkortning för reform "' .. reform_code .. '" för språkkod "' .. lang_code .. '"'
break
end--if
if boo_bad_brackets then
error_code = 6 -- no string here
end--if
break
end--while
if (error_code~=0) then
problem_1_main = many_complaints[error_code][1]
problem_2_desc = many_complaints[error_code][2] -- @M cannot be empty, @V can be empty
problem_3_hint = many_complaints[error_code][3] or '' -- optional, can be empty
p_2_desc_expanded = expandTwo (problem_2_desc, name_long, violating_string)
error_cat = '[[Kategori:' .. problem_1_main .. ']][[Kategori:' .. problem_1_main .. ' (' .. name_short .. ')]]'
error_visible = '<br><span class="error"><b>' .. problem_1_main .. ' -- ' .. p_2_desc_expanded .. '.</b></span></br>'
if (problem_3_hint~='') then
error_visible = error_visible .. problem_3_hint
end--if
end--if
if (error_code==0) then
local language_ucf = import_lang.getLanguageUCFirst(lang_code) -- use "isObviouslyInvalid" and "hasLanguage" for validation
local sort_key = import_sort.getSortKey(lang_code, pagename)
good_visible = "<i>"
if (not boo_ej_tagg) then
good_visible = good_visible .. "(ålderdomligt) "
end--if
if (boo_reform_type_specified) then
good_visible = good_visible .. "genom " .. reform_desc .. " "
end--if
good_visible = good_visible .. "ersatt av</i> [[" .. new_spelling .. "]]"
good_cat = "[[Kategori:" .. language_ucf .. "/Ålderdomligt|" .. sort_key .. "]]"
end--if (error_code==0) then
if (error_code==0) then
final_result = good_visible
else
if ((arxframent:preprocess ("{{REVISIONID}}") == '') or boo_no_cat_true or boo_no_cat_false) then
mw.addWarning (error_visible)
final_result = error_visible
else
final_result = "<i>" .. name_short .. "</i>"
end--if
end--if
if (not boo_no_cat_true) then
if (error_code==0) then
final_result = final_result .. good_cat
else
final_result = final_result .. error_cat
end--if
end--if
return final_result
end--function
return exporttbl