모듈:템플릿 테스트 케이스/샌드박스

Module
--[[ 테스트 케이스 템플릿을 생성하기 위한 모듈입니다.  이 모듈에는 영어 위키피디아 "테스트 사례 표"의 코드가 포함되어 있습니다. 모듈, [1] Frietjes [2]에 의해 작성되었으며 Stradivarius [3]에 의해 기고되었다. Jackmcbarn, [4] 및 영어 위키피디아의 "테스트 케이스 행" 모듈, [5] 스트라디바리우스 씨가 썼죠  '테스트케이스 테이블' 및 '테스트케이스 행' 모듈은 CC BY-SA 3.0 라이선스[ 6 ]및 GFDL.[ 7 ]  라이선스: CC BY-SA 3.0 및 GFDL 작성자: Mr. Stradivarius  [1] https://en.wikipedia.org/wiki/Module:Testcase_table [2] https://en.wikipedia.org/wiki/User:Frietjes [3] https://en.wikipedia.org/wiki/User:Mr._Stradivarius [4] https://en.wikipedia.org/wiki/User:Jackmcbarn [5] https://en.wikipedia.org/wiki/Module:Testcase_rows [6] https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License [7] https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License ]]  -- 필요한 모듈을 로드합니다. 현지의 네, 아니요 = 요구하다('모듈:네, 아니요.)  -- 상수 설정 현지의 데이터 모듈 = '모듈:템플릿 테스트 케이스/데이터'  ------------------------------------------------------------------------------- -- 공유 메서드 -------------------------------------------------------------------------------  현지의 기능. 메세지(자신, 열쇠, ...)  -- 이 메서드는 에서 메시지를 처리해야 하는 클래스에 추가됩니다.  -- config module 。  현지의 메시지 = 자신.cfg.메시지[열쇠]  한다면 선택한다.(1, ...) 그리고나서   돌아가다 .메세지.new Raw Message(메시지, ...):평지()  또 다른   돌아가다 메시지  끝. 끝.  ------------------------------------------------------------------------------- -- 템플릿 클래스 -------------------------------------------------------------------------------  현지의 템플릿 = {}  템플릿.메모화된 방법 = {  -- 각 오브젝트에 메모하는 메서드의 이름.이 테이블은 다음과 같은 경우에만 사용할 수 있습니다.  -- 파라미터 없이 메서드를 유지합니다.  get Full Page(풀페이지) = 진실의,  getName = 진실의,  makeheader(makeheader) = 진실의,  getoutput = 진실의 }  기능. 템플릿.신규(호출 Obj, 옵션들)  현지의 obj = {}   -- 입력 설정  위해서 k, v  쌍들(옵션들 또는 {}) 하다   한다면 것은 아니다. 템플릿[k] 그리고나서    obj[k] = v   끝.  끝.  obj.호출 = 호출 Obj   -- 입력 확인  한다면 것은 아니다. obj.템플릿 그리고. 것은 아니다. obj.직함 그리고나서   에러('템플릿 또는 제목이 지정되지 않았습니다.', 2)  끝.   -- 고가의 메서드 호출 메모 작성  현지의 메모 펑크 = {}  돌아가다 설정 가능한(obj, {   __인덱스 = 기능. (t, 열쇠)    한다면 템플릿.메모화된 방법[열쇠] 그리고나서     현지의 기능하다 = 메모 펑크[열쇠]     한다면 것은 아니다. 기능하다 그리고나서      현지의  = 템플릿[열쇠](t)      기능하다 = 기능. () 돌아가다  끝.      메모 펑크[열쇠] = 기능하다     끝.     돌아가다 기능하다    또 다른     돌아가다 템플릿[열쇠]    끝.   끝.  }) 끝.  기능. 템플릿:get Full Page(풀페이지)()  한다면 것은 아니다. 자신.템플릿 그리고나서   돌아가다 자신.직함.프리픽스본문  그렇지 않으면 자신.템플릿:후보선수(1, 7) == '#자세히' 그리고나서   돌아가다 '모듈' .. 자신.템플릿:후보선수(8):서브(' .*', '')  또 다른   현지의 스트립 템플릿, 하스콜론 = 자신.템플릿:서브('^:', '', 1)   하스콜론 = 하스콜론 > 0   현지의 ns = 스트립 템플릿:경기('^(.-):')   ns = ns 그리고. .위치.네임스페이스[ns]   한다면 ns 그리고나서    돌아가다 스트립 템플릿   그렇지 않으면 하스콜론 그리고나서    돌아가다 스트립 템플릿 -- 메인 네임스페이스   또 다른    돌아가다 .위치.네임스페이스[10].이름. .. ':' .. 스트립 템플릿   끝.  끝. 끝.  기능. 템플릿:getName()  한다면 자신.템플릿 그리고나서   돌아가다 자신.템플릿  또 다른   돌아가다 요구하다('모듈:템플릿 호출').이름.(자신.직함)  끝. 끝.  기능. 템플릿:makeLink(메이크링크)(표시)  한다면 표시 그리고나서   돌아가다 string.format('[:%s %s]', 자신:get Full Page(풀페이지)(), 표시)  또 다른   돌아가다 string.format('[:%s]', 자신:get Full Page(풀페이지)())  끝. 끝.  기능. 템플릿:makeBraceLink(표시)  표시 = 표시 또는 자신:getName()  현지의 링크 = 자신:makeLink(메이크링크)(표시)  돌아가다 .본문.노우키('{{') .. 링크 .. .본문.노우키('}}') 끝.  기능. 템플릿:makeheader(makeheader)()  돌아가다 자신.표제 또는 자신:makeBraceLink() 끝.  기능. 템플릿:getInvocation(포맷)  현지의 호출 = 자신.호출:getInvocation{   템플릿 = 자신:getName(),   Magic Word가 필요 = 자신.Magic Word가 필요,  }  한다면 포맷 == '코드' 그리고나서   호출 = '<코드>' .. .본문.노우키(호출) .. '/code>'  그렇지 않으면 포맷 == 'kbd' 그리고나서   호출 = '<kbd>' .. .본문.노우키(호출) .. '</kbd>'  그렇지 않으면 포맷 == '실패' 그리고나서   호출 = .본문.노우키(호출)  또 다른   -- 기본값은 pre 태그입니다.   호출 = .본문.부호화(호출, '&')   호출 = '<pre style="white-space: pre-param;">' .. 호출 .. '</pre>'   호출 = .get Current Frame(전류 프레임)():전처리(호출)  끝.  돌아가다 호출 끝.  기능. 템플릿:getoutput()  현지의 보호하다 = 요구하다('모듈:보호')  --자기에게 전화한다._ 호출: get Output{...}  돌아가다 보호하다(자신.호출.getoutput)(자신.호출, {   템플릿 = 자신:getName(),   Magic Word가 필요 = 자신.Magic Word가 필요,  }) 끝.  ------------------------------------------------------------------------------- -- Test Case 클래스 -------------------------------------------------------------------------------  현지의 테스트 케이스 = {} 테스트 케이스.__인덱스 = 테스트 케이스 테스트 케이스.메세지 = 메세지 -- 메시지 메서드를 추가합니다.  테스트 케이스.렌더 메서드 = {  -- 이 표의 키는 "format" 옵션 값이며 값은  -- 이 형식을 렌더링하는 메서드.   = '렌더 컬럼',   = '렌더로',   = '렌더로',  인라인 = '렌더 인라인',   = 렌더셀,  체납 = '렌더 디폴트' }  기능. 테스트 케이스.신규(호출 Obj, 옵션들, cfg)  현지의 obj = 설정 가능한({}, 테스트 케이스)  obj.cfg = cfg   -- 일반 옵션과 템플리트 옵션을 구분합니다.템플릿 옵션은 다음과 같습니다.  --번호가 매겨진 반면 일반 옵션은 그렇지 않습니다.  현지의 일반 옵션, 템플릿 옵션 = {}, {}  위해서 k, v  쌍들(옵션들) 하다   현지의 접두사, 숫자   한다면 유형(k) == '문자열 그리고나서    접두사, 숫자 = k:경기('^(.-)([1-9][0-9]*)
                
) 끝. 한다면 접두사 그리고나서 숫자 = 톤수(숫자) 템플릿 옵션[숫자] = 템플릿 옵션[숫자] 또는 {} 템플릿 옵션[숫자][접두사] = v 또 다른 일반 옵션[k] = v 끝. 끝. -- 일반 옵션 설정 일반 옵션.쇼코드 = 네, 아니요(일반 옵션.쇼코드) 일반 옵션.쇼헤더 = 네, 아니요(일반 옵션.쇼헤더) ~= 거짓의 일반 옵션.show caption = 네, 아니요(일반 옵션.show caption) ~= 거짓의 일반 옵션.접을 수 있다 = 네, 아니요(일반 옵션.접을 수 있다) 일반 옵션.붕괴되지 않았다 = 네, 아니요(일반 옵션.붕괴되지 않았다) 일반 옵션.부족. = 네, 아니요(일반 옵션.부족.) 일반 옵션.ignorsandbox(무시랜드박스 = 네, 아니요(일반 옵션.ignorsandbox(무시랜드박스) obj.옵션들 = 일반 옵션 -- 템플릿 arg의 전처리 위해서 숫자, t 쌍들(템플릿 옵션) 하다 한다면 t.show template ~= 제로 그리고나서 t.show template = 네, 아니요(t.show template) 끝. 끝. --처음 2개의 템플릿옵션 테이블을 셋업하여 -- "filename3" 가 지정되어 있는 경우는, 첫 번째 템플릿은 작성되지 않습니다. -- 테이블 옵션 배열이 압축됩니다. 템플릿 옵션[1] = 템플릿 옵션[1] 또는 {} 템플릿 옵션[2] = 템플릿 옵션[2] 또는 {} -- "template" 옵션이 다음에 대해 "template1" 옵션을 덮어쓰도록 허용합니다. -- [Module]와의 하위 호환성:테스트 사례 표]]] 한다면 일반 옵션.템플릿 그리고나서 템플릿 옵션[1].템플릿 = 일반 옵션.템플릿 끝. -- 기본 템플릿 옵션 추가 한다면 템플릿 옵션[1].템플릿 그리고. 것은 아니다. 템플릿 옵션[2].템플릿 그리고나서 템플릿 옵션[2].템플릿 = 템플릿 옵션[1].템플릿 .. '/' .. obj.cfg.샌드박스 서브페이지 끝. 한다면 것은 아니다. 템플릿 옵션[1].템플릿 그리고나서 템플릿 옵션[1].직함 = .직함.get Current Title(전류 제목)().base Page Title (베이스 페이지 제목) 끝. 한다면 것은 아니다. 템플릿 옵션[2].템플릿 그리고나서 템플릿 옵션[2].직함 = 템플릿 옵션[1].직함:서브 페이지 타이틀( obj.cfg.샌드박스 서브페이지 ) 끝. -- show template가 있는 템플릿의 템플릿옵션을 삭제합니다. -- 인수는 false입니다.그러면 해당 템플릿의 출력이 차단됩니다. 위해서 숫자, t 쌍들(템플릿 옵션) 하다 한다면 t.show template == 거짓의 그리고나서 템플릿 옵션[숫자] = 제로 끝. 끝. -- 누락된 템플릿 이름을 확인합니다. 위해서 숫자, t 쌍들(템플릿 옵션) 하다 한다면 것은 아니다. t.템플릿 그리고. 것은 아니다. t.직함 그리고나서 에러(obj:메세지( 'syslog-option-error', 숫자, 숫자 ), 2) 끝. 끝. -- template Options 테이블을 압축하여 ipair로 반복할 수 있도록 합니다. 템플릿 옵션 = (기능. (t) 현지의 숫자 = {} 위해서 숫자 쌍들(t) 하다 숫자[#숫자 + 1] = 숫자 끝. table.displaces(숫자) 현지의 리트 = {} 위해서 i, 숫자 아이페어(숫자) 하다 리트[i] = t[숫자] 끝. 돌아가다 리트 끝.)(템플릿 옵션) -- nowiki 호출에 __TEMPLATENAME__마법의 단어는 필요 없습니다. -- 출력되는 템플릿은 1개뿐입니다. 한다면 #템플릿 옵션 <=> 1 그리고나서 템플릿 옵션[1].Magic Word가 필요 = 거짓의 끝. .log Object(로그 오브젝트)(템플릿 옵션) -- 템플릿 오브젝트를 만듭니다. obj.템플릿 = {} 위해서 i, 옵션들 아이페어(템플릿 옵션) 하다 table.insert(obj.템플릿, 템플릿.신규(호출 Obj, 옵션들)) 끝. -- 추적 카테고리를 추가합니다.현재는 템플릿만 추적하고 있습니다. -- "heading" 파라미터 또는 "output" 파라미터를 사용합니다. obj.분류 = {} 위해서 k, v 쌍들(옵션들) 하다 한다면 유형(k) == '문자열 그리고. k:발견하다('헤딩') 그리고나서 obj.분류['제목 매개 변수를 사용한 테스트 사례'] = 진실의 그렇지 않으면 k == '출력' 그리고나서 obj.분류['출력 파라미터를 사용한 테스트 사례'] = 진실의 끝. 끝. 돌아가다 obj 끝. 기능. 테스트 케이스:get Template 출력(템플릿 Obj) 현지의 산출량 = 템플릿 Obj:getoutput() 한다면 자신.옵션들.resetRefs(리셋 참조) 그리고나서 .get Current Frame(전류 프레임)():확장 태그('참고 자료') 끝. 돌아가다 산출량 끝. 기능. 테스트 케이스:templateOutputIsEqual() -- 모든 템플릿 출력이 동일한지 여부를 나타내는 부울을 반환합니다. -- 스트립 마커의 랜덤한 부분([도움말:스트립 마커])는 -- 비교 전에 삭제했습니다.이것은 스트립 마커가 모든 것을 포함할 수 있다는 것을 의미합니다. --그리고 여전히 동등하게 취급되지만, 그렇지 않으면 문제가 해결됩니다. -- 동일한 Wikitext가 완전히 동일하지 않습니다. 현지의 기능. 정규화하다산출량(obj, ignore Sandbox(샌드박스 무시)) 현지의 나가. = obj:getoutput() -- 스트립 마커에서 랜덤 부품을 제거합니다. 나가. = 나가.:서브('(\127[^\127]*UNIQ%-%-%l+%-)%x+(%-%-)QINU[^\127]*\127)', '%1%2') -- ignoreSandbox가 true이면 샌드박스 클래스 같은 것을 삭제합니다. 한다면 ignore Sandbox(샌드박스 무시) 그리고나서 나가. = 나가.:서브('-sand %w*','') 끝. 돌아가다 나가. 끝. 현지의 ignoreSand(샌드 무시) = 자신.옵션들.ignorsandbox(무시랜드박스 현지의 첫 번째 출력 = 정규화하다산출량(자신.템플릿[1],ignoreSand(샌드 무시)) 위해서 i = 2, #자신.템플릿 하다 현지의 산출량 = 정규화하다산출량(자신.템플릿[i],ignoreSand(샌드 무시)) 한다면 산출량 ~= 첫 번째 출력 그리고나서 돌아가다 거짓의 끝. 끝. 돌아가다 진실의 끝. 기능. 테스트 케이스:콜라보러블하게 하다(s) 현지의 직함 = 자신.옵션들.직함 또는 자신.템플릿[1]:makeheader(makeheader)() 한다면 자신.옵션들.타이틀 코드 그리고나서 직함 = 자신.템플릿[1]:getInvocation('kbd') 끝. 현지의 동등. = 자신:templateOutputIsEqual() 현지의 뿌리 = .html.만들다('div') 뿌리 :클래스 추가('MW 불가') :css('폭, '100%') :css('경계', '솔리드 실버 1px') :css('실패', '0.2em') :클래스 추가(자신.옵션들.붕괴되지 않았다 == 거짓의 그리고. 'mw-mw-module' 또는 제로) 한다면 자신.옵션들.부족. 그리고나서 뿌리 :태그('div') :css('배경색', 동등. 그리고. '노란색' 또는 '#90a8ee') :css('중량', 굵다) :css('실패', '0.2em') :위키텍스트(직함) :다 했어요.() 또 다른 한다면 자신.옵션들.붕괴되지 않았다 ~= 진실의 또는 거짓의 그리고나서 뿌리 :클래스 추가(동등. 그리고. 'mw-mw-module' 또는 제로) 끝. 뿌리 :태그('div') :css('배경색', 동등. 그리고. '연두색 또는 '노란색') :css('중량', 굵다) :css('실패', '0.2em') :위키텍스트(직함) :다 했어요.() 끝. 뿌리 :태그('div') :클래스 추가('mw-componible-content') :줄바꿈() :위키텍스트(s) :줄바꿈() 돌아가다 스트링(뿌리) 끝. 기능. 테스트 케이스:렌더 컬럼() 현지의 뿌리 = .html.만들다() 한다면 자신.옵션들.쇼코드 그리고나서 뿌리 :위키텍스트(자신.템플릿[1]:getInvocation()) :줄바꿈() 끝. 현지의 탭 기동 = 뿌리:태그('테이블') 한다면 자신.옵션들.쇼헤더 그리고나서 -- 캡션 한다면 자신.옵션들.show caption 그리고나서 탭 기동 :클래스 추가(자신.옵션들.학급) :css텍스트(자신.옵션들.스타일.) :태그('실패') :위키텍스트(자신.옵션들.표제 또는 자신:메세지('아카타리')) 끝. -- 헤더 현지의 headerRow = 탭 기동:태그('tr') 한다면 자신.옵션들.노젓는 사람 그리고나서 -- 여기에서는 rowheader가 맞습니다.다른 셀을 추가해야 합니다. -- rowheader는 heading0이 없는 경우에도 더 아래로 설정됩니다. headerRow:태그('th'):위키텍스트(자신.옵션들.표제0) 끝. 현지의 한다면 #자신.템플릿 > 0 그리고나서 = 스트링(math.floor(100 / #자신.템플릿)) .. '%' 또 다른 = '100%' 끝. 위해서 i, obj 아이페어(자신.템플릿) 하다 headerRow :태그('th') :css('폭, ) :위키텍스트(obj:makeheader(makeheader)()) 끝. 끝. -- 행 헤더 현지의 데이터 행 = 탭 기동:태그('tr'):css('슬롯 얼라인먼트', '위') 한다면 자신.옵션들.노젓는 사람 그리고나서 데이터 행:태그('th') :특성('실패', ) :위키텍스트(자신.옵션들.노젓는 사람) 끝. -- 템플릿 출력 위해서 i, obj 아이페어(자신.템플릿) 하다 한다면 자신.옵션들.산출량 == 'nowiki+' 그리고나서 데이터 행:태그('실패') :줄바꿈() :위키텍스트(자신.옵션들.전에) :위키텍스트(자신:get Template 출력(obj)) :위키텍스트(자신.옵션들.끝나고) :위키텍스트('<pre style="white-space: pre-param;">') :위키텍스트(.본문.노우키(자신.옵션들.전에 또는 "")) :위키텍스트(.본문.노우키(자신:get Template 출력(obj))) :위키텍스트(.본문.노우키(자신.옵션들.끝나고 또는 "")) :위키텍스트('</pre>') 그렇지 않으면 자신.옵션들.산출량 == '노우키 그리고나서 데이터 행:태그('실패') :줄바꿈() :위키텍스트(.본문.노우키(자신.옵션들.전에 또는 "")) :위키텍스트(.본문.노우키(자신:get Template 출력(obj))) :위키텍스트(.본문.노우키(자신.옵션들.끝나고 또는 "")) 또 다른 데이터 행:태그('실패') :줄바꿈() :위키텍스트(자신.옵션들.전에) :위키텍스트(자신:get Template 출력(obj)) :위키텍스트(자신.옵션들.끝나고) 끝. 끝. 돌아가다 스트링(뿌리) 끝. 기능. 테스트 케이스:렌더 Rows() 현지의 뿌리 = .html.만들다() 한다면 자신.옵션들.쇼코드 그리고나서 뿌리 :위키텍스트(자신.템플릿[1]:getInvocation()) :줄바꿈() 끝. 현지의 탭 기동 = 뿌리:태그('테이블') 탭 기동 :클래스 추가(자신.옵션들.학급) :css텍스트(자신.옵션들.스타일.) 한다면 자신.옵션들.표제 그리고나서 탭 기동 :태그('실패') :위키텍스트(자신.옵션들.표제) 끝. 위해서 _, obj 아이페어(자신.템플릿) 하다 현지의 데이터 행 = 탭 기동:태그('tr') -- 헤더 한다면 자신.옵션들.쇼헤더 그리고나서 한다면 자신.옵션들.포맷 == '태블러' 그리고나서 데이터 행:태그('th') :특성('실패', ) :css('슬롯 얼라인먼트', '위') :css('텍스트 정렬', '왼쪽) :위키텍스트(obj:makeheader(makeheader)()) 데이터 행:태그('실패') :css('슬롯 얼라인먼트', '위') :css('실패', '0 1em') :위키텍스트('→') 또 다른 데이터 행:태그('실패') :css('텍스트 정렬', '중앙') :css('중량', 굵다) :위키텍스트(obj:makeheader(makeheader)()) 데이터 행 = 탭 기동:태그('tr') 끝. 끝. -- 템플릿 출력 한다면 자신.옵션들.산출량 == 'nowiki+' 그리고나서 데이터 행:태그('실패') :줄바꿈() :위키텍스트(자신:get Template 출력(obj)) :위키텍스트('<pre style="white-space: pre-param;">') :위키텍스트(.본문.노우키(자신:get Template 출력(obj))) :위키텍스트('</pre>') 그렇지 않으면 자신.옵션들.산출량 == '노우키 그리고나서 데이터 행:태그('실패') :줄바꿈() :위키텍스트(.본문.노우키(자신:get Template 출력(obj))) 또 다른 데이터 행:태그('실패') :줄바꿈() :위키텍스트(자신:get Template 출력(obj)) 끝. 끝. 돌아가다 스트링(뿌리) 끝. 기능. 테스트 케이스:렌더인라인() 현지의 화살표 = .언어.get Content Language(get Content Language)():겟애로우('실패') 현지의 리트 = {} 위해서 i, obj 아이페어(자신.템플릿) 하다 현지의 = {} [# + 1] = 자신.옵션들.접두사 또는 '* ' 한다면 자신.옵션들.쇼코드 그리고나서 [# + 1] = obj:getInvocation('코드') [# + 1] = ' ' [# + 1] = 화살표 [# + 1] = ' ' 끝. 한다면 자신.옵션들.산출량 == 'nowiki+' 그리고나서 [# + 1] = 자신:get Template 출력(obj) [# + 1] = '<pre style="white-space: pre-param;">' [# + 1] = .본문.노우키(자신:get Template 출력(obj)) [# + 1] = '</pre>' 그렇지 않으면 자신.옵션들.산출량 == '노우키 그리고나서 [# + 1] = .본문.노우키(자신:get Template 출력(obj)) 또 다른 [# + 1] = 자신:get Template 출력(obj) 끝. 리트[#리트 + 1] = table.concat() 끝. 한다면 자신.옵션들.추가선 그리고나서 현지의 = {} [# + 1] = 자신.옵션들.접두사 또는 '* ' [# + 1] = 자신.옵션들.추가선 리트[#리트 + 1] = table.concat() 끝. 돌아가다 table.concat(리트, '\n') 끝. 기능. 테스트 케이스:렌더셀() 현지의 뿌리 = .html.만들다() 현지의 데이터 행 = 뿌리:태그('tr') 데이터 행 :css('슬롯 얼라인먼트', '위') :클래스 추가(자신.옵션들.학급) :css텍스트(자신.옵션들.스타일.) -- 행 헤더 한다면 자신.옵션들.노젓는 사람 그리고나서 데이터 행:태그('th') :특성('실패', ) :줄바꿈() :위키텍스트(자신.옵션들.노젓는 사람 또는 자신:메세지('줄타기')) 끝. -- 캡션 한다면 자신.옵션들.show caption 그리고나서 데이터 행:태그('th') :특성('실패', ) :줄바꿈() :위키텍스트(자신.옵션들.표제 또는 자신:메세지('아카타리')) 끝. -- 코드 표시 한다면 자신.옵션들.쇼코드 그리고나서 데이터 행:태그('실패') :줄바꿈() :위키텍스트(자신:getInvocation('코드')) 끝. -- 템플릿 출력 위해서 i, obj 아이페어(자신.템플릿) 하다 한다면 자신.옵션들.산출량 == 'nowiki+' 그리고나서 데이터 행:태그('실패') :줄바꿈() :위키텍스트(자신.옵션들.전에) :위키텍스트(자신:get Template 출력(obj)) :위키텍스트(자신.옵션들.끝나고) :위키텍스트('<pre style="white-space: pre-param;">') :위키텍스트(.본문.노우키(자신.옵션들.전에 또는 "")) :위키텍스트(.본문.노우키(자신:get Template 출력(obj))) :위키텍스트(.본문.노우키(자신.옵션들.끝나고 또는 "")) :위키텍스트('</pre>') 그렇지 않으면 자신.옵션들.산출량 == '노우키 그리고나서 데이터 행:태그('실패') :줄바꿈() :위키텍스트(.본문.노우키(자신.옵션들.전에 또는 "")) :위키텍스트(.본문.노우키(자신:get Template 출력(obj))) :위키텍스트(.본문.노우키(자신.옵션들.끝나고 또는 "")) 또 다른 데이터 행:태그('실패') :줄바꿈() :위키텍스트(자신.옵션들.전에) :위키텍스트(자신:get Template 출력(obj)) :위키텍스트(자신.옵션들.끝나고) 끝. 끝. 돌아가다 스트링(뿌리) 끝. 기능. 테스트 케이스:render Default(렌더 디폴트)() 현지의 리트 = {} 한다면 자신.옵션들.쇼코드 그리고나서 리트[#리트 + 1] = 자신.템플릿[1]:getInvocation() 끝. 위해서 i, obj 아이페어(자신.템플릿) 하다 리트[#리트 + 1] = '<div style="clear: both;"></div>' 한다면 자신.옵션들.쇼헤더 그리고나서 리트[#리트 + 1] = obj:makeheader(makeheader)() 끝. 한다면 자신.옵션들.산출량 == 'nowiki+' 그리고나서 리트[#리트 + 1] = 자신:get Template 출력(obj) .. '<pre style="white-space: pre-param;">' .. .본문.노우키(자신:get Template 출력(obj)) .. '</pre>' 그렇지 않으면 자신.옵션들.산출량 == '노우키 그리고나서 리트[#리트 + 1] = .본문.노우키(자신:get Template 출력(obj)) 또 다른 리트[#리트 + 1] = 자신:get Template 출력(obj) 끝. 끝. 돌아가다 table.concat(리트, '\n\n') 끝. 기능. 테스트 케이스:__tostring() 현지의 포맷 = 자신.옵션들.포맷 현지의 방법 = 포맷 그리고. 테스트 케이스.렌더 메서드[포맷] 또는 '렌더 디폴트' 현지의 리트 = 자신[방법](자신) 한다면 자신.옵션들.접을 수 있다 그리고나서 리트 = 자신:콜라보러블하게 하다(리트) 끝. 위해서 고양이 쌍들(자신.분류) 하다 리트 = 리트 .. string.format('[카테고리:%s]', 고양이) 끝. 돌아가다 리트 끝. ------------------------------------------------------------------------------- ·노우키 호출 클래스 ------------------------------------------------------------------------------- 현지의 노비키 호출 = {} 노비키 호출.__인덱스 = 노비키 호출 노비키 호출.메세지 = 메세지 -- 메시지 메서드를 추가합니다. 기능. 노비키 호출.신규(호출, cfg) 현지의 obj = 설정 가능한({}, 노비키 호출) obj.cfg = cfg 호출 = .본문.떼어내다(호출) --<, >, 및 「」의 HTML 엔티티를 디코딩 합니다.즉, HTML 엔티티가 -- 원래 코드는 &amp;lt;로 이스케이프해야 하는데, 이는 유감스러운 일입니다. --하지만, 이것이 <, >, " 및 &lt;의 구별로서 우리가 할 수 있는 최선의 방법입니다. -- &gt;, &gt;는 원래 nowiki 작업 중에 손실됩니다. 호출 = 호출:서브('&lt;', '<') 호출 = 호출:서브('&gt;', '>') 호출 = 호출:서브('&quot;', '"') obj.호출 = 호출 돌아가다 obj 끝. 기능. 노비키 호출:getInvocation(옵션들) 현지의 템플릿 = 옵션들.템플릿:서브('%%', '%%%%') -- %%로 % % 이스케이프 현지의 호출, 세어보세요 = 자신.호출:서브( 자신.cfg.templateNameMagicWordPattern, 템플릿 ) 한다면 옵션들.Magic Word가 필요 ~= 거짓의 그리고. 세어보세요 < > 1 그리고나서 에러(자신:메세지( 'nowiki-word-error', 자신.cfg.templateNameMagicWord )) 끝. 돌아가다 호출 끝. 기능. 노비키 호출:getoutput(옵션들) 현지의 호출 = 자신:getInvocation(옵션들) 돌아가다 .get Current Frame(전류 프레임)():전처리(호출) 끝. ------------------------------------------------------------------------------- -- 테이블 호출 클래스 ------------------------------------------------------------------------------- 현지의 테이블 호출 = {} 테이블 호출.__인덱스 = 테이블 호출 테이블 호출.메세지 = 메세지 -- 메시지 메서드를 추가합니다. 기능. 테이블 호출.신규(Args를 호출, nowiki 코드, cfg) 현지의 obj = 설정 가능한({}, 테이블 호출) obj.cfg = cfg obj.Args를 호출 = Args를 호출 obj.코드 = nowiki 코드 돌아가다 obj 끝. 기능. 테이블 호출:getInvocation(옵션들) 한다면 자신.코드 그리고나서 현지의 nowikiObj = 노비키 호출.신규(자신.코드, 자신.cfg) 돌아가다 nowikiObj:getInvocation(옵션들) 또 다른 돌아가다 요구하다('모듈:템플릿 호출').호출( 옵션들.템플릿, 자신.Args를 호출 ) 끝. 끝. 기능. 테이블 호출:getoutput(옵션들) 한다면 (옵션들.템플릿:후보선수(1, 7) == '#자세히') 그리고나서 현지의 module Call(모듈 콜) = .본문.분열되다(옵션들.템플릿, ' ', 진실의) 현지의 args = .클론(자신.Args를 호출) table.insert(args, 1, module Call(모듈 콜)[2]) 돌아가다 .get Current Frame(전류 프레임)():callParser 기능(module Call(모듈 콜)[1], args) 끝. 돌아가다 .get Current Frame(전류 프레임)():확장 템플릿{ 직함 = 옵션들.템플릿, args = 자신.Args를 호출 } 끝. ------------------------------------------------------------------------------- -- 브리지 기능 -- -- 이러한 함수는 템플릿 인수를 받아들일 수 있는 형식으로 변환합니다. -- 다른 클래스별로 결과를 반환합니다. ------------------------------------------------------------------------------- 현지의 다리 = {} 기능. 다리.테이블(args, cfg) cfg = cfg 또는 .로드 데이터(데이터 모듈) 현지의 옵션들, Args를 호출 = {}, {} 위해서 k, v 쌍들(args) 하다 현지의 옵션 키 = 유형(k) == '문자열 그리고. k:경기('^_(.*)
$$SIDE_BOTTOM$$
    $$BOTTOM$$