Modul:Genitiv: Forskjell mellom sideversjoner
Hopp til navigering
Hopp til søk
m (Tilbakestilte endring av Russisk ubåtkaptein (bidrag) til siste versjon av Jeblad) |
(Tømmer siden) |
||
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 |
Sideversjonen fra 17. apr. 2019 kl. 13:41
Formål
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.