Modul:Genitiv
Hopp til navigering
Hopp til søk
Formål[rediger kilde]
Denne modulen returnerer et ord i riktig genitivsform, avhengig av hvilken bokstav ordet slutter på. Se Mal:Genitiv for nærmere dokumentasjon.
Funksjoner[rediger kilde]
genitiv
: Brukes i {{genitiv}}_genitiv
: For bruk i andre moduler.
Brukes av[rediger kilde]
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