မော်ဂျူး:bo-common
Documentation for this module may be created at မော်ဂျူး:bo-common/doc
local export = {}
local u = mw.ustring.char
local gsub = mw.ustring.gsub
local len = mw.ustring.len
local match = mw.ustring.match
local sub = mw.ustring.sub
local upper = mw.ustring.upper
function export.preconvert(text)
return (gsub(text, "([ཀ-ཇཉ-ཬྈ-ྌ༘༙༵༷༾༿ཱ-ྃ྆྇])༹", function(m1) return u(mw.ustring.codepoint(m1) + 0xF0000) end))
end
function export.invalidChecks(text)
return {
len(gsub(text, "[^ཀ-ཇཉ-ཬྈ-ྌ---]", "")) > 6, -- 5 & 6 letter syllables are very rare
}
end
function export.mainStackChecks(text)
return {
match(text, "[ཀ-ཇཉ-ཬྈ-ྌ---][ྍ-ྗྙ-ྼ--]+[༘༙༵༷༾༿ཱ-ྃ྆྇-]*"),
match(text, "[ཀ-ཇཉ-ཟཡ-ཬྈ-ྌ---][༘༙༵༷༾༿ཱ-ྃ྆྇-]+"),
match(text, "^འ[༘༙༵༷༾༿ཱ-ྃ྆྇-]+"),
match(text, "([ཀ-ཇཉ-ཬྈ-ྌ---])[ཀ-ཇཉ-ཬྈ-ྌ---]྄"),
match(text, "([ཀ-ཇཉ-ཬྈ-ྌ---])འ[༘༙༵༷༾༿ཱ-ྃ྆྇-]+$"),
match(text, "([ཀ-ཇཉ-ཬྈ-ྌ---])འ"),
(len(text) == 3 or len(text) == 4) and match(text, "([ཀ-ཇཉ-ཬྈ-ྌ---])འ[ངམར]$"),
len(gsub(text, "྄", "")) == 1 and text,
len(gsub(text, "྄", "")) == 2 and match(text, "^([ཀ-ཇཉ-ཬྈ-ྌ---])[^྄]"),
len(gsub(text, "྄", "")) == 4 and match(text, "^[ཀ-ཇཉ-ཬྈ-ྌ---]྄?([ཀ-ཇཉ-ཬྈ-ྌ---])[^྄]"),
match(text, "([ཀ-ཇཉ-ཬྈ-ྌ---])[^དས྄]$"),
match(text, "^[ཀཁང-ཇཉ-ཐན-ཕཙ-ཟཡ-ཬྈ-ྌ---]"),
match(text, "^([གདབམའ])[ཀ-ཇཉ-ཬྈ-ྌ---]྄"),
match(text, "^(ག)[^ཅཉཏདནཙཞཟཡཤས]"),
match(text, "^(ད)[^ཀགངཔབམ]"),
match(text, "^(བ)[^ཀགཅཏདཙཞཟཤས]"),
match(text, "^(མ)[^ཁགངཆཇཉཐདནཚཛ]"),
match(text, "^(འ)[^ཁགཆཇཐདཕབཚཛ]"),
match(text, "([^གངབམ])ས྄?$"),
match(text, "([^ནརལ])ད྄?$")
}
end
function export.postconvert(text)
return (gsub(text, "([-])", function(m1) return u(mw.ustring.codepoint(m1) - 0xF0000) .. "༹" end))
end
export.ambiguousSyllables = {
["མངས"] = "མ", ["མགས"] = "མ", ["དབས"] = "བ", ["དངས"] = "ད", ["དགས"] = "ག", ["དམས"] = "མ", ["བགས"] = "བ", ["འབས"] = "བ", ["འགས"] = "ག", ["གནད"] = "ན", ["མནད"] = "ན"
}
function export.new(frame)
local title = mw.title.getCurrentTitle().text
local args = frame:getParent().args
local pron = args["p"] or false
local pos = args[1] or ""
local def = args[2] or "{{rfdef|bo}}"
local pos2 = args[3] or (args[4] and "" or false)
local def2 = args[4] or "{{rfdef|bo}}"
local pos3 = args[5] or (args[6] and "" or false)
local def3 = args[6] or "{{rfdef|bo}}"
local etym = args["e"] or false
local head = args["head"] or false
local cat = args["cat"] or false
local reg = args["reg"] or false
local otb = args["otb"] or false
local result = ""
local function genTitle(text)
local pos_title = {
[""] = "နာမ်", ["n"] = "နာမ်", ["pn"] = "တစ်ဦးဆိုင်နာမ်", ["propn"] = "တစ်ဦးဆိုင်နာမ်", ["pron"] = "နာမ်စား",
["v"] = "ကြိယာ", ["vf"] = "ကြိယာ", ["a"] = "နာမဝိသေသန", ["adj"] = "နာမဝိသေသန", ["adv"] = "ကြိယာဝိသေသန",
["prep"] = "ဝိဘတ်", ["postp"] = "Postposition", ["conj"] = "သမ္ဗန္ဓ",
["part"] = "ပစ္စည်း", ["suf"] = "နောက်ဆက်",
["prov"] = "စကားပုံ", ["id"] = "အီဒီယမ်", ["ph"] = "စကားစု", ["intj"] = "အာမေဍိတ်", ["interj"] = "အာမေဍိတ်",
["cl"] = "Classifier", ["cls"] = "Classifier", ["num"] = "ဂဏန်းခြေ", ["abb"] = "အကျဉ်းချုံး", ["deter"] = "ဝါစင်္ဂ"
};
return pos_title[text] or upper(sub(text, 1, 1)) .. sub(text, 2, -1)
end
local function genHead(text)
local pos_head = {
[""] = "နာမ်", ["n"] = "နာမ်", ["pn"] = "တစ်ဦးဆိုင်နာမ်", ["propn"] = "တစ်ဦးဆိုင်နာမ်", ["v"] = "ကြိယာ", ["vf"] = "ကြိယာပုဒ်", ["a"] = "adj",
["postp"] = "post", ["conj"] = "con", ["part"] = "ပစ္စည်း", ["pron"] = "နာမ်စား",
["prov"] = "စကားပုံ", ["id"] = "အီဒီယမ်", ["ph"] = "စကားစု", ["intj"] = "interj",
["abb"] = "abbr", ["cl"] = "classifier", ["deter"] = "det"
};
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|bo|" .. args[class] .. "}}"
if args[class .. "2"] then
code = code .. "\n* {{l|bo|" .. args[class .. "2"] .. "}}"
if args[class .. "3"] then
code = code .. "\n* {{l|bo|" .. args[class .. "3"] .. "}}"
if args[class .. "4"] then
code = code .. "\n* {{l|bo|" .. args[class .. "4"] .. "}}"
end
end
end
end
return code
end
result = result .. "==တိဘက်=="
if args["wp"] then result = result .. "\n{{wikipedia|lang=bo" ..
(args["wp"] == "y" and "" or "|" .. args["wp"]) .. "}}" end
result = result .. other("alt", "မူကွဲပုံစံများ", args)
if etym then result = result .. "\n\n===ရင်းမြစ်===\n" .. etym end
result = result .. "\n\n===အသံထွက်===\n{{bo-pron" .. (pron and "|" .. pron or "") .. (otb and "|otb=-" or "") .. "}}"
result = result .. "\n\n===" .. genTitle(pos) .. "===\n{{bo-" .. genHead(pos) .. (head and ("|head=" .. head) or "") .. "}}\n\n# " .. def
if reg then result = result .. "\n{{bo-registers|" .. reg .. "}}" end
result = result .. other("syn", "=ကြောင်းတူသံကွဲများ=", args)
result = result .. other("ant", "=ဆန့်ကျင်ဘက်များ=", args)
result = result .. other("der", "=ဆင့်ပွားအသုံးများ=", args)
result = result .. other("also", "=အခြားကြည့်ရန်=", args)
if pos2 then
result = result .. "\n\n===" .. genTitle(pos2) .. "===\n{{bo-" .. genHead(pos2) .. (head and ("|head=" .. head) or "") .. "}}\n\n# " .. def2
end
if pos3 then
result = result .. "\n\n===" .. genTitle(pos3) .. "===\n{{bo-" .. genHead(pos3) .. (head and ("|head=" .. head) or "") .. "}}\n\n# " .. def3
end
if cat then result = result .. "\n\n{{C|bo|" .. cat .. "}}" end
return result
end
function export.verb(frame)
local title = mw.title.getCurrentTitle().text
title = require("Module:Tibt-translit").tr(title, "bo", "Tibt")
if match(title, "[aeiourl]$") or match(title, "ng$") then
return "བ"
end
return "པ"
end
function export.removePa(frame)
local title = mw.title.getCurrentTitle().text
return (gsub(title, "་[པབ]$", ""))
end
return export