모듈:루아콜/샌드박스
Module| 모듈에 대한 모듈 샌드박스 페이지입니다.LuaCall(diff). 테스트 사례(실행)는 동반자 하위 페이지도 참조하십시오. |
| 이 모듈은 알파 등급입니다.타사 입력에 사용할 준비가 되어 있으며, 문제가 발생하는지 확인하기 위해 몇 페이지에서 사용할 수 있지만 지켜봐야 합니다.새로운 기능에 대한 제안이나 입력 및 출력 메커니즘의 변경을 환영합니다. |
이 모듈을 사용하면 사전 설치된 단일 Lua 함수를 호출할 수 있으므로 원하는 하나의 기능에 대한 모듈을 작성할 필요가 없습니다.
사용.
주된
{{#invoke:LuaCall main arbitrary variables parameters functioncall}}
그arbitrary variables당신이 선택한 열쇠는 무엇입니까?=당신이 선택한 모든 가치.값은 다음을 제외하고 문자열로 해석됩니다.tonumber(value)그렇지 않은nil즉, 숫자를 숫자 형식으로 변환해야 합니다.테이블을 해석하기 위해 노력하지 않습니다.
그parameters모든 것이 시작되는reserved_임의 변수가 사용해야 합니다.
reserved_return함수에서 원하는 출력을 설정하고 기본값은 1입니다.예를 들어 mw.ustring.gsub의 경우 2로 설정하면 교체 횟수가 반환됩니다.reserved_debug0이 아닌 값은 특별히 유용하지 않은 디버그 텍스트를 강제로 표시합니다.
그functioncall라고 쓰여 있습니다.some.function.name(a,b,c)어디에some.function.name확장명에서 의미하는 바:Scribunto/Lua 참조 매뉴얼 및a,b,c선택한 임의 변수 이름입니다.
예
주된
{{#invoke:LuaCall main a=test b=7 string.rep(a,b)}}테스트 테스트 테스트 테스트 테스트 테스트 테스트{{#invoke:LuaCall main pattern=(%a) replace=%1. string=I can't get no satisfaction mw.ustring.gsub(string,pattern,replace) reserved_return=1}}I.C.A.N.E.T.N.O.S.A.T.I.F.A.C.T.I.O.N.{{#invoke:LuaCall main pattern=(%a) replace=%1. string=I can't get no satisfaction mw.ustring.gsub(string,pattern,replace) reserved_return=2}}→ 22{{#invoke:LuaCall main value=1.4512 math.ceil(value)}}→ 2{{#invoke:LuaCall main value=1.4512 math.modf(value)}}→ 1{{#invoke:LuaCall main value=1.4512 math.modf(value) reserved_return=2}}→ 0.4512{{#invoke:LuaCall main mw.text.nowiki(s) s={{URL 1=https://www.Amazon.com/}}}}<span class="url">[https://www.Amazon.com/ www<wbr/>http<wbr/>com]</span>
불러
{{#invoke:LuaCall call string.format %04x 127}}007f{{#invoke:LuaCall call math.modf 1.4512}}→ 1{{#invoke:LuaCall call math.modf 1.4512 return=2}}→ 1
오류
모듈에서 스크립트 오류가 발생할 수 있습니다. 호출이 유효한 Lua 코드가 아닐 때마다 일반적으로 발생할 수 있는 오류가 표시됩니다.예를들면,
{{#invoke:LuaCall main value=1.4512 math.fmod(value)}}모듈의 Lua 오류:36행의 LuaCall: 잘못된 인수 #2에서 'reserved_call'(예상된 수, 값을 받지 못함).
두 번째 값이 부족하기 때문입니다.이것들을 함정에 빠뜨리려는 노력은 없습니다.
현지의 p={} 기능. p.주된(틀) 현지의 부모=틀.상위 항목 가져오기(틀) 또는 {} 현지의 reserved_value={} 현지의 reserved_function,예약된 위해서 k,v 에 쌍들(부모.논병아리 또는 {}) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 _G[k]=수에 달하여(v) 또는 v 모든 매개 변수를 전역 변수 테이블로 직접 전송 끝. 위해서 k,v 에 쌍들(틀.논병아리 또는 {}) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 _G[k]=수에 달하여(v) 또는 v 모든 매개 변수를 전역 변수 테이블로 직접 전송 끝. 에 따르면 알라스 스크리분토는 코루틴을 구현하지 않습니다. --- http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format 이것은 우리가 하나의 형편없는 함수 호출을 구현하려는 것을 막지 못할 것입니다. 한다면 _G[1] 그리고나서 reserved_function,예약된=mw.ustring.경기(_G[1],"^%s*(%a[^%s%(*)%([^%]*)%)%s*$") 끝. 한다면 예약된 그리고나서 현지의 예약 카운터=0 따라하다 예약 카운터=예약 카운터+1 reserved_value[예약 카운터]=_G[mw.ustring.경기(예약된,"([^%,]+)")] 예약된=mw.ustring.경기(예약된,"[^%,]+,(.*)$") 까지 것은 아니다. 예약된 끝. 현지의 reserved_array 부품=_G 하는 동안에 mw.ustring.경기(reserved_function,"%.") 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 reserved_function 부품,reserved_function=mw.ustring.경기(reserved_function,"^(%a[^%]*)%(*)$") reserved_array 부품=reserved_array 부품[reserved_function 부품] 끝. 현지의 예약_통화=reserved_array 부품[reserved_function] 한다면 유형(예약_통화)~="함수" 그리고나서 돌아가다 끈으로 묶는(예약_통화) 또 다른 예약 출력={예약_통화(짐을 풀다(reserved_value))} 돌아가다 예약 출력[예약_반품 또는 1] 끝. 끝. 현지의 기능. tonumberOrString(v) 돌아가다 수에 달하여(v) 또는 v:gsub("^\\", "", 1) 끝. 현지의 기능. TonnumberOrStringOn 쌍으로 호출(f, ...) 현지의 논병아리 = {} 위해서 _, v 에 ... 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 표.삽입(논병아리, tonumberOrString(v)) 끝. 돌아가다 (f(짐을 풀다(논병아리))) 끝. --[[ ------------------------------------------------------------------------------------ ipairsAtOffset 이것은 배열을 위한 반복기입니다.쌍처럼 사용할 수 있지만, 다음과 같이 사용합니다. i를 반복할 첫 번째 인덱스로 지정했습니다.i는 1로부터의 오프셋입니다. -- ------------------------------------------------------------------------------------ --]] 현지의 기능. ipairsAtOffset(t, i) 현지의 f, s, i0 = 짝을 짓다(t) 돌아가다 f, s, i0+i 끝. 현지의 기능. 얻다(s) 현지의 G = _G; 위해서 _ 에 mw.본문.갈라진( mw.본문.다듬다(s, '%s'), '%s*%s*' ) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 G = G[_] 끝. 돌아가다 G 끝. --[[ ------------------------------------------------------------------------------------ 콜 -- 이 함수는 일반적으로 템플릿 매개 변수를 디버깅하는 데 유용합니다. 매개 변수를 문자열로 해석하려면 백슬래시(\)를 사용하는 접두사 매개 변수입니다. Lua 함수에 전달되기 전에 선행 백슬래시가 제거됩니다. -- 예: {{#선택사항:LuaCall 호출 mw.loga12 3}: mw.log('a', 1, 2, 3)의 결과를 반환합니다. {{#선택사항:LuaCall mw.logObject \a321 \321 \321}을(를) 호출하면 mw.logObject('a', 321, '321', '\321')의 결과가 반환됩니다. -- 다음 예제에서는 템플릿 매개 변수에 사용할 수 있는 유니코드 문자를 확인하는 디버깅을 보여 줍니다. {{#선택사항:LuaCall mw.ustring.codepoint {{#invoke:LuaCall call mw.ustring.char 0x0061}}: 반품 97 {{#선택사항:LuaCall mw.ustring.codepoint {{#invoke:LuaCall 호출 mw.ustring.char 0x0000}}: 65533을 반환합니다. {{#선택사항:LuaCall mw.ustring.codepoint {{#invoke:LuaCall 호출 mw.ustring.char 0x0001}}: 반송 65533 {{#선택사항:LuaCall 호출 문자열입니다.형식 0x%04x{#filename:LuaCall mw.ustring.codepoint {{#invoke:LuaCall 호출 mw.ustring.char 0x0002}}}: 0xfffd 반환 {{#선택사항:LuaCall 호출 문자열입니다.형식 0x%04x{#filename:LuaCall mw.ustring.codepoint {{#invoke:LuaCall 호출 mw.ustring.char 0x007e}}}: 반품 0x007e {{#선택사항:LuaCall 호출 문자열입니다.형식 0x%04x{#filename:LuaCall mw.ustring.codepoint {{#invoke:LuaCall 호출 mw.ustring.char 0x007f}}}: 반품 0x007f {{#선택사항:LuaCall 호출 문자열입니다.형식 0x%04x{#filename:LuaCall mw.ustring.codepoint {{#invoke:LuaCall 호출 mw.ustring.char 0x0080}}}: 반품 0x0080 {{#선택사항:LuaCall 호출 문자열입니다.형식 0x%04x{#filename:LuaCall mw.ustring.codepoint {{#invoke:LuaCall 호출 mw.ustring.char 0x00a0}반환 0x00a0 -- ------------------------------------------------------------------------------------ --]] 기능. p.불러(틀) 돌아가다 TonnumberOrStringOn 쌍으로 호출(얻다(틀.논병아리[1]), ipairsAtOffset(틀.논병아리, 1) ) 끝. --localTableTools = required('모듈:테이블 도구') --[[ ------------------------------------------------------------------------------------ 손에 넣다 -- 예: {{#선택사항:LuaCall get math.pi }: math.pi의 값을 반환합니다. {{#선택사항:LuaCall get math pi}: 함수 값을 반환합니다.pi {{#선택사항:LuaCall get math pi}: _G['math']의 값을 반환합니다.파이 {{#선택사항:LuaCall get _G math.pi}: _G['math.pi']의 값을 반환합니다. {{#선택사항:LuaCall getobj.a.5.c}}이(가) obj의 값을 반환합니다.a['5']c {{#선택사항:LuaCall getobja 5c}: obj.a[5]c의 값을 반환합니다. -- ------------------------------------------------------------------------------------ --]] 기능. p.얻다(틀) #frame.args는 이름 없는 수에 관계없이 항상 0을 반환합니다. 템플릿 매개 변수, 대신 수동으로 확인 한다면 틀.논병아리[2] == 영의 그리고나서 이 Args 스타일에 대해서는 번호를 매기지 마십시오. 항상 끈으로 취급합니다. so'obj.1'은 obj['1']보다 obj[1]를 의미합니다. 돌아가다 얻다(틀.논병아리[1]) 또 다른 현지의 G = _G 위해서 _, v 에 짝을 짓다(틀.논병아리) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 G = G[tonumberOrString(v)] 끝. 돌아가다 G 끝. 끝. --[[ ------------------------------------------------------------------------------------ 발동. -- 이 기능은 템플릿에서 사용됩니다.호출 -- ------------------------------------------------------------------------------------ --]] 기능. p.발동.(틀) 현지의 p프레임, 사용한 잔디 = 틀:상위 항목 가져오기(), {} 제공되지 않은 경우 상위 인수에서 모듈 및 함수 이름 가져오기 현지의 파그스 = 상을 차리다({틀.논병아리[1], 틀.논병아리[2]}, {__index = 테이블}) 한다면 것은 아니다. 파그스[1] 그리고나서 파그스[1], 사용한 잔디[1] = p프레임.논병아리[1], 진실의 한다면 것은 아니다. 파그스[2] 그리고나서 파그스[2], 사용한 잔디[2] = p프레임.논병아리[2], 진실의 끝. 또 다른 한다면 것은 아니다. 파그스[2] 그리고나서 파그스[2], 사용한 잔디[1] = p프레임.논병아리[1], 진실의 끝. 끝. 순차적인 인수를 다시 포장합니다. 위해서 i, v 에 짝을 짓다(p프레임.논병아리) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 한다면 것은 아니다. 사용한 잔디[i] 그리고나서 파그스:삽입하다(v) 사용한 잔디[i] = 진실의 끝. 끝. 다른 주장을 모방합니다. 위해서 k, v 에 쌍들(p프레임.논병아리) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 한다면 것은 아니다. 파그스[k] 그리고. 것은 아니다. 사용한 잔디[k] 그리고나서 파그스[k], 사용한 잔디[k] = v, 진실의 끝. 끝. # 부모 프레임을 분리하여 새 프레임이 동일한 부모 프레임을 갖도록 합니다. 돌아가다 p프레임:콜 파서 함수{이름. = '#dll', 논병아리 = 파그스} 끝. 돌아가다 p