모듈:Mfunctions/설명문서: 두 판 사이의 차이

리버티게임(개발), 모두가 만들어가는 자유로운 게임
둘러보기로 이동 검색으로 이동
백괴게임>Gustmd7410
(새 문서: Lua 모듈에서 활용할 수 있는 임의의 파서 함수를 생성하고 파싱할 수 있는 모듈입니다. == 함수 테이블 생성 == <source lang="lua"> local tbl = requ...)
 
백괴게임>Gustmd7410
잔글 (→‎예제)
33번째 줄: 33번째 줄:


== 예제 ==
== 예제 ==
<code>#func#</code> 임의 함수가 <code>Hello, (변수1)!</code>을 출력할 때 <code>Hello, World!</code>를 출력하고자 할 경우
; <nowiki>모듈:Banana</nowiki>
; <nowiki>모듈:Banana</nowiki>
<source lang="lua">
<source lang="lua">

2018년 9월 28일 (금) 03:37 판

Lua 모듈에서 활용할 수 있는 임의의 파서 함수를 생성하고 파싱할 수 있는 모듈입니다.

함수 테이블 생성

local tbl = require('모듈:Mfunctions').new()

함수의 값을 저장하는 함수 테이블을 생성하려면 본 모듈의 new() 함수를 이용합니다. 미리 준비된 테이블이 있다면 첫번째 인자에 해당 테이블을 넣어서 파싱이 가능한 함수 테이블로 전환하실 수 있습니다.

local tbl = {}
tbl = require('모듈:Mfunctions').new(tbl)

함수 추가

임의 파서 함수를 파싱하려면 함수나 값을 함수 테이블에 추가해야 합니다. 함수 테이블에 직접 추가할 수 있지만, set() 함수를 사용할 것을 권장합니다.

tbl:set('함수a' function(frame)
    ...
end):set('함수b', '값b')

set() 함수는 메소드 체이닝을 지원하여 여러 함수를 인라인으로 한번에 추가할 수 있습니다. 함수의 경우 프레임을 인자로 받아 모듈과 같이 만드실 수 있습니다. 특별한 계산이 필요없고 값이 변하지 않을 경우 해당 값을 직접 입력할 수 있습니다. 단, 테이블은 지원하지 않습니다.

함수 사용

{{#(함수명)#:(변수값1)|(변수값2)|(변수a)=(값a)|(변수b)=(값b)|...}}

임의 파서 함수 문법은 일반 파서 함수와 비슷합니다. 다만 함수명의 앞뒤에 #을 붙여야 합니다.

<nowiki>{{#switch:{{#expr:{{#func#}} - 1}}|0=ㄹ|9=ㄹㄹ|42=ㄹㄹㄹ|300=ㄹㄹㄹㄹ}}</nowiki>

만약 임의 함수를 파서 함수나 틀과 함께 사용하고, 결과에 영향을 끼칠 경우에는 <nowiki>로 묶어 주어야 합니다.

문법 파싱

tbl:parse(frame.args[1])

함수 테이블의 parse() 함수를 사용해서 함수 테이블에 정의된 규칙대로 인자의 텍스트를 파싱합니다.

예제

모듈:Banana
local p = {}

function p.example(frame)
    return require('모듈:Mfunctions'):set('func', function(frame)
        return 'Hello, ' .. frame.args[1] .. '!'
    end):parse(frame.args[1])
end

return p
입력
{{#invoke:Banana|example|{{#func#:World}}}}
출력
Hello, World!