모듈:템플릿 래퍼/샌드박스

Module
요구하다('''비공식''');  현지의 error_msg = '<스판 스타일=\"글꼴 크기:100%\"클래스 =\"오류\"><코드 스타일=\"색상:보더; 테두리:보더;패딩:보더;\">&#124;_code=</code>가 없거나 비어 있습니다.';   --[--------------------------< IS _ IN _ TABLE >--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  tbl을 통해 값을 검색합니다. 찾으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.  ]]  현지의 기능. is_in_table (티블, 가치)     위해서 k, v  쌍들 (티블) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다         한다면 v == 가치 그리고나서 돌아가다 진실의 끝.     끝.     돌아가다 거짓의; 끝.   --[--------------------------< AD _ PARAM MEETER >----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  부울 목록 인수의 상태에 따라 매개 변수 이름과 값을 args 테이블에 추가합니다. kv 쌍: 템플릿 실행; 템플릿 목록에 대한 k=v 문자열입니다.  ]]  현지의 기능. add_매개 변수 (k, v, 논병아리, 목록.)  한다면 목록. 그리고나서   표.삽입( 논병아리, 테이블.콘캣 ({k, '=', v}));      매개 변수 이름 및 값을 Args 테이블에 문자열로 쓰기  또 다른   논병아리[k] = v;               매개 변수를 인수 테이블에 복사  끝. 끝.   --[--------------------------< ALIAS _ MAP _ GET >----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  로컬 템플릿(상위 프레임) 매개 변수 이름과 일치하는 대상 템플릿 이름의 테이블을 반환합니다. [key]=<value> 쌍으로, 여기서: [key]는 로컬 템플릿 매개 변수 이름(에일리어스)입니다. <value>는 대상 템플릿 매개 변수 이름(작업 템플릿에서 사용되는 표준 매개 변수 이름)입니다.  매개 변수 _syslog-map=의 형식은 다음과 같습니다. _syslog-map=<list> 여기서 <list>는 형식의 별칭/정규 매개 변수 이름 쌍의 쉼표로 구분된 목록입니다. <from> : <to> 위치: <from>은 로컬 템플릿의 매개 변수 이름입니다. <to>는 대상 템플릿의 매개 변수 이름입니다. 열거된 매개 변수의 경우 열거자 숫자가 매개 변수 이름에 배치되는 옥타토르프(#)를 배치합니다. <from#> : <to#>  ]]  현지의 기능. alias_map_get (_map_map)  현지의 T = mw.본문.분열되다 (_map_map, '%s*,%s*');       쉼표로 구분된 목록을 별칭 쌍 테이블로 변환  현지의 mapped_mapped = {};             매핑된 별칭이 여기에 표시됩니다.  현지의 l_name, t_name;              매개 변수 이름    위해서 _, alias_message  짝을 짓다 (T) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다           별칭 쌍의 표를 반복하여 표시합니다.   l_name, t_name = alias_message:경기 ('(..)%s*:%s*(.+)');     각 쌍에서 로컬 및 대상 매개 변수 이름 가져오기   한다면 l_name 그리고. t_name 그리고나서            둘 다 설정되어 있는 경우    한다면 수에 달하여 (l_name) 그리고나서     l_name = 수에 달하여 (l_name);          텍스트로 숫자 변환    끝.    mapped_mapped[l_name] = t_name;         그것들을 지도표에 추가합니다.   끝.  끝.   돌아가다 mapped_mapped; 끝.   --[------------------------------< FAR ME _ ARGS _ GET >----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  래퍼 템플릿의 'default' 및 제어 매개 변수를 가져옵니다. 인수에 기본 매개 변수를 추가합니다.  _proxy= 매개 변수(작업 템플릿의 이름)의 내용을 반환합니다. 그렇지 않으면 0입니다.  ]]  현지의 기능. frame_args_get (frame_, 논병아리, 목록.)  현지의 템플릿;  현지의 모듈_;  현지의 함수_;   위해서 k, v  쌍들 (frame_) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다           여기서 래퍼 템플릿의 '기본' 매개 변수를 가져옵니다.   한다면 '끈' == 유형 (k) 그리고. (v 그리고. ('' ~= v)) 그리고나서      위치 매개 변수 또는 빈 매개 변수를 전달하지 않음    한다면 '_filen' == k 그리고나서     템플릿 = v;             포장 중인 템플릿 이름 저장    그렇지 않으면 '_filen' == k 그리고나서     모듈_ = v;             포장 중인 템플릿 이름 저장    그렇지 않으면 '_함수' == k 그리고나서     함수_ = v;    그렇지 않으면 '_filen' ~= k 그리고. '_filen' ~= k 그리고. '_직렬 위치' ~= k  그리고. '_syslog-map' ~= k 그리고나서 이들은 이미 처리되었으므로 여기서는 무시하십시오.     add_매개 변수 (k, v, 논병아리, 목록.);        리스트에 의해 지시된 스타일의 인수에 다른 모든 매개변수 추가    끝.   끝.  끝.   한다면 모듈_ == 영의 그리고. 함수_ == 영의 그리고나서   돌아가다 템플릿;  그렇지 않으면 모듈_ ~= 영의 그리고. 함수_ ~= 영의 그리고나서   돌아가다 모듈_, 함수_;  끝. 끝.   --[=[----------------------------< PRAM ME _ ARGS _ GET >----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  래퍼 템플릿의 '라이브' 매개 변수를 가져옵니다. 제외 테이블의 멤버가 아닌 라이브 매개 변수를 에 추가합니다. 인수 표, 위치 모수를 제외할 수 없음  반환가 없음  ]=]  현지의 기능. pframe_args_get (pframe_args, 논병아리, 제외한, _position_위치 지정, 목록.)  위해서 k, v  쌍들 (pframe_args) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   한다면 '끈' == 유형 (k) 그리고. 것은 아니다. is_in_table (제외한, k) 그리고나서   제외된 매개 변수를 전달하지 않음    한다면 v 그리고. ('' ~= v) 그리고나서            값이 할당된 매개 변수만 전달     한다면 '설정 취소' == v:더 낮게() 그리고나서         래퍼 템플릿에 설정된 '기본' 매개 변수를 설정 취소하는 특수 키워드      v = '';              인수 테이블의 값 설정 해제     끝.     add_매개 변수 (k, v, 논병아리, 목록.)        목록에서 지시하는 스타일의 인수에 다른 모든 매개 변수 추가, 로컬 변수 매개 변수에 대해서만 별칭 맵이 지원    끝.   끝.  끝.   한다면 _position_위치 지정 그리고나서   위해서 i, v  짝을 짓다 (pframe_args) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다          위치 매개 변수를 전달합니다.    한다면 '설정 취소' == v:더 낮게() 그리고나서          래퍼 템플릿에 설정된 '기본' 매개 변수를 설정 취소하는 특수 키워드     v = '';               인수 테이블의 값 설정 해제    끝.    add_매개 변수 (i, v, 논병아리, 목록.);   끝.  끝. 끝.   --[----------------------< MA IN >----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  다양한 기본 매개변수와 활성 매개변수를 부울 목록에 따라 스타일이 지정된 인수로 수집합니다.  오류 메시지에 대해 작업 중이거나 나열된 템플릿의 이름 또는 nil을 반환합니다.  ]]  현지의 기능. _본 (, 논병아리, 목록.)  현지의 템플릿;  현지의 fn_n이름;  현지의 제외한 = {};               작업 템플릿에 전달되지 않은 매개 변수의 매개 변수 이름 표  현지의 reuse_list = {};              동일한 이름으로 작업 템플릿에 전달되기 전에 값이 수정되는 pframe 매개 변수 이름 테이블  현지의 alias_map = {};              매개 변수 별칭을 작업 템플릿 표준 매개 변수 이름에 매핑하는 테이블  현지의 _position_위치 지정;    한다면 .논병아리._지루한 그리고. ('' ~= .논병아리._지루한) 그리고나서     _filename=이 있고 비어 있지 않은 경우   제외한 = mw.본문.분열되다 (.논병아리._지루한, %s*,%s*");    그 내용으로 표를 만들다.  끝.                     TODO: _beta=에는 더 나은 이름이 필요합니다(_beta=).  한다면 .논병아리._지루한 그리고. ('' ~= .논병아리._지루한) 그리고나서     _filename=이 있고 비어 있지 않은 경우   reuse_list = mw.본문.분열되다 (.논병아리._지루한, %s*,%s*");    그 내용으로 표를 만들다.  끝.   한다면 .논병아리['_syslog-map'] 그리고. ('' ~= .논병아리['_syslog-map']) 그리고나서  _syslog-map=이 있고 비어 있지 않은 경우   alias_map = alias_map_get (.논병아리['_syslog-map']);     그 내용으로 표를 만들다.  끝.   템플릿, fn_n이름 = frame_args_get (.논병아리, 논병아리, 목록.);    {{#backets:backets wrapper...}}에 제공 매개 변수를 가져옵니다.  한다면 영의 == 템플릿 또는 '' == 템플릿 그리고나서         이것은 이 모듈에 필요한 하나의 매개 변수입니다.   돌아가다 영의;                존재하지 않습니다. 호출 함수에 오류 메시지를 내보내라고 말합니다.  끝.    _position_위치 지정 = '예' == .논병아리['_직렬 위치'];   true인 경우 모든 위치 매개 변수와 함께 명명되지 않은 매개 변수를 ...에 전달합니다.                     ... 작업 템플릿, 위치 매개 변수는 제외할 수 없습니다.                       현지의 _pframe_인수 = :상위 항목 가져오기().논병아리;        여기서 우리는 pframe.args에서 래퍼 템플릿의 '라이브' 매개 변수를 가져옵니다.  현지의 pframe_args = {};              우리가 수정할 수 있는 로컬 테이블   위해서 k, v  쌍들 (_pframe_인수) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다           우리가 수정할 수 있는 복사본을 만듭니다.   pframe_args[k] = v;  끝.   여기서 우리는 표준 매개 변수 이름의 별칭인 pframe 매개 변수를 찾습니다; 발견될 때 별칭을 표준으로 대체합니다.여기서 이 작업을 수행하는 이유는 reuse_list가 다음에 대해 작동하기 때문입니다. 표준 매개 변수 이름. 먼저 별칭 매개 변수 이름을 표준 이름으로 변환한 다음 우리는 재사용되는 (작업에 제공되는) pframe 테이블에서 표준 이름을 제거합니다. 프레임 인수 테이블을 통한 템플릿)   위해서 k, v  쌍들 (alias_map) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다           k는 별칭 이름, v는 표준 이름입니다.   한다면 pframe_args[k] 그리고나서             pframe_args에 별칭 이름을 가진 매개 변수가 있는 경우    pframe_args[v] = _pframe_인수[k];         별칭 값을 사용하여 새 표준 이름 생성    pframe_args[k] = 영의;            가명을 해제합니다.   끝.  끝.   위해서 k, v  쌍들 (pframe_args) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다           열거된 매개 변수 별칭 -> 표준 변환을 수행합니다.   한다면 '끈' == 유형 (k) 그리고나서           명명된 매개 변수만 열거할 수 있습니다.    한다면 alias_map[k..'#'] 그리고나서           재생성되지 않은 별칭이 열거된 매개 변수 패턴과 일치합니까?끝에만 열거자     pframe_args[alias_map[k..'#']:gsub('#', '')] = v;    '#'을(를) 제거하고 매개 변수를 pframe_args 테이블에 복사합니다.     pframe_args[k] = 영의;           가명을 해제합니다.    그렇지 않으면 k:경기 ('%d+') 그리고나서           이 매개 변수 이름에 숫자가 포함된 경우     현지의 임시의 = k:gsub ('%d+', '#');        복사본 만들기, 숫자가 단일 '#'으로 대체됨     현지의 열거형의 = k:경기 ('%d+');         열거자를 가져옵니다.          한다면 alias_map[임시의] 그리고나서           이 매개 변수가 인식된 열거형 별칭인 경우      pframe_args[alias_map[임시의]:gsub('#', 열거형의)] = v;   표준 이름을 사용하고 '#'을 열거자로 바꾸고 pframe_args에 추가합니다.      pframe_args[k] = 영의;          가명을 해제합니다.     끝.    끝.   끝.  끝.  _frame'인 pframe 매개 변수의 형식은 다음과 같습니다. chapter=sysis 소스:{{{property}}{{property}}] 여기서 래핑 템플릿의 매개 변수가 수정된 다음 작업 템플릿으로 전달됩니다. 동일한 파라미터 이름 사용(이 예에서는 =)                      재사용될 매개 변수 제거  위해서 k, v  짝을 짓다 (reuse_list) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다           k는 숫자 인덱스이고 v는 무시할 표준 매개 변수 이름입니다.   한다면 pframe_args[v] 그리고나서             pframe_args에 무시해야 하는 매개 변수가 있는 경우    pframe_args[v] = 영의;            무시된 매개 변수 설정 해제   끝.  끝.   pframe_args_get (pframe_args, 논병아리, 제외한, _position_위치 지정, 목록.); 제외 테이블에 나열되지 않은 인수에 매개 변수 및 값 추가   돌아가다 템플릿, fn_n이름;               args에 모든 기본 및 활성 매개 변수가 있음, 작업 템플릿 이름 반환 끝.   --[----------------------< W AP >----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  템플릿 진입점입니다.이 함수를 호출하여 작업 템플릿을 '실행'합니다.  ]]  현지의 기능. 싼다 ()  현지의 논병아리 = {};               래핑된 템플릿에 전달될 기본 및 활성 매개 변수와 해당 값의 표  현지의 템플릿;                작업 템플릿의 이름  현지의 fn_n이름;   템플릿, fn_n이름 = _본 (, 논병아리, 거짓의);        기본 및 활성 매개 변수와 작업 템플릿의 이름 가져오기  한다면 것은 아니다. 템플릿 그리고나서              템플릿 이름이 필요합니다.   돌아가다 error_msg;              오류 메시지를 보내고 템플릿 이름이 없는 경우 포기  끝.   한다면 fn_n이름 == 영의 그리고나서   돌아가다 :확장템플릿 {제목=템플릿, 논병아리=논병아리};    작업 템플릿 렌더링  또 다른   현지의 새 프레임 = {       상위 항목 가져오기 = 기능.(자신)        돌아가다        끝.,       논병아리 = 논병아리,   };   상을 차리다(새 프레임, {    __index = 기능.(t, k)     한다면 유형([k]) == '함수' 그리고나서      돌아가다 기능.(...)       돌아가다 [k](, 선택한다.(2, ...))      끝.     또 다른      돌아가다 [k]     끝.    끝.   })   돌아가다 요구하다('모듈:' .. 템플릿)[fn_n이름](새 프레임)  끝. 끝.   --[------------------------< LI ST >--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  템플릿 진입점입니다.이 함수를 호출하여 작업 템플릿의 소스를 '표시'합니다.이 기능이 추가되었습니다. TfD의 결과로 여기: 위키피디아:Templates_for_discusion/Log/2018_April_28# 모듈:인수 전달  이 기능은 {{cite compare}}, {{cite compare2}}에서 사용되었던 유사한 이름의 기능을 대체합니다.  인수 테이블의 값은 'name=value' 형식의 숫자로 인덱싱된 문자열입니다.  ]]  현지의 기능. 목록.(, do_link)  현지의 논병아리 = {};      나열된 템플릿에 전달될 기본 및 활성 매개 변수와 해당 값의 표  현지의 템플릿;       나열된 템플릿의 이름   템플릿 = _본 (, 논병아리, 진실의); 기본 및 활성 매개 변수와 나열된 템플릿의 이름을 가져옵니다.  한다면 것은 아니다. 템플릿 그리고나서     템플릿 이름이 필요합니다.   돌아가다 error_msg;     오류 메시지를 보내고 템플릿 이름이 없는 경우 포기  끝.  한다면 do_link 그리고나서   템플릿 = ('[%s %s]'):서식을(:확장템플릿{ 제목='결론', 논병아리 = {템플릿} }, 템플릿)  끝.  테이블. 테이블.(논병아리)  위해서 i = 1, #논병아리 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   현지의 옷을 벗은 = 논병아리[i]:경기('^' .. i .. '=([^=]*)
                
) 한다면 옷을 벗은 그리고나서 논병아리[i] = 옷을 벗은 또 다른 브레이크. 끝. 끝. 돌아가다 :전처리(테이블.콘캣({ '<code style="color:color; background:color; border:color;">&#123;&#123;', 템플릿, ('<wbr><nowiki> %s </nowiki>):대리인(#논병아리):서식을(짐을 풀다(논병아리)), '&#125;&#125;</code>'})); 템플릿을 렌더링합니다. 끝. 현지의 기능. 링크 () 돌아가다 목록.(, 진실의) 끝. --[------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ]] 돌아가다 { 링크 = 링크, 목록. = 목록., 싼다 = 싼다, };