Module:ur
Appearance
- The following documentation is located at Module:ur/documentation. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
local lang = require("Module:languages").getByCode("ur")
local gsub = mw.ustring.gsub
local sub = mw.ustring.sub
--From [[Module:th]]
function export.new(frame)
local title = mw.title.getCurrentTitle().text
local args = frame:getParent().args
local pos = args[1] or ""
local def = args[2] or "{{rfdef|lang=ur}}"
local pos2 = args[3] or (args[4] and "" or false)
local def2 = args[4] or "{{rfdef|lang=ur}}"
local pos3 = args[5] or (args[6] and "" or false)
local def3 = args[6] or "{{rfdef|lang=ur}}"
local etym = args["e"] or false
local head = args["head"] or false
local pron = args["pron"] or false
local g = args["g"] or false
local g2 = args["g2"] or false
local g3 = args["g3"] or false
local decl = args["decl"] or false
local conj = args["conj"] or false -- conjugation stuff
local v = args["v"] or false
local karna = args["karna"] or false
local t = args["t"] or false
local c = args["c"] or args["cat"] or false
local ref = args["ref"] or false
local pp = args["pp"] or false --perfect participle
local result = ""
local function genTitle(text)
local pos_title = {
[""] = "Noun", ["n"] = "Noun", ["pn"] = "Proper noun", ["propn"] = "Proper noun", ["pron"] = "Pronoun",
["v"] = "Verb", ["a"] = "Adjective", ["adj"] = "Adjective", ["adv"] = "Adverb",
["prep"] = "Preposition", ["postp"] = "Postposition", ["post"] = "Postposition", ["con"] = "Conjunction",
["part"] = "Particle", ["suf"] = "Suffix", ["pref"] = "Prefix",
["prov"] = "Proverb", ["id"] = "Idiom", ["ph"] = "Phrase", ["intj"] = "Interjection", ["interj"] = "Interjection",
["num"] = "Numeral", ["abb"] = "Abbreviation", ["conj"] = "Conjunction",
["adj-form"] = "Adjective", ["verb-form"] = "Verb", ["noun-form"] = "Noun",
["pp"] = "Perfect participle",
};
return pos_title[text] or mw.ustring.upper(sub(text, 1, 1)) .. sub(text, 2, -1)
end
local function genHead(text)
local pos_head = {
[""] = "noun", ["n"] = "noun", ["pn"] = "proper noun", ["propn"] = "proper noun", ["v"] = "verb", ["a"] = "adj", ["adv"] = "adv",
["postp"] = "post", ["prep"] = "prep", ["conj"] = "con", ["pron"] = "pron",
["intj"] = "interj", ["pp"] = "perfect participle",
};
return pos_head[text] or text
end
local function other(class, title, args)
local code = ""
if args[class] then
code = code .. "\n\n===" .. title .. "===\n* {{l|ur|" .. args[class] .. "}}"
if args[class .. "2"] then
code = code .. "\n* {{l|ur|" .. args[class .. "2"] .. "}}"
if args[class .. "3"] then
code = code .. "\n* {{l|ur|" .. args[class .. "3"] .. "}}"
if args[class .. "4"] then
code = code .. "\n* {{l|ur|" .. args[class .. "4"] .. "}}"
end
end
end
end
return code
end
-- header
result = result .. "==Urdu=="
-- Wikipedia
if args["wp"] then result = result .. "\n{{wikipedia|lang=ur}}" end
-- Alternative forms
result = result .. other("alt", "Alternative forms", args)
-- Etymology
if etym then etym = mw.ustring.gsub(etym, "^%<", "From") end
if etym then result = result .. "\n\n===Etymology===\n" .. etym end
-- Pronunciation
if pron then
result = result .. "\n\n===Pronunciation===\n* {{ur-IPA|" .. ((pron ~= title and pron ~= "") and ("|" .. gsub(pron, ",", "|")) or "") .. "}}"
else
result = result .. "\n\n===Pronunciation===\n* {{ur-IPA}}"
end
result = result .. "\n\n===" .. genTitle(pos) .. "===\n{{ur-" .. genHead(pos) .. (head and ("|head=" .. head) or "") .. (g and ("|g=" .. g) or "") .. (t and ("|" .. t) or "") .. (pp and ("|" .. pp) or "") .. "}}\n\n# " .. def
-- Morphology
if decl then result = result .. "\n\n====Declension====\n{{ur-" .. genHead(pos) .. "-" .. ((decl ~= title and decl ~= "") and (gsub(decl, ",", "|")) or "") .. "}}" end
if conj then result = result .. "\n\n====Conjugation====\n{{ur-conj" .. (v and ("-v") or "") .. (karna and ("-karna") or "") .. "|" .. (conj or "") .. "}}" end
-- Other
result = result .. other("syn", "=Synonyms=", args)
result = result .. other("ant", "=Antonyms=", args)
result = result .. other("der", "=Derived terms=", args)
result = result .. other("also", "=See also=", args)
-- Actual Entry
if pos2 then
result = result .. "\n\n===" .. genTitle(pos2) .. "===\n{{ur-" .. genHead(pos2) .. (head and ("|head=" .. head) or "") .. (g2 and ("|g=" .. g2) or "") .. "}}\n\n# " .. def2
end
if pos3 then
result = result .. "\n\n===" .. genTitle(pos3) .. "===\n{{ur-" .. genHead(pos3) .. (head and ("|head=" .. head) or "") .. (g3 and ("|g=" .. g3) or "") .. "}}\n\n# " .. def3
end
-- categories and references
if ref then
result = result .. "\n\n====References====\n* {{R:Ox HI-EN|" .. ref .."}}"
end
if c then
result = result .. "\n\n{{topics|ur" .. ((c ~= title and c ~= "") and ("|" .. gsub(c, ",", "|")) or "") .. "}}"
end
return result
end
return export