本网站正在建设中(~ ̄▽ ̄)~
- 你好~!欢迎来到中文歌声合成个人收集站-VCPedia.cn!
- 若发现页面信息有误或投稿至本站,请联系管理员。
Module:CollectCodeData
跳到导航
跳到搜索
local module = {} local getArgs = require('Module:Arguments').getArgs local getCode = require('Module:GetPageCode') local array = require('Module:Var-array') function _main(args, frame) local pages = mw.text.split(args['pages'] or args[1] or '', ',') if #pages == 1 and pages[1] == '' then error('必须传入至少一个页面名!') end local ptns = args['ptns'] or args[2] local filter = array.get(args['filter']) or {} if ptns == nil then error('必须传入正则表达式!') end local split = args['split'] or args[3] or ',' if string.find(ptns, '^/.+/$') then ptns = { (string.gsub(ptns, '^/(.+)/$', '%1')) } else ptns = array.get(ptns) end local contents = '' for i, v in ipairs(pages) do local content = getCode(v) if content == nil then error('页面【'..v..'】或它所指向的页面未创建或无效!') end contents = contents..content end local result = {} for i, v in ipairs(ptns) do mw.ustring.gsub(contents, v, function(...) local ss = { ... } for i, v in ipairs(ss) do result[#result + 1] = v end end) end if type(filter[1]) == 'string' then for i, v in ipairs(result) do result[i] = mw.ustring.gsub(v, filter[1], filter[2] or '') end else for i, ptn in ipairs(filter) do for ind, val in ipairs(result) do result[ind] = mw.ustring.gsub(val, ptn[1], ptn[2] or '') end end end local resultStr = '' for i, v in ipairs(result) do resultStr = resultStr..v..split end split = string.gsub(split, '([%%%(%)%.%+%-%*%?%[%]%^%$])', '%%%1') return (string.gsub(resultStr, '^(.+)'..split..'$', '%1')) end function module.main(frame) local args = getArgs(frame) return _main(args, frame) end return module