Difference between revisions 22372 and 34839 on mkwiktionary-- Module:gender and number -- Imported from en.wiktionary -- 2016-06-22 -- V2 -- last modified by DenisWasRight -- Extended version for mk.wiktionary⏎ ⏎ --[=[ This module creates standardised displays for gender and number. It converts a gender specification into Wiki/HTML format. A gender specification is a list of one of the elements listed below, separated by hyphens. Examples are: "c", "n", "f-p", "m-an-p" ]=]-- local export = {} local codes = {} -- A list of all possible "parts" that a specification can be made out of. codes["?"] = '<abbr title="родот е непотполн">?</abbr>' -- Genders codes["m"] = '<abbr title="машки род">м</abbr>' codes["f"] = '<abbr title="женски род">ж</abbr>' codes["n"] = '<abbr title="среден род">с</abbr>' codes["c"] = '<abbr title="заеднички род">з</abbr>' -- Additional qualifiers codes["an"] = '<abbr title="живо">жив</abbr>' codes["in"] = '<abbr title="неживо">неж</abbr>' codes["pr"] = '<abbr title="лично">лич</abbr>' -- Numbers codes["s"] = '<abbr title="еднина">ед</abbr>' codes["d"] = '<abbr title="двоина">дв</abbr>' codes["p"] = '<abbr title="множина">мн</abbr>' -- Verb qualifiers codes["impf"] = '<abbr title="несвршено">нсв</abbr>' codes["pf"] = '<abbr title="свршено">свр</abbr>' -- Version of format_list that can be invoked from a template. function export.show_list(frame) local args = frame.args local list = {} local i = 1 while args[i] and args[i] ~= "" do table.insert(list, args[i]) i = i + 1 end return export.format_list(list) end -- Format one or more gender specifications, in the form of a table of specifications. function export.format_list(list) local is_nounclass = nil -- Iterate over each specification and format it for key, spec in ipairs(list) do local nc list[key], nc = export.format_specification(spec) -- Ensure that the specifications are either all noun classes, or none are. if is_nounclass == nil then is_nounclass = nc elseif is_nounclass ~= nc then error("Noun classes and genders cannot be mixed. Please use either one or the other.") end end if is_nounclass then -- Add the processed codes together with commas return "<span class=\"gender\">class " .. table.concat(list, "/") .. "</span>" else -- Add the processed codes together with commas return "<span class=\"gender\">" .. table.concat(list, ", ") .. "</span>" end end -- Format the sub-parts of a single gender specification. function export.format_specification(spec) local separator = " " -- If the specification starts with cX, then it is a noun class specification. if spec:find("^c[^-]") then code = spec:gsub("^c", "") return "<abbr class=\"noun-class\" title=\"noun class " .. code .. "\">" .. code .. "</abbr>", true else -- Split the parts and iterate over each part, converting it into its display form local parts = mw.text.split(spec, "-") for key, code in ipairs(parts) do -- Is this code valid? if codes[code] then parts[key] = codes[code] else error("Invalid gender specification code: \"" .. code .. "\"") end end -- Add the processed codes together with spaces return table.concat(parts, " "), false end end return export All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://mk.wiktionary.org/w/index.php?diff=prev&oldid=34839.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|