모듈:Pipeline: 두 판 사이의 차이
편집 요약 없음 |
편집 요약 없음 |
||
1번째 줄: | 1번째 줄: | ||
local p = {} | local p = {} | ||
local tf = require('모듈:TemplateFunction') | local tf = require('모듈:TemplateFunction') | ||
local passSuffix = 'pipe-passed-data' | |||
local passSuffixPattern = 'pipe%-passed%-data' | |||
function p.whole(frame) | function p.whole(frame) | ||
local returned = nil | local returned = nil | ||
local passed = nil | |||
for _, source in ipairs(frame.args) do | for _, source in ipairs(frame.args) do | ||
local title = mw.title.new(source, 'Template') | local title = mw.title.new(source, 'Template') | ||
returned = title and title.exists | returned = title and title.exists | ||
and tf.load(source) | and tf.load(source):parse(passed) | ||
or tf.create(source):parse | or tf.create(source):parse(passed) | ||
passed = mw.text.jsonDecode(returned:match('<includeonly ' .. passSuffixPattern .. '>(.-)</includeonly' .. passSuffixPattern.. '>')) | |||
returned = returned:gsub('<includeonly ' .. passSuffixPattern .. '>.-</includeonly ' .. passSuffixPattern .. '>', '') | |||
end | end | ||
return returned | return returned | ||
end | |||
function p.pass(frame) | |||
return '<includeonly ' .. passSuffix .. '>' | |||
.. mw.text.jsonEncode(frame.args) | |||
.. '</includeonly ' .. passSuffix .. '>' | |||
end | end | ||
return p | return p |
2023년 11월 25일 (토) 23:07 판
이전 값에 종속되는 여러 틀을 연속적으로 실행합니다. 이를 통해 복잡한 로직을 함수형으로 구현하거나 중첩된 틀을 가독성 좋게 바꿀 수 있습니다.
사용법
code_blocks 코드
{{#invoke:Pipeline|pipe
|{{#invoke:pipeline|pass|9|a=10}}11
|<nowiki>{{#expr:{{{1}}}+{{{a}}}+{{RETURNED}}}}</nowiki>
}}
code
description 결과
스크립트 오류: 함수 "pipe"가 존재하지 않습니다.
이전에 실행된 함수의 값을 RETURNED 상수를 통해 통째로 다음 함수에 넘겨줍니다. pass 함수를 활용하여 여러 값을 넘겨줄 수 있습니다.
위 설명은 모듈:Pipeline/설명문서의 내용을 가져와 보여주고 있습니다. (편집 | 역사) 이 모듈에 대한 수정 연습과 시험은 연습장 (만들기 | 미러)과 시험장 (만들기)에서 할 수 있습니다. 분류는 /설명문서에 넣어주세요. 이 모듈에 딸린 문서. |
local p = {}
local tf = require('모듈:TemplateFunction')
local passSuffix = 'pipe-passed-data'
local passSuffixPattern = 'pipe%-passed%-data'
function p.whole(frame)
local returned = nil
local passed = nil
for _, source in ipairs(frame.args) do
local title = mw.title.new(source, 'Template')
returned = title and title.exists
and tf.load(source):parse(passed)
or tf.create(source):parse(passed)
passed = mw.text.jsonDecode(returned:match('<includeonly ' .. passSuffixPattern .. '>(.-)</includeonly' .. passSuffixPattern.. '>'))
returned = returned:gsub('<includeonly ' .. passSuffixPattern .. '>.-</includeonly ' .. passSuffixPattern .. '>', '')
end
return returned
end
function p.pass(frame)
return '<includeonly ' .. passSuffix .. '>'
.. mw.text.jsonEncode(frame.args)
.. '</includeonly ' .. passSuffix .. '>'
end
return p