“模块:少女歌剧”的版本间的差异

来自萌娘文库
跳转至: 导航搜索
第6行: 第6行:
 
local node = mw.html.create("table")
 
local node = mw.html.create("table")
 
:addClass("wikitable")
 
:addClass("wikitable")
:css("width", "100%")
 
 
:tag("tr")
 
:tag("tr")
 
:tag("th")
 
:tag("th")
第19行: 第18行:
 
local actor = "???"
 
local actor = "???"
 
local counter = 0
 
local counter = 0
for _, line in ipairs(args) do
+
for index, line in ipairs(args) do
 
line = mw.text.trim(line)
 
line = mw.text.trim(line)
 
 
 
if mw.ustring.find(mw.text.trim(line), "^@[^@]") then
 
if mw.ustring.find(mw.text.trim(line), "^@[^@]") then
 
actor = mw.text.trim(mw.ustring.sub(line, 2))
 
actor = mw.text.trim(mw.ustring.sub(line, 2))
 +
--error(mw.dumpObject({index,actor}))
 
if counter == 1 then
 
if counter == 1 then
node:tag("td"):done()
+
node:tag("td")
 +
node = node.done()
 
counter = 0
 
counter = 0
 
end
 
end
第32行: 第33行:
 
if counter == 1 then
 
if counter == 1 then
 
node:tag("td")
 
node:tag("td")
 +
error(tostring(node))
 
node = node.done()
 
node = node.done()
 +
counter = 0
 
end
 
end
 
node:tag("tr"):tag("th")
 
node:tag("tr"):tag("th")
第39行: 第42行:
 
counter = 0
 
counter = 0
 
else
 
else
 +
if counter == 0 then
 +
node = node:tag("tr")
 +
end
 +
local rawtext = mw.ustring.gsub(line, "[-@][-@]", function(match)
 +
return mw.ustring.sub(match, 1, 2)
 +
end)
 
node:tag("td")
 
node:tag("td")
 
:wikitext("<sup>")
 
:wikitext("<sup>")
 
:wikitext(actor)
 
:wikitext(actor)
 
:wikitext("</sup>")
 
:wikitext("</sup>")
:wikitext(mw.ustring.gsub(line, "[-@][-@]", function(match)
+
:wikitext(rawtext)
return mw.ustring.sub(match, 1, 2)
+
if counter == 1 then
end))
+
node = node:done()
end
+
end
+
if counter == 0 then
+
counter = math.mod(counter + 1, 2)
node = node:tag("tr")
 
 
end
 
end
 
end
 
end

2020年8月13日 (四) 19:56的版本

此模块的文档可以在模块:少女歌剧/doc创建

local module = {}

function module.scenario(frame)
	local args = frame.args
	
	local node = mw.html.create("table")
		:addClass("wikitable")
		:tag("tr")
			:tag("th")
				:css("width", "50%")
				:wikitext("原文")
				:done()
			:tag("th")
				:css("width", "50%")
				:wikitext("译文")
				:done()
			:done()
	local actor = "???"
	local counter = 0
	for index, line in ipairs(args) do
		line = mw.text.trim(line)
		
		if mw.ustring.find(mw.text.trim(line), "^@[^@]") then
			actor = mw.text.trim(mw.ustring.sub(line, 2))
			--error(mw.dumpObject({index,actor}))
			if counter == 1 then
				node:tag("td")
				node = node.done()
				counter = 0
			end
		elseif mw.ustring.find(mw.text.trim(line), "^-[^-]") then
			local chapter = mw.text.trim(mw.ustring.sub(line, 2))
			if counter == 1 then
				node:tag("td")
				error(tostring(node))
				node = node.done()
				counter = 0
			end
			node:tag("tr"):tag("th")
				:attr("colspan", 2)
				:wikitext(chapter)
			counter = 0
		else
			if counter == 0 then
				node = node:tag("tr")
			end
			local rawtext = mw.ustring.gsub(line, "[-@][-@]", function(match)
					return mw.ustring.sub(match, 1, 2)
				end)
			node:tag("td")
				:wikitext("<sup>")
				:wikitext(actor)
				:wikitext("</sup>")
				:wikitext(rawtext)
			if counter == 1 then
				node = node:done()
			end
			
			counter = math.mod(counter + 1, 2)
		end
	end
	
	return tostring(node)
end

return module