置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:拼音

猛汉♂百科,万男皆可猛的百科全书!转载请标注来源页面的网页链接,并声明引自猛汉百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [查看] [编辑] [历史] [刷新]

本模块用于生成汉字的拼音。

参数

  • 1:输入字符串
  • uc:非空则全部大写
  • ucfirst
    • =1:生成的整个字符串的首字母大写
    • =2:输入的字符串每个字的拼音首字母大写
  • strip:非空则处理所有非文字字符(标点符号等),默认操作为去除
  • nonword:将所有非文字字符替换为这个字符串

示例

  • {{拼音生成|萌百娘}}:mengbainiang
  • {{拼音生成|uc=1|萌百娘}}:MENGBAINIANG
  • {{拼音生成|ucfirst=1|萌百娘}}:Mengbainiang
  • {{拼音生成|ucfirst=2|萌百娘}}:MengBaiNiang
local 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