|
|
| Line 1: |
Line 1: |
| local export = {}
| |
|
| |
|
| local function detect_gender(word)
| |
| return {"lun"}
| |
| end
| |
|
| |
| local function link(term)
| |
| return "[[Contionary:" .. term .. "|" .. term .. "]]"
| |
| end
| |
|
| |
| local function ncategories(categories)
| |
| local out_categories = {}
| |
| for key, cat in ipairs(categories) do
| |
| out_categories[key] = "[[Category:" .. cat .. "]]"
| |
| end
| |
|
| |
| return table.concat(out_categories, "")
| |
| end
| |
|
| |
| local function head_format(POS, word, gender)
| |
| if POS == "noun" then
| |
| gender = require("Module:getn").format_list(gender)
| |
| local genitive = "aaaaa"
| |
|
| |
| return "'''" .. word .. "''' ''" .. gender .. "'' (''genitive'' '''" .. link(genitive) .. "''')"
| |
| end
| |
| end
| |
|
| |
| -- The main entry point.
| |
| -- This is the only function that can be invoked from a template.
| |
| function export.show(frame)
| |
| local args = frame:getParent().args
| |
| PAGENAME = mw.title.getCurrentTitle().text
| |
| if mw.title.getCurrentTitle().nsText == "Template" then return end
| |
|
| |
| local head = args["head"]; if head == "" then head = nil end
| |
| local categories = {}
| |
|
| |
| -- The part of speech. This is also the name of the category that
| |
| -- entries go in. However, the two are separate (the "cat" parameter)
| |
| -- because you sometimes want something to behave as an adjective without
| |
| -- putting it in the adjectives category.
| |
| local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
| |
| local postype = args["type"]; if postype == "" then postype = nil end
| |
| local word = args[2] or PAGENAME
| |
| local gender = args[3] or detect_gender(word)
| |
|
| |
|
| |
|
| |
| return head_format(poscat, word) .. ncategories(categories)
| |
| end
| |
|
| |
|
| |
|
| |
| -- Display information for a noun's gender
| |
| -- This is separate so that it can also be used for proper nouns
| |
| function noun_gender(args, data)
| |
| local valid_genders = {
| |
| ["m"] = true,
| |
| ["f"] = true,
| |
| ["n"] = true,
| |
| ["m-p"] = true,
| |
| ["f-p"] = true,
| |
| ["n-p"] = true}
| |
|
| |
| -- Iterate over all gn parameters (g2, g3 and so on) until one is empty
| |
| local g = args[1] or ""; if g == "" then g = "?" end
| |
| local i = 2
| |
|
| |
| while g ~= "" do
| |
| if not valid_genders[g] then
| |
| g = "?"
| |
| end
| |
|
| |
| -- If any of the specifications is a "?", add the entry
| |
| -- to a cleanup category.
| |
| if g == "?" then
| |
| table.insert(data.categories, "Requests for gender in Proto-Germanic entries")
| |
| elseif g == "m-p" or g == "f-p" or g == "n-p" then
| |
| table.insert(data.categories, "Proto-Germanic pluralia tantum")
| |
| end
| |
|
| |
| table.insert(data.genders, g)
| |
| g = args["g" .. i] or ""
| |
| i = i + 1
| |
| end
| |
| end
| |
|
| |
| function adjective(args, data)
| |
| local adverb = args["adv"]; if adverb == "" then adverb = nil end
| |
| local comparative = args[1]; if comparative == "" then comparative = nil end
| |
| local superlative = args[2]; if superlative == "" then superlative = nil end
| |
|
| |
| if adverb then
| |
| table.insert(data.inflections, {label = "adverb", adverb})
| |
| end
| |
|
| |
| if comparative then
| |
| table.insert(data.inflections, {label = "comparative", comparative})
| |
| end
| |
|
| |
| if superlative then
| |
| table.insert(data.inflections, {label = "superlative", superlative})
| |
| end
| |
| end
| |
|
| |
| function adverb(args, data)
| |
| local adjective = args["adj"]; if adjective == "" then adjective = nil end
| |
| local comparative = args[1]; if comparative == "" then comparative = nil end
| |
| local superlative = args[2]; if superlative == "" then superlative = nil end
| |
|
| |
| if adjective then
| |
| table.insert(data.inflections, {label = "adjective", adjective})
| |
| end
| |
|
| |
| if comparative then
| |
| table.insert(data.inflections, {label = "comparative", comparative})
| |
| end
| |
|
| |
| if superlative then
| |
| table.insert(data.inflections, {label = "superlative", superlative})
| |
| end
| |
| end
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| return export
| |