◆少前百科是非盈利性、非官方的少女前线维基百科。
◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科
◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科
◆To foreigners,You can use twitter to contact us.
Icon Nyto Silver.png

模块:VoiceTable2

来自少前百科GFwiki
跳转至: 导航搜索

此模块的文档可以在模块:VoiceTable2/doc创建

local p = {}

function p.table(frame)
	local max_pieces = 50
	local args = (frame == mw.getCurrentFrame() and frame.args) or frame
	
	res_table = {}
	table.insert(res_table, frame:callParserFunction{name = '#Widget:MiniAudioPlayerJS'})
	
	local playable = ((args["可播放"] or "") ~= "")
	local title = mw.text.trim(args["表格标题"] or "")
	local path = mw.text.trim(args["目录"] or "")
	local suffix = args["格式"]
	
	local lack_file = false
	local lack_text = false
	local lack_tran = false
	
	local table_class = playable and "voiceTableBox" or "voiceTableBox mw-collapsible mw-collapsed"
	
	-- Table
	table.insert(res_table, string.format("\n<table class=\"%s\">", table_class))
	if not playable then table.insert(res_table, string.format("<tr><th><div class=\"voiceTableFirstTitle\">%s<\/div><\/th><\/tr><tr><td>", title)) end
	
	table.insert(res_table, "<div class=\"voiceTable\">")
	
	for i = 1, max_pieces do
		local piece_title = mw.text.trim(args["标题" .. i] or "")
		local sort_title = mw.text.trim(args["分类标题" .. i] or "")
		
		if sort_title ~= "" then
			table.insert(res_table, string.format("<div class=\"voiceTableSortTitle\">%s<\/div>", sort_title))
		end
		
		if piece_title ~= "" then
			local piece_jp = mw.text.trim(args["日文" .. i] or "")
			local piece_cn = mw.text.trim(args["中文" .. i] or "")
			local piece_tc = mw.text.trim(args["繁中" .. i] or "")
			local piece_en = mw.text.trim(args["英文" .. i] or "")
			local piece_kr = mw.text.trim(args["韩文" .. i] or "")
			local piece_file = mw.text.trim(args["语音" .. i] or "")
			
			local piece_lack_file = (piece_file == "")
			local piece_lack_text = (piece_jp == "" and piece_cn == "")
			local piece_lack_tran = (piece_jp ~= "" and piece_cn == "")
			
			local piece_lack_info = piece_lack_file or piece_lack_text or piece_lack_tran
			
			table.insert(res_table, string.format("<div class=\"voiceTableTitle\" style=\"color:%s;\"><p>%s<\/p><\/div>", (piece_lack_info and "#3F3F3F" or "#000000"), piece_title))
			table.insert(res_table, "<div class=\"voiceTableContent\">")

			if playable and piece_jp ~= "" then
				table.insert(res_table, "<p class=\"voiceTextJP\" lang=\"ja\" style=\"margin:5px; margin-bottom:10px;\">" .. piece_jp .. "</p>")
            end
			if piece_cn ~= "" then
				table.insert(res_table, "<p class=\"voiceTextCN\" lang=\"zh\" style=\"margin:5px;\">" .. piece_cn .. "</p>")
            end
            if piece_tc ~= "" then
				table.insert(res_table, "<p class=\"voiceTextTC\" lang=\"zh\" style=\"margin:5px; display:none;\">" .. piece_tc .. "</p>")
            end
            if piece_en ~= "" then
                table.insert(res_table, "<p class=\"voiceTextEN\" lang=\"en\" style=\"margin:5px; display:none;\">" .. piece_en .. "</p>")
            end
            if piece_kr ~= "" then
                table.insert(res_table, "<p class=\"voiceTextKR\" lang=\"ko\" style=\"margin:5px; display:none;\">" .. piece_kr .. "</p>")
			end

			table.insert(res_table, "<\/div>")
			
			if playable then
				table.insert(res_table, "<div class=\"voiceTableMedia\">")
			
				if piece_file ~= "" then
					if piece_file == "-" then
						table.insert(res_table, "—")
					else
						if not (string.find(piece_file, '.', -4, true)) then piece_file = piece_file .. '.' .. suffix end
						local piece_file_url = (path == "") and frame:callParserFunction{name = 'filepath:' .. piece_file} or (path .. piece_file)
						local player_args = {icon_width = '36px', src = piece_file_url}
						if piece_file_url == "" then
							player_args["download_style"] = "display:none;"
							player_args["play_style"] = "display:none;"
						end
						if not playable then player_args["download_style"] = "display:none;" end
						
						table.insert(res_table, frame:callParserFunction{name = '#Widget:MiniAudioPlayer', args = player_args})
					end
				end
				table.insert(res_table, string.format("<\/div>"))
			end
			
			lack_file = lack_file or piece_lack_file
			lack_text = lack_text or piece_lack_text
			lack_tran = lack_tran or piece_lack_tran
		end
	end
	
	table.insert(res_table, "<\/div><\/td><\/tr><\/table>")
	
	return table.concat(res_table)
end

return p