Module:StorySim:修订间差异
(创建页面,内容为“local p = {} local getArgs = require('Module:Arguments').getArgs local function getTextList(txt,add,mod) local t = {}; local isValid = false; for i in string.gmatch(txt .. add,mod) do isValid = isValid or (i ~= '') if isValid then table.insert(t,i);end end return t; end local function delbr(txt) local t = txt; while true do local a = string.sub(t,-4) if a ~= '<br>' then break;end t = string.s…”) |
小 (修复+优化) |
||
第44行: | 第44行: | ||
local _type; | local _type; | ||
local isEmpty = true; | local isEmpty = true; | ||
for | local i = 0; | ||
-- | for a,b in string.gmatch(string.sub(txt,2) .. '\n[','(.-)%](.-)%c%[') do | ||
i = i + 1; | |||
local b = ' | -- local a = 'name="伊洛" class="123"'' | ||
-- local b = '知道了知道了。' | |||
isEmpty = (b == '' or a == '/'); | |||
if isEmpty then b = '<div class="addLine"></div>';end | |||
local n = getParam(a,"name"); | local n = getParam(a,"name"); | ||
if n then | if n then | ||
第69行: | 第61行: | ||
end | end | ||
if _type == 'talk' then node:wikitext(b) | if _type == 'talk' then node:wikitext(b):done() | ||
elseif _type == 'think' then | elseif _type == 'think' then | ||
if isEmpty then node:wikitext(b):done() | if isEmpty then node:wikitext(b):done() | ||
第76行: | 第68行: | ||
else node:tag("span"):addClass("storyError"):wikitext(string.format("警告:无法识别类型名!(line=%d)",i)):done(); | else node:tag("span"):addClass("storyError"):wikitext(string.format("警告:无法识别类型名!(line=%d)",i)):done(); | ||
end | end | ||
if not isEmpty then node:wikitext('<br>') end | if not isEmpty then node:wikitext('<br>') end | ||
end | |||
end | end | ||
2023年12月15日 (五) 15:21的版本
可在Module:StorySim/doc创建此模块的帮助文档
local p = {} local getArgs = require('Module:Arguments').getArgs local function getTextList(txt,add,mod) local t = {}; local isValid = false; for i in string.gmatch(txt .. add,mod) do isValid = isValid or (i ~= '') if isValid then table.insert(t,i);end end return t; end local function delbr(txt) local t = txt; while true do local a = string.sub(t,-4) if a ~= '<br>' then break;end t = string.sub(t,1,-5); end return t; end local function getParam(txt,id) return string.match(txt,id .. '"(.-)"') end local function _summonTextShow(tag,txt) local s = ''; for _,v in ipairs(getTextList(txt,'\n',"(.-)%c")) do s = s .. v .. '<br>'; end tag:tag("div"):addClass("textShow"):wikitext(delbr(s)); end local function summonTextShow(tag,txt) for _, v in ipairs(getTextList(txt,"[/]","(.-)%[/%]")) do _summonTextShow(tag,v) end end local function summonTalkShow(tag,txt) local tableHTML = tag:tag("table"):addClass("talkShow") local l = getTextList(txt,'\n',"(.-)%c"); local node; local _type; local isEmpty = true; local i = 0; for a,b in string.gmatch(string.sub(txt,2) .. '\n[','(.-)%](.-)%c%[') do i = i + 1; -- local a = 'name="伊洛" class="123"'' -- local b = '知道了知道了。' isEmpty = (b == '' or a == '/'); if isEmpty then b = '<div class="addLine"></div>';end local n = getParam(a,"name"); if n then _type = getParam(a,"type") or 'talk' node = tableHTML:tag('tr') :tag('th'):wikitext(n):done() :tag('td') else _type = getParam(a,"type") or _type end if _type == 'talk' then node:wikitext(b):done() elseif _type == 'think' then if isEmpty then node:wikitext(b):done() else node:tag('span'):addClass('thought'):wikitext(b):done() end else node:tag("span"):addClass("storyError"):wikitext(string.format("警告:无法识别类型名!(line=%d)",i)):done(); end if not isEmpty then node:wikitext('<br>') end end end -- Start -- local function makeInvokeFunc(funcName) return function(frame) local args = getArgs(frame) return p[funcName](args) end end p.main = makeInvokeFunc('_main') function p._main(args)-- 生成HTML的主函数 部分代码来源:[[Module:Songtable]] --- 构建HTML --- local box = mw.html.create("table"):addClass("rotable mw-collapsible mw-collapsed storyTable"); box:tag('tr'):tag('th'):wikitext(args['title'] or "标题"); for index, arg in ipairs(args) do local tag = box:tag("tr"):tag("td"):addClass("storySim"); local a = string.match(arg,"textShow>(.+)"); local b = string.match(arg,"talkShow>(.+)"); if a then summonTextShow(tag,a); elseif b then summonTalkShow(tag,b); else tag:tag("span"):addClass("storyError"):wikitext(string.format("警告:无法识别源代码!(arg=%d)",index)):done(); end -- box:tag("span"):wikitext(type(index) .. arg):done() end return tostring(box) end return p