模組:汉语读音

維基詞典,自由的多語言詞典

本模块暂时为试行阶段,用于{{汉语读音/lua}}


local p={}
local basic=mw.html.create'table'
		:css{
			['border-collapse']='collapse',
			['text-align']='center',
			['border']='2px solid #aaaaaa',
			['font-size']='110%',
			['width']='auto',
		}
		:attr('cellpadding','8')
		:attr('rules','all')
local rows=0 --该参数不为每个函数单独定制,是为了配合ch,否则,它将无法识别rows。

local function ch(chunk,title,arg,settings)
	settings=settings or {}
	if arg then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext(title)
				:done()
			:tag'td'
				:wikitext(settings.isipa==true and '/'..arg..'/' or arg)
				:attr(settings.isipa==true and {
					title='国际音标发音',
					class='ipa',
					style='cursor:help',
				} or {})
				:done()
			:done()
		rows=rows+1
	end
end

function p.guoyu(f)
	rows=0
	f=f or mw.getCurrentFrame()
	local args=f:getParent().args
	local chunk=basic
	local rows=0 --列数,如果一列都没有,则不生成表格。
	chunk
		:tag'tr'
			:tag'th'
				:attr('colspan','2')
				:wikitext'[[Wiktionary:漢語發音表記#國語/普通話|國語/普通話]]'
				:done()
			:done()
	
	-- 汉语拼音,如果不存在则不生成这一行
	do
		local pinyin=	args.pinyin
					or	args['汉语拼音']
					or	args['漢語拼音']
					or	args['拼音']
			  pinyin=pinyin and require'Module:Pinyin'.topinyin(pinyin) or nil
		if pinyin then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext'[[:w:汉语拼音|汉语拼音]]'
				:done()
			:tag'td'
				:wikitext(pinyin)
				:attr('lang','zh-latn')
				:done()
			:done()
			rows=rows+1
		end
	end
	
	-- 注音符号,如果不存在则不生成这一行
	do
		local zhuyin=	args.zhuyin
					or	args['注音符号']
					or	args['注音符號']
					or	args['注音']
		if zhuyin then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext'[[:w:注音符号|注音符号]]'
				:done()
			:tag'td'
				:wikitext(zhuyin)
				:attr('lang','zh-bopo')
				:done()
			:done()
			rows=rows+1
		end
	end
	
	-- 国际音标,如果不存在则不生成这一行
	do
		local yinbiao=	args.ipa
					or	args['音标']
					or	args['国际音标']
					or	args['音標']
					or	args['國際音標']
		if yinbiao then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext'[[Wiktionary:国际音标|国际音标]]'
				:done()
			:tag'td'
				:wikitext('/'..yinbiao..'/')
				:attr{
					title='国际音标发音',
					class='ipa',
					style='cursor:help',
				}
				:done()
			:done()
			rows=rows+1
		end
	end
	
	-- 音频文件,如果不存在则不生成这一行
	do
		local audio=	args.audio
					or	args['音频文件']
					or	args['音频']
					or	args['音頻文件']
					or	args['音頻']
		if audio then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext"'''音频文件'''"
				:done()
			:tag'td'
				:wikitext(f:expandTemplate{title='audio1',args={audio}})
				:done()
			:done()
			rows=rows+1
		end
	end
	
	-- 通用拼音,如果不存在则不生成这一行
	do
		local tongyong=	args.tongyong
					or	args['通用']
					or	args['通用拼音']
		if tongyong then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext'[[:w:通用拼音|通用拼音]]'
				:done()
			:tag'td'
				:wikitext(tongyong)
				:done()
			:done()
			rows=rows+1
		end
	end
	
	-- 威妥玛拼音拼音,如果不存在则不生成这一行
	do
		local wade=	args.wade
					or	args['威妥玛']
					or	args['威妥玛拼音']
					or	args['威妥瑪']
					or	args['威妥瑪拼音']
		if wade then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext'[[:w:威妥玛拼音|威妥玛拼音]]'
				:done()
			:tag'td'
				:wikitext(wade)
				:done()
			:done()
			rows=rows+1
		end
	end
	
	-- 注音第二式,如果不存在则不生成这一行
	do
		local z2=	args.z2
					or	args['注音第二式']
		if z2 then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext'[[:w:注音第二式|注音第二式]]'
				:done()
			:tag'td'
				:wikitext(z2)
				:done()
			:done()
			rows=rows+1
		end
	end
	
	-- 耶鲁拼音,如果不存在则不生成这一行
	do
		local yale=	args.yale
					or	args['耶鲁拼音']
					or	args['耶魯拼音']
		if yale then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext'[[:w:耶鲁拼音|耶鲁式]]'
				:done()
			:tag'td'
				:wikitext(yale)
				:done()
			:done()
			rows=rows+1
		end
	end
	
	-- 国语罗马字,如果不存在则不生成这一行
	do
		local gy=	args.gy
					or	args['国语罗马字']
					or	args['國語羅馬字']
		if gy then
	chunk
		:tag'tr'
			:tag'th'
				:wikitext'[[:w:国语罗马字|国语罗马字]]'
				:done()
			:tag'td'
				:wikitext(gy)
				:done()
			:done()
			rows=rows+1
		end
	end
	
	if rows==0 then
		return ''
	else
		return tostring(chunk)
	end
	rows=0
end

function p.yueyu(f)
	rows=0
	f=f or mw.getCurrentFrame()
	local args=f:getParent().args
	local chunk=basic
	
	chunk
		:tag'tr'
			:tag'th'
				:attr('colspan','2')
				:wikitext'[[Wiktionary:汉语發音表記#粵語|粵語]]'
				:done()
			:done()
	
	ch(chunk,'[[:w:香港语言学学会粤语拼音方案|粤拼]]',args.jyut or args['香港语言学学会粤语拼音'])
	ch(chunk,'[[:w:广州话拼音方案|广州话拼音]]',args.gz or args.guangzhou or args.guangdong or args['广州话拼音'])
	ch(chunk,'[[:w:教育学院拼音方案|教育学院拼音]]',args.scp or args['教育学院拼音'])
	ch(chunk,'[[:w:耶鲁粤语拼音|耶鲁粤语拼音]]',args.y or args['耶鲁粤语拼音'])
	ch(chunk,'[[:w:刘锡祥拼音|刘锡祥拼音]]',args.l or args['刘锡祥拼音'])
	ch(chunk,'[[:w:广东话拼音|广东话拼音]]',args.penk or args['广东话拼音'])
	ch(chunk,'国际音标发音',args.yueipa or args['粤语国际音标'] or args['粵語國際音標'],{isipa=true})
	
	if rows==0 then
		return ''
	else
		return tostring(chunk)..(args.nocategory=='1' and '' or '[[Category:粤语]]')
	end
	rows=0
end

function p.mindong(f)
	rows=0
	f=f or mw.getCurrentFrame().args
	local args=f:getParent().args
	local chunk=basic
	
	chunk
		:tag'tr'
			:tag'th'
				:attr('colspan','2')
				:wikitext'[[Wiktionary:汉语發音表記#閩東語|閩東語]]'
				:done()
			:done()
	
	ch(chunk,'[[:w:平話字|平話字]]',args.buc or args['闽东语平话字'] or args['平话字'] or args['閩東語平話字'] or args['平話字'])
	ch(chunk,'[[Wiktionary:国际音标|國際音標]]',args.cdoipa or args['闽东语国际音标'] or args['閩東語國際音標'],{isipa=true})
	
	if rows==0 then
		return ''
	else
		return tostring(chunk)..(args.nocategory=='1' and '' or '[[Category:闽东语]]')
	end
	rows=0
end

function p.minnan(f)
	rows=0
	f=f or mw.getCurrentFrame().args
	local args=f:getParent().args
	local chunk=basic
	
	chunk
		:tag'tr'
			:tag'th'
				:attr('colspan','2')
				:wikitext'[[Wiktionary:汉语發音表記#閩南語|閩南語]]'
				:done()
			:done()
			
	ch(chunk,'[[:w:白话字|白话字]]',args.pojj or args['闽南语白话字'] or args['閩南語白話字'] or args['白话字'] or args['白話字'])
	ch(chunk,'[[:w:台湾方言音符号|台湾方言音符号]]', args.eb or args['台湾方言符号'] or args['台灣方言符號'])
	ch(chunk,'[[:w:台湾闽南语罗马字拼音方案|臺羅拼音]]',args.tl or args['台湾闽南语罗马字拼音'] or args['台灣閩南語羅馬字拼音'] or args['台罗拼音'] or args['台羅拼音'] or args['臺羅拼音'])
	ch(chunk,'[[:w:台语通用拼音|台语通用拼音]]',args.t or args['台语通用拼音'] or args['台語通用拼音'])
	ch(chunk,'[[:w:台语现代文|台语现代文]]',args.mlt or args['台語現代文'] or args['台语现代文'])
	ch(chunk,'[[:w:普实台文|普实台文]]',args.ps or args['普实台文'] or args['普實臺文'])
	ch(chunk,'[[Wiktionary:国际音标|国际音标]]',args.mimipa or args['闽南语国际音标'] or args['閩南語國際音標'],{isipa=true})
	
	if rows==0 then
		return ''
	else
		return tostring(chunk)..(args.nocategory=='1' and '' or '[[Category:闽南语]]')
	end
	rows=0
end

return p