모듈:LCGI
이 모듈에 대한 설명문서는 모듈:LCGI/설명문서에서 만들 수 있습니다
local p = {}
local tf = require('모듈:TemplateFunction')
local mergerule = {
inject = assign,
forward = assign,
private = push
}
function push(target, ...)
for newtbl in ipairs(...) do
if newtbl then
for value in ipairs(newtbl) do
table.insert(target, value)
end
end
end
return target
end
function assign(target, ...)
for newtbl in ipairs(...) do
if newtbl then
for key, value in pairs(newtbl) do
target[key] = value
end
end
end
return target
end
function p.scope(frame)
local source = frame.args[1]
local rawconfig = mw.text.jsonDecode('[' .. frame.args[2]:sub(1, -2) .. ']')
local config = {}
local rendered = ''
for _, payload in ipairs(rawconfig) do
local key = table.remove(payload, 1)
if config[key] == nil then
config[key] = {}
end
mergerule[key](config[key], payload[1])
end
rendered = tf.create(source):curry(config.inject)
if config.private then
rendered = rendered:finalize(config.private).source
else
rendered = rendered:forward(config.forward).source
end
return mw.html.create('span')
:attr('data-raw', source)
:attr('data-config', mw.jsonEncode(config))
:wikitext(rendered)
:done()
end
return p