更改 - 知沅教育出版社偶梦课程教研所

更改

跳到导航 跳到搜索
添加2,503字节 、 2024年10月27日 (日) 13:22
建立内容为“local module = {} local getArgs = require('Module:Arguments').getArgs function module._charaBlock(args) local colors = mw.text.split(mw.ustring.gsub(args.color…”的新页面
local module = {}

local getArgs = require('Module:Arguments').getArgs

function module._charaBlock(args)
local colors = mw.text.split(mw.ustring.gsub(args.colors, ';+$', ''), ';')
for i, v in ipairs(colors) do
colors[i] = mw.ustring.match(v, '^%s*([^=]+)%f[%s=%z]') -- %f边界判断
end
local charas = mw.text.split(mw.ustring.gsub(args.charas, ';+$', ''), ';')
local groupColor = args.groupColor or ''
local hasGroupColor = false

for k,v in ipairs(charas)do
if v == '合唱' then
charas[k] = v .. '(@nolink)'
break
end
end

if string.find(groupColor, '^color:([^;]+)') then
table.insert(colors, string.match(groupColor, '^color:([^;]+)'))
hasGroupColor = true
end

if string.find(charas[#colors] or '', '^%s*$') then
charas[#colors] = '合唱(@nolink)'
end

if hasGroupColor and charas[#colors]:find('%(@nolink%)$') == nil then
charas[#colors] = charas[#colors]..'(@nolink)'
end

if args['groupName'] then
charas[#colors] = args['groupName']..'(@nolink)'
end

local product = {}
for i, v in ipairs(colors) do
v = string.gsub(v, '\n', '')
repeat
local ban = {
'lg%(.+%)', 'rg%(.+%)', 'rlg%(.+%)', 'rrg%(.+%)', 'co%(.+%)', 'rb%(.+%)', '^%s*$'
}
local flag = false
for index, ptn in ipairs(ban) do
if string.find(v, ptn) then
flag = true
break
end
end
if flag then break end
local charaName = ' '..string.gsub(charas[i], '(.+)%(.+%)', '%1')
local arg = string.gsub(charas[i], '.+%((.-)%)', '%1')
local block = mw.html.create('span')
:css('display', 'inline-block')
:css('color', v)
:tag('span'):css({
width = '10px',
height = '10px',
background = v,
display = 'inline-block'
})
:done():wikitext(charaName)
:allDone()

function link(link, block)
return '[['..link..'|'..tostring(block)..']]'
end

if arg == '@nolink' then
table.insert(product, tostring(block))
elseif arg:find('^@link:.+') then
table.insert(product, link(arg:match('^@link:(.+)'), block))
else
table.insert(product, link(charas[i], block))
end
until true
end

local productWiki = ''
for i, v in ipairs(product) do
productWiki = productWiki..v..'<span style="cursor:default; -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; -o-user-select:none; user-select:none;">&emsp;</span>'
end

return productWiki
end

function module.charaBlock(frame)
local args = getArgs(frame)
return module._charaBlock(args)
end

return module

导航菜单