모듈:템플릿 호출/샌드박스

Module
-- 이 모듈에서는 MediaWiki 템플릿을 호출하는 기능을 제공합니다.  현지의 체크 타입 = 요구하다('라이브러리 유틸').체크 타입  현지의 p = {}  ------------------------------------------------------------------------ -- 이름 : p.name --목적:페이지 이름 또는 에서 템플릿 호출 이름을 찾습니다. -- mw.disc 오브젝트. -- 설명:이 함수는 문자열 또는 mw.title 중 하나를 검출합니다. -- 객체가 전달되었으며, 이를 사용하여 다음 명령어를 찾습니다. -- 템플릿 호출에 사용되는 템플릿 이름. -- 파라미터: title :제목 - 풀페이지명 또는 mw.title 오브젝트 -- template (string 또는 mw.disc 오브젝트) -- 반환:스트링 ------------------------------------------------------------------------  기능. p.이름.(직함)  한다면 유형(직함) == '문자열 그리고나서   직함 = .직함.신규(직함)   한다면 것은 아니다. 직함 그리고나서    에러("함수 'name'의 매개 변수 #1에 제목 추가", 2)   끝.  그렇지 않으면 유형(직함) ~= '테이블' 또는 유형(직함.컨텐츠의 취득) ~= '기능' 그리고나서   에러("함수 'name'의 매개 변수 #1은 문자열 또는 mw.disc 객체여야 합니다.", 2)  끝.  한다면 직함.네임스페이스 == 10 그리고나서   돌아가다 직함.본문  그렇지 않으면 직함.네임스페이스 == 0 그리고나서   돌아가다 ':' .. 직함.프리픽스본문  또 다른   돌아가다 직함.프리픽스본문  끝. 끝.  ------------------------------------------------------------------------ -- 이름 : p.invocation --목적:MediaWiki 템플릿 호출을 구성합니다. -- 설명:이 함수는 에서 템플릿을 호출합니다. -- 이름 및 지정된 인수.주의: 그렇지 않습니다. --완벽하다: 공백이 무엇이었는지 알 길이 없다. -- 원래 호출에서는 지정된 파라미터는 -- 알파벳 순으로 정렬되어 있으며 중복된 키가 있는 매개 변수 --가 삭제됩니다. -- Parameters: name - 템플릿 이름, 표시되는 대로 형식 지정 --호출에 있습니다.(문자열) --args - 템플릿 인수 테이블.(표) -- format - 포맷 옵션.(문자열, 옵션) -- "nowiki"로 설정하여 이스케이프, 컬리 브레이스, 파이프 및 -- HTML 엔티티와 같은 기호입니다.디폴트 --는 이스케이프되지 않습니다. -- 반환:스트링 ------------------------------------------------------------------------  기능. p.호출(이름., args, 포맷)  체크 타입(기동'부팅'', 1, 이름., '문자열)  체크 타입(기동'부팅'', 2, args, '테이블')  체크 타입(기동'부팅'', 3, 포맷, '문자열, 진실의)   -- args 테이블을 검증하고 작업할 복사본을 만듭니다.우리는 할 필요가 있다  -- 원본을 사용하는 것이 아니라 표의 복사본을 만듭니다.  -- 호출을 빌드할 때 일부 값이 지워질 수 있습니다.  현지의 인바그 = {}  위해서 k, v  쌍들(args) 하다   현지의 타이프 = 유형(k)   현지의 타입 V = 유형(v)   한다면 타이프 ~= '문자열 그리고. 타이프 ~= '숫자'    또는 타입 V ~= '문자열 그리고. 타입 V ~= '숫자'   그리고나서    에러(파라미터 #2의 인수테이블을 지정합니다. ..    호출(키와 값은 문자열 또는 숫자여야 함), 2)   끝.   인바그[k] = v  끝.   -- 사용할 구분자를 가져옵니다.  현지의 셉스 = {   열리다 = '{{',   닫다 = '}}',   파이프 = ' ',   동등. = '='  }  한다면 포맷 == '노우키 그리고나서   위해서 k, v  쌍들(셉스) 하다    셉스[k] = .본문.노우키(v)   끝.  끝.   -- 먼저 arg를 번호가 매겨진 호출 본문을 작성한 후 이름을 붙입니다.  현지의 리트 = {}  리트[#리트 + 1] = 셉스.열리다  리트[#리트 + 1] = 이름.  위해서 k, v  아이페어(인바그) 하다   한다면 유형(v) == '문자열 그리고. v:발견하다('=', 1, 진실의) 그리고나서    -- 1=foo=bar와 같이 이름 있는 arg로 해야 합니다.    브레이크.   끝.   리트[#리트 + 1] = 셉스.파이프   리트[#리트 + 1] = v   인바그[k] = 제로 -- 값을 두 번 추가하지 않도록 키를 지웁니다.  끝.  현지의 invArgs_list = {} -- 파라미터 목록 정렬. 무작위로 정렬된 출력보다 선호됩니다.  위해서 k, v  쌍들(인바그) 하다   invArgs_list[#invArgs_list + 1] = 스트링(k)  끝.  table.displaces(invArgs_list)  위해서 i, v  아이페어(invArgs_list) 하다 -- 정렬된 매개 변수 목록을 기반으로 이름 있는 arg 추가   리트[#리트 + 1] = 셉스.파이프   리트[#리트 + 1] = v   리트[#리트 + 1] = 셉스.동등.   리트[#리트 + 1] = 인바그[v]  끝.  리트[#리트 + 1] = 셉스.닫다   돌아가다 table.concat(리트) 끝.  돌아가다 p