Module:kilta-headword: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 20: | Line 20: | ||
if word:match("[kh]wa$") or word:match("a$") then | if word:match("[kh]wa$") or word:match("a$") then | ||
pl = {sub(word, 1, -1) .. "úr"} | pl = {term = sub(word, 1, -1) .. "úr"} | ||
elseif word:match("ës$") or word:match("uin$") or word:match("[str]$") then | elseif word:match("ës$") or word:match("uin$") or word:match("[str]$") then | ||
pl = {word .. "á"} | pl = {term = word .. "á"} | ||
elseif word:match("[nml]$") then | elseif word:match("[nml]$") then | ||
pl = {word .. "ur"} | pl = {term = word .. "ur"} | ||
end | end | ||
Line 35: | Line 35: | ||
local params = { | local params = { | ||
[1] = {}, | [1] = {}, | ||
[ | ["pl"] = {list = true}, | ||
["w"] = {default = PAGENAME}, | ["w"] = {default = PAGENAME}, | ||
} | } | ||
Line 41: | Line 41: | ||
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[ | 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 = {},} | ||
Line 54: | Line 54: | ||
else | else | ||
pl.label = "plural" | pl.label = "plural" | ||
table.insert(data.inflections, | if pl then | ||
for _, form in ipairs(pl) do | |||
table.insert(data.inflections, {term = form}) | |||
end | |||
else | |||
table.insert(data.inflections, plural(word)) | |||
end | |||
end | end | ||
Revision as of 14:24, 22 April 2024
Documentation for this module may be created at Module:kilta-headword/doc
local match = mw.ustring.match
local u = mw.ustring.char
local gsub = mw.ustring.gsub
local sub = mw.ustring.sub
local TILDEB = u(0x0330) -- COMBINING TILDE BELOW ̰◌
local export = {}
local lang = require("Module:languages").getByCode("kilta")
local deabb = {["adj"] = "adjectives", ["v"] = "verbs", ["adv"] = "adverbs", ["n"] = "nouns"}
local function glossary_link(entry, text)
text = text or entry
return "[[wikt:Appendix:Glossary#" .. entry .. "|" .. text .. "]]"
end
local function plural(word)
local pl = {}
if word:match("[kh]wa$") or word:match("a$") then
pl = {term = sub(word, 1, -1) .. "úr"}
elseif word:match("ës$") or word:match("uin$") or word:match("[str]$") then
pl = {term = word .. "á"}
elseif word:match("[nml]$") then
pl = {term = word .. "ur"}
end
pl.label = "plural"
return pl
end
function export.show(frame)
local params = {
[1] = {},
["pl"] = {list = true},
["w"] = {default = PAGENAME},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local word = args["w"]
local pos = args[1]; local pl = args["pl"]
local data = {lang = lang, pos_category = deabb[pos], heads = {word}, categories = {}, inflections = {},}
if pl[1] == '-' then
if pos == "n" then
table.insert(data.inflections, {label = glossary_link("uncountable")})
table.insert(data.categories, lang:getCanonicalName() .. " uncountable " .. deabb[pos])
end
--[=[ elseif pos ~= "v" then
table.insert(data.inflections, {label = glossary_link("comparative"), redup(word)})
if pos == "adv" then table.insert(data.categories, lang:getCanonicalName() .. " comparative " .. deabb[pos]) end ]=]
else
pl.label = "plural"
if pl then
for _, form in ipairs(pl) do
table.insert(data.inflections, {term = form})
end
else
table.insert(data.inflections, plural(word))
end
end
return require('Module:headword').full_headword(data)
end
return export