本模块用于生成汉字的拼音。
{{拼音生成|萌百娘}}:mengbainiang{{拼音生成|uc=1|萌百娘}}:MENGBAINIANG{{拼音生成|ucfirst=1|萌百娘}}:Mengbainiang{{拼音生成|ucfirst=2|萌百娘}}:MengBaiNianglocal module = { }
local data = mw.loadData("Module:拼音/Data")
function upperFirst(input)
return string.upper(mw.ustring.sub(input, 1, 1)) .. mw.ustring.sub(input, 2)
end
function module.Generate(frame)
local parent = frame:getParent()
if parent and parent:getTitle() == "Template:拼音生成" then
frame = parent
end
local ucfirst = frame.args["ucfirst"]
local ucfirst = (ucfirst and mw.text.trim(ucfirst) ~= "") and tonumber(ucfirst) or 0
local input = (frame.args["strip"] and mw.text.trim(frame.args["strip"])) and mw.ustring.gsub(frame.args[1], "[^%w]+", frame.args["nonword"] or "") or frame.args[1]
local result = mw.ustring.gsub(input, "%a", function(char) return ((ucfirst == 2) and upperFirst(data[char]) or data[char]) or char end)
if frame.args["uc"] and mw.text.trim(frame.args["uc"]) ~= "" then
result = string.upper(result)
elseif ucfirst == 1 then
result = upperFirst(result)
end
return result
end
return module