Modul:avledning
Dokumentation för denna modul finns på /dok (redigera), /test
Syfte
Denna modul används endast av mallen {{avledning}}
. Modulen producerar wikitext för definitionsraden i enlighet med {{avledning}}
:s dokumentation. Texten börjar med ett blanksteg.
Användning
{{#invoke:avledning|getWikitext}}
Modulen läser av argumenten direkt från {{avledning}}
-anropet på sidan med uppslaget.
Specifikation
- Grundläggande wikitext som returneras:
''avledning till [[ord#Språk|ord]]''
- 1= språkkod (obligatorisk)
- Språkkoden används för att:
- lägga till en ankare i länken, t.ex.
[[ursprungsordet#Svenska|ursprungsordet]]
- ge extra funktionalitet för svenska partikelverb genom parametern partikel=
- avlägsna dekorationer ovanför bokstäver för länken men inte i visad form för vissa språk (latin, ryska, men ej svenska)
- lägga till en ankare i länken, t.ex.
- Språkkoden används för att:
- 2= ursprungsordet (obligatorisk, får innehålla dekorationer ovanför bokstäver)
- 3= kortformen av ursprungsordets ordklass (frivillig, ej tillsammans med "ordform=")
- Ordklassen används i huvudsak för förtydligande, t.ex. om ursprungsordet delar stavning med det aktuella ordet, t.ex. substantivet resande som är en avledning till adjektivet resande. Enbart tre stycken är tillåtna: "adj", "verb", "subst"
- ordform= det aktuella ordets form dvs relation till grundformen (frivillig, ej tillsammans med "3=")
- Ändrar formuleringen: från "avledning till" till en mer specifik beskrivning. Giltiga värden:
- prespart -> "presensparticip av" (också för "gerund" AKA "present participle" i engelskan)
- perfpart -> "perfektparticip av"
- Former som används i esperanto och ido:
- aktpart (kreinta, kreanta, kreonta, kreinto, kreanto, kreonto)
- passpart (kreita, kreata, kreota, kreito, kreato, kreoto)
- Former som används i slaviska språk:
- prespartakt -> "presensparticip aktiv av" (också finska)
- prespartpass -> "presensparticip passiv av" (också finska)
- pretpartakt -> "preteritumparticip aktiv av"
- pretpartpass -> "preteritumparticip passiv av"
- presger -> "presensgerundium"
- pretger -> "preteritumgerundium"
- Former som används i finska:
- prespartakt -> presensparticip aktiv av (också slaviska)
- prespartpass -> presensparticip passiv av (också slaviska)
- perfpartakt -> perfektparticip aktiv av
- perfpartpass -> perfektparticip passiv av
- agentpart -> agentparticip av
- agentpart1ps -> agentparticip (1:a person singular) av
- agentpart2ps -> agentparticip (2:a person singular) av
- agentpart1pp -> agentparticip (1:a person plural) av
- agentpart2pp -> agentparticip (2:a person plural) av
- agentpart3p -> agentparticip (3:je person) av
- nekpart -> nekande particip av
- partikel= partikel (endast svenska, endast partikelverb)
- För partikelverb, t.ex. "slå upp" ska endast verbdelen anges på 2, dvs. 2=slå, och partikeln ska anges för partikel, dvs. partikel=upp. Detta ändrar i detta exempel formuleringen: från "perfektparticip/presensparticip av slå upp" till "perfektparticip/presensparticip av slå upp och uppslå".
- När verbet i ett partikelverb (t.ex laga i laga till) börjar på samma bokstav som partikeln (till) slutar på (med dubbelkonsonant), så bildas när de byter plats och slås ihop en trippelkonsonant: laga + till > till + laga > tilllaga. I detta fall kompenseras detta och den överflödiga konsonanten plockas bort > tillaga.
Syntaxfel
ogiltiga parametraruppenbarligen ogiltig språkkod- okänd språkkod
- 2= (grundform) saknas
- okänt värde i 3= eller ordform=
- både ordform= och 3= används
- Kategori:Wiktionary:Syntaxfel/avledning (0)
Tester
All tests passed. (refresh)
Text | Expected | Actual | |
---|---|---|---|
{{avledning|sv|snabb}} | ''avledning till'' [[snabb#Svenska|snabb]] | ''avledning till'' [[snabb#Svenska|snabb]] | |
{{avledning|sv|snabb|adj}} | ''avledning till adjektivet'' [[snabb#Svenska|snabb]] | ''avledning till adjektivet'' [[snabb#Svenska|snabb]] | |
{{avledning|en|glad}} | ''avledning till'' [[glad#Engelska|glad]] | ''avledning till'' [[glad#Engelska|glad]] | |
{{avledning|--|glad}} | ''avledning till'' [[glad#Tvärspråkligt|glad]] | ''avledning till'' [[glad#Tvärspråkligt|glad]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|sv|gå|ordform=prespart}} | ''presensparticip av'' [[gå#Svenska|gå]] | ''presensparticip av'' [[gå#Svenska|gå]] | |
{{avledning|sv|gå|prespart}} | ''presensparticip av'' [[gå#Svenska|gå]] | ''presensparticip av'' [[gå#Svenska|gå]] | |
{{avledning|en|walk|ordform=prespart}} | ''presensparticip av'' [[walk#Engelska|walk]] | ''presensparticip av'' [[walk#Engelska|walk]] | |
{{avledning|en|walk|prespart}} | ''presensparticip av'' [[walk#Engelska|walk]] | ''presensparticip av'' [[walk#Engelska|walk]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|sv|gå|ordform=perfpart}} | ''perfektparticip av'' [[gå#Svenska|gå]] | ''perfektparticip av'' [[gå#Svenska|gå]] | |
{{avledning|en|do|ordform=perfpart}} | ''perfektparticip av'' [[do#Engelska|do]] | ''perfektparticip av'' [[do#Engelska|do]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|io|dansar|ordform=aktpart}} | ''aktivparticip av'' [[dansar#Ido|dansar]] | ''aktivparticip av'' [[dansar#Ido|dansar]] | |
{{avledning|eo|fari|ordform=aktpart}} | ''aktivparticip av'' [[fari#Esperanto|fari]] | ''aktivparticip av'' [[fari#Esperanto|fari]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|io|dansar|ordform=passpart}} | ''passivparticip av'' [[dansar#Ido|dansar]] | ''passivparticip av'' [[dansar#Ido|dansar]] | |
{{avledning|eo|fari|ordform=passpart}} | ''passivparticip av'' [[fari#Esperanto|fari]] | ''passivparticip av'' [[fari#Esperanto|fari]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|sv|gå|ordform=prespart|partikel=upp}} | ''presensparticip av'' [[gå upp#Svenska|gå upp]] ''och'' [[uppgå#Svenska|uppgå]] | ''presensparticip av'' [[gå upp#Svenska|gå upp]] ''och'' [[uppgå#Svenska|uppgå]] | |
{{avledning|sv|laga|ordform=perfpart|partikel=till}} | ''perfektparticip av'' [[laga till#Svenska|laga till]] ''och'' [[tillaga#Svenska|tillaga]] | ''perfektparticip av'' [[laga till#Svenska|laga till]] ''och'' [[tillaga#Svenska|tillaga]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|ru|читать|ordform=prespartakt}} | ''presensparticip aktiv av'' [[читать#Ryska|читать]] | ''presensparticip aktiv av'' [[читать#Ryska|читать]] | |
{{avledning|ru|читать|ordform=prespartpass}} | ''presensparticip passiv av'' [[читать#Ryska|читать]] | ''presensparticip passiv av'' [[читать#Ryska|читать]] | |
{{avledning|ru|читать|ordform=pretpartakt}} | ''preteritumparticip aktiv av'' [[читать#Ryska|читать]] | ''preteritumparticip aktiv av'' [[читать#Ryska|читать]] | |
{{avledning|ru|читать|ordform=pretpartpass}} | ''preteritumparticip passiv av'' [[читать#Ryska|читать]] | ''preteritumparticip passiv av'' [[читать#Ryska|читать]] | |
{{avledning|ru|читать|ordform=presger}} | ''presensgerundium av'' [[читать#Ryska|читать]] | ''presensgerundium av'' [[читать#Ryska|читать]] | |
{{avledning|ru|читать|ordform=pretger}} | ''preteritumgerundium av'' [[читать#Ryska|читать]] | ''preteritumgerundium av'' [[читать#Ryska|читать]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|fi|banaalistaa|ordform=nekpart}} | ''nekande particip av'' [[banaalistaa#Finska|banaalistaa]] | ''nekande particip av'' [[banaalistaa#Finska|banaalistaa]] | |
{{avledning|fi|banaalistaa|nekpart}} | ''nekande particip av'' [[banaalistaa#Finska|banaalistaa]] | ''nekande particip av'' [[banaalistaa#Finska|banaalistaa]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|xyz|snabb}} | ''avledning till'' [[snabb#Okänt språk|snabb]][[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (4)]] | ''avledning till'' [[snabb#Okänt språk|snabb]][[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (4)]] | |
{{avledning|xx|snabb}} | ''avledning till'' [[snabb#Okänt språk|snabb]][[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (4)]] | ''avledning till'' [[snabb#Okänt språk|snabb]][[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (4)]] | |
{{avledning|h-smi|snabb}} | ''avledning till'' [[snabb#Okänt språk|snabb]][[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (4)]] | ''avledning till'' [[snabb#Okänt språk|snabb]][[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (4)]] | |
{{avledning|Sv|snabb}} | ''avledning till'' [[snabb#Okänt språk|snabb]][[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (4)]] | ''avledning till'' [[snabb#Okänt språk|snabb]][[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (4)]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|sv|ordform=prespart}} | [[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (5)]] | [[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (5)]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|en|I|ordform=pronounenhancement}} | [[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (6)]] | [[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (6)]] | |
{{avledning|en|I|pron}} | [[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (6)]] | [[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (6)]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|en|I|pron|ordform=perfpart}} | [[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (8)]] | [[Kategori:Wiktionary:Syntaxfel/avledning]][[Kategori:Wiktionary:Syntaxfel/avledning (8)]] |
Text | Expected | Actual | |
---|---|---|---|
{{avledning|ru|избра́ть|ordform=pretpartpass}} | ''preteritumparticip passiv av'' [[избрать#Ryska|избра́ть]] | ''preteritumparticip passiv av'' [[избрать#Ryska|избра́ть]] |
-- Error codes:
-- 1 internal
-- 2 unknown params (NOT yet)
-- 3 invalid lk (NOT yet)
-- 4 unknown lk
-- 5 base form empty
-- 6 unknown word class or unknown type in "3="" or "ordform="
-- 7 form not allowed for given langunage (NOT yet)
-- 8 both"3=" and "ordform=" fed in
local lang = require("Modul:lang")
local h3 = require("Modul:h3")
local export = {}
local function joinAndRemoveTrippleConsonant(part_1, part_2)
local joined
if part_1:sub(-2) ~= part_2:sub(1,1):rep(2) then
joined = part_1 .. part_2
else
joined = part_1:sub(1,-2) .. part_2 -- i.e. till + laga = tillaga (not tilllaga)
end
return joined
end
function export.getWikitext(frame)
local error_code = 0
local parent = frame:getParent()
local title = mw.title.getCurrentTitle()
local is_test = title.rootText == "avledning" and title.nsText == "Modul"
local lang_code = parent.args[1] or ""
local original_word = parent.args[2] or ""
local class_or_form = parent.args[3] or parent.args["ordform"] or "" -- word class or word form
local particle = parent.args["partikel"] or ""
if (parent.args["ordform"] and parent.args[3]) then -- "ordform=" is deprecated
error_code = 8
end
local default_descri = "avledning till"
local word_classes = {["adj"]=true,["verb"]=true,["subst"]=true} -- "adj" much used, "verb" and "subst" very rarely
local first_parts = {
perfpart = {"perfektparticip av"},
prespart = {"presensparticip av"},
aktpart = {"aktivparticip av","P","eo","io"},
passpart = {"passivparticip av","P","eo","io"},
prespartakt = {"presensparticip aktiv av"}, -- slaviska + fi
prespartpass = {"presensparticip passiv av"}, -- slaviska + fi
pretpartakt = {"preteritumparticip aktiv av"}, -- slaviska
pretpartpass = {"preteritumparticip passiv av"}, -- slaviska
presger = {"presensgerundium av"}, -- slaviska
pretger = {"preteritumgerundium av"}, -- slaviska
perfpartakt = {"perfektparticip aktiv av","P","fi"},
perfpartpass = {"perfektparticip passiv av","P","fi"},
agentpart = {"agentparticip av","P","fi"},
agentpart1ps = {"agentparticip (1:a person singular) av","P","fi"},
agentpart2ps = {"agentparticip (2:a person singular) av","P","fi"},
agentpart1pp = {"agentparticip (1:a person plural) av","P","fi"},
agentpart2pp = {"agentparticip (2:a person plural) av","P","fi"},
agentpart3p = {"agentparticip (3:je person) av","P","fi"},
nekpart = {"nekande particip av","P","fi"}
}
local language = lang.getLanguageUCFirst(lang_code)
if (error_code==0) and (not lang.hasLanguage(lang_code)) then
error_code = 4
end
local first_part_tab = {}
local word_form = ''
local first_part = default_descri -- will get overidden if we get a word form
local second_part = ''
local third_part = ''
local p_or_n = ''
local got_word_class = false
local got_word_form = false
if (word_classes[class_or_form]) then -- got second part (first remains default)
got_word_class = true
second_part = h3.getLongDetSing(class_or_form) -- else keep it empty
end--if
first_part_tab = first_parts[class_or_form] -- change first part (later skip second part word class)
if type(first_part_tab)=='table' then
if type(first_part_tab[1])~='string' then
error_code = 1
else
got_word_form = true
first_part = first_part_tab[1]
p_or_n = first_part_tab[2]
end--if
end--if
if (error_code==0) and (class_or_form~='') and (not got_word_class) and (not got_word_form) then
error_code = 6 -- unknown word class or unknown type of form
end--if
if particle ~= "" and lang_code == "sv" then
local original_word_1 = mw.ustring.format("%s %s", original_word, particle)
local original_word_2 = joinAndRemoveTrippleConsonant(particle, original_word)
local entry_name_1 = original_word_1
local entry_name_2 = original_word_2
local third_part_1 = mw.ustring.format("[[%s#%s|%s]]", entry_name_1, language, original_word_1)
local third_part_2 = mw.ustring.format("[[%s#%s|%s]]", entry_name_2, language, original_word_2)
third_part = mw.ustring.format("%s ''och'' %s", third_part_1, third_part_2)
else
local entry_name = lang.getEntryName(lang_code, original_word)
third_part = mw.ustring.format("[[%s#%s|%s]]", entry_name, language, original_word)
end
local full_text
if got_word_class then
full_text = mw.ustring.format(" ''%s %s'' %s", first_part, second_part, third_part)
else
full_text = mw.ustring.format(" ''%s'' %s", first_part, third_part)
end
if (original_word=='') and (error_code==0) then
error_code = 5
end
if (error_code~=0) and (error_code~=4) then
full_text = ''
end--if
if title:inNamespace(0) or is_test then
if (error_code~=0) then
full_text = full_text .. "[[Kategori:Wiktionary:Syntaxfel/avledning]]" .. "[[Kategori:Wiktionary:Syntaxfel/avledning (" .. tostring(error_code) .. ")]]"
end
end
return full_text
end
return export