Module:kilta-headword: Difference between revisions

no edit summary
No edit summary
No edit summary
(44 intermediate revisions by the same user not shown)
Line 3: Line 3:
local gsub = mw.ustring.gsub
local gsub = mw.ustring.gsub
local sub = mw.ustring.sub
local sub = mw.ustring.sub
local split = mw.text.split


local TILDEB = u(0x0330) -- COMBINING TILDE BELOW ̰◌
local TILDEB = u(0x0330) -- COMBINING TILDE BELOW ̰◌
Line 16: Line 17:
end
end


local function plural(word)
local function plural(word, n, pos)
local pl = {}
local w = split(word, " ")
n = tonumber(n)
if n > #w then error("Word index outside bounds.") end
if word:match("[kh]wa$") or word:match("a$") then
if pos == "n" then
pl = {term = sub(word, 1, -1) .. "úr"}
if w[n]:match("[kh]wa$") or w[n]:match("a$") then
elseif word:match("ës$") or word:match("uin$") or word:match("[str]$") then
w[n] = sub(w[n], 1, -1) .. "úr"
pl = {term = word .. "á"}
elseif w[n]:match("ës$") or w[n]:match("uin$") or w[n]:match("[str]$") then
elseif word:match("[nml]$") then
w[n] = w[n] .. "á"
pl = {term = word .. "ur"}
elseif w[n]:match("[nml]$") then
w[n] = w[n] .. "ur"
end
elseif pos == "adj" then
if w[n]:match("[kh]win$") then
w[n] = sub(w[n], 1, -4) .. "ú"
elseif w[n]:match("in$") then
w[n] = sub(w[n], 1, -3) .. "u"
end
end
end
pl.label = "plural"
return {label = "plural", table.concat(w, " ")}
return pl
end
end


Line 36: Line 46:
[1] = {},
[1] = {},
["pl"] = {list = true},
["pl"] = {list = true},
["w"] = {default = PAGENAME},
["w"] = {default = mw.title.getCurrentTitle().text},
["n"] = {type = number, default = 1}
}
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local args = require("Module:parameters").process(frame:getParent().args, params)
local word = args["w"]
local word = args.w
local pos = args[1]; local pl = args["pl"]
local pos = args[1]; local pl = args.pl
local data = {lang = lang, pos_category = deabb[pos], heads = {word}, categories = {}, inflections = {},}
local data = {lang = lang, pos_category = deabb[pos], heads = {word}, categories = {}, inflections = {},}
if pl[1] == '-' then
if pl[1] == '-' then
Line 53: Line 65:
if pos == "adv" then table.insert(data.categories, lang:getCanonicalName() .. " comparative " .. deabb[pos]) end ]=]
if pos == "adv" then table.insert(data.categories, lang:getCanonicalName() .. " comparative " .. deabb[pos]) end ]=]
else
else
if pl then
if pl[1] then
pl.label = "plural"
pl.label = "plural"
data.inflections = pl
table.insert(data.inflections, pl)
else
else
table.insert(data.inflections, plural(word))
table.insert(data.inflections, plural(word, args.n, pos))
end
end
end
end