|
|
| Linje 1: |
Linje 1: |
| local p = {}
| |
|
| |
|
| function p.genitiv(frame)
| |
| -- get the argument
| |
| local ord = frame.args[1]
| |
| if ord == nil then
| |
| ord = frame:getParent().args[1]
| |
| end
| |
| -- check if an argument is found
| |
| if ord == nil then
| |
| return "<strong class='error'>Malen «genitiv» må ha ett argument</strong>"
| |
| end
| |
| -- get the determiner
| |
| local det = frame.args['det']
| |
| if det == nil then
| |
| det = frame:getParent().args['det']
| |
| end
| |
| -- try to rewrite, but note that this could fail
| |
| local status, str = pcall(function() return p._genitiv(ord, det) end)
| |
| -- rewrite is done, should happen in most cases
| |
| if status == true then
| |
| return str
| |
| end
| |
| -- rewrite is not done, this is a fallback but is probably an error
| |
| return ord
| |
| end
| |
|
| |
| function p._genitiv(ord, det)
| |
| -- fallback for domain, use determinative for genitive
| |
| if mw.ustring.find(ord, '^%S%s%S$ ') -- any space
| |
| or (det and mw.ustring.find(ord, '%s%l+$') )-- can be a full name
| |
| then
| |
| return ord .. " " .. (det or "sin")
| |
| end
| |
| -- various overrides where a determinative should be used for genitive
| |
| if mw.ustring.find(ord, '%A$') -- trailing non-letter
| |
| or (det and mw.ustring.find(ord, '%s%l+$') ) -- full name
| |
| or (not mw.ustring.find(ord, '%s') and mw.ustring.find(ord, '^%w+%.%a+$') ) -- url
| |
| then
| |
| return ord .. " " .. (det or "sin")
| |
| end
| |
| -- single word, prepare to rewrite special cases
| |
| local sv = "sxzşŝșšśßžżź" -- a few letters that needs special treatment
| |
| local sb = mw.ustring.toNFC(mw.ustring.lower(mw.ustring.sub(ord, -1)))
| |
| if mw.ustring.find(sv, sb, nil, true) then
| |
| -- use modifier letter apostrophe as genitive marker
| |
| return ord .. "ʼ"
| |
| else
| |
| -- just add the 's' genitive marker
| |
| return ord .. "s"
| |
| end
| |
| end
| |
|
| |
| return p
| |
Denne modulen returnerer et ord i riktig genitivsform, avhengig av hvilken bokstav ordet slutter på. Se Mal:Genitiv for nærmere dokumentasjon.
Funksjoner
genitiv : Brukes i {{genitiv}}
_genitiv : For bruk i andre moduler.
Brukes av