모듈:CSSVars
이 모듈에 대한 설명문서는 모듈:CSSVars/설명문서에서 만들 수 있습니다
local p = {}
function p.set(frame)
-- 1. 본문 직접 호출({{#invoke:}})과 틀 경유 호출({{틀이름|...}}) 인자를 모두 병합
local args = {}
local parentArgs = frame:getParent().args
local directArgs = frame.args
-- 본문 호출 인자 먼저 담기
for k, v in pairs(directArgs) do args[k] = v end
-- 틀 호출 인자로 덮어쓰기 (틀 인자가 우선순위가 높음)
for k, v in pairs(parentArgs) do args[k] = v end
local vars = {}
for k, v in pairs(args) do
local val = mw.text.trim(v or '')
if val ~= '' then
vars[k] = val
end
end
-- 디버깅용: 인자가 여전히 없다면 에러 메시지 출력
if next(vars) == nil then
return '<span class="mw-page-css-vars-error" style="color:red;">[CSSVars] 인자가 전달되지 않았습니다. {{#invoke:모듈|set|key=value}} 형태로 입력했는지 확인하세요.</span>'
end
local json = mw.text.jsonEncode(vars)
-- mw.text.tag를 사용하는 것이 가장 안전하게 HTML을 생성하는 방법입니다.
return mw.text.tag('span', {
class = 'mw-page-css-vars',
['data-vars'] = json,
style = 'display:none;'
}, ' ') -- 빈 칸 하나를 넣어 태그 유실 방지
end
return p