모듈:Hatnote 목록/샌드박스
Module| 모듈 샌드박스 페이지는 다음과 같습니다.해트노트 리스트(diff). 테스트 케이스에 대해서는, 부속의 서브 페이지도 참조해 주세요(실행). |
| 이 Lua 모듈은 MediaWiki에서 사용됩니다.수배 페이지 요약 이를 변경하면 Wikipedia 사용자 인터페이스가 즉시 변경될 수 있습니다. 중대한 중단을 방지하려면 모듈의 /sandbox 또는 /testcase 서브페이지 또는 자체 모듈 샌드박스에서 변경 사항을 테스트해야 합니다.테스트한 변경은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.토크 페이지에서 변경 사항을 논의한 후 구현하십시오. |
Wikitext에서 사용
이 모듈은 Wikitext에서 직접 사용할 수 없습니다.forSee이니셜을 취득하다frame다음과 같이 wikitext에서 사용할 수 있습니다.
{{hatnote PREFIX {{#invoke:Hatnote list forSee {{tl For}} Module:For {{tl About}} Module:About}} POSTFIX}}→
Lua에서 사용
모듈을 호출하려면현지의 mHat 리스트 = 요구하다('모듈:Hatnote 목록') mHatList변수(또는 사용된 모든 것)를 지정합니다. 리스트
andList는 테이블 형식의 목록을 가져와서 필요에 따라 목록과 쉼표로 구분된 문자열을 반환합니다.
or
orList는 테이블 형식의 목록을 가져와서 필요에 따라 목록과 쉼표로 구분된 문자열을 반환합니다.
를 참조해 주세요.
_forSee는 공백이 제거된 트리밍된 인수 테이블, 시작할 인덱스가 있는 "시작" 숫자 및 옵션 테이블의 세 가지 인수를 사용하고 "시작" 개수가 포함된 문자열을 반환합니다.For X, see [[Y]]"문장.링크는 모듈의 방법을 사용하여 포맷됩니다.모자 노트.
편의상forSeemethod(선행 언더스코어 없음)는 args 테이블 대신 프레임을 사용하는 경우를 제외하고 동일한 인수를 사용합니다.getArgs()모듈:인수를 전처리하는 인수.
-------------------------------------------------------------------------------- -- 모듈:Hatnote 목록 -- -- -- -- 이 모듈은 해트노트에서 사용할 목록을 만들고 형식을 지정합니다.특히-- -- 「X 의 경우는, Y 를 참조해 주세요」라고 하는, 참조용의 리스트를 실장합니다. -- {{about}}, {{variant}}, 및 그 변종에서 사용되고 있습니다.또, 소개 -- -- 는, 이러한 접속으로 리스트의 포맷을 실시하는andList & orList 도우미입니다. -------------------------------------------------------------------------------- 현지의 mArguments(인수) --게으른 초기화 현지의 mFormatLink = 요구하다('모듈:링크 포맷') 현지의 mHatnote = 요구하다('모듈:해트노트') 현지의 라이브러리 Util = 요구하다('라이브러리 유틸') 현지의 체크 타입 = 라이브러리 Util.체크 타입 현지의 p = {} -------------------------------------------------------------------------------- -- 문자열화 도우미 함수 나열 -- --이러한 함수는 목록(일반적으로 페이지 목록 내부)을 문자열화하는 데 사용됩니다. -- "X의 경우, Y를 참조하십시오"의 "Y" 부분을 참조하십시오. -------------------------------------------------------------------------------- -- 목록 문자열화 함수 전체에서 사용되는 기본 옵션 테이블 현지의 스트링화하다List Default 옵션 = { 접속사 = "그리고", 분리기 = ",", altSeparator = ";", 공간 = " ", 포맷했다 = 거짓의 } --검색은 텍스트만 표시합니다. 현지의 기능. 검색 디스프(건초 더미, 바늘로 찌르다) 돌아가다 string.find( 스트링.서브(건초 더미, (string.find(건초 더미, ' ') 또는 0) + 1), 바늘로 찌르다 ) 끝. -- 리스트를 일반적으로 문자열화합니다.직접 사용하지 않는 것이 좋습니다. 현지의 기능. 스트링화하다목록.(목록., 옵션들) -- 유형 검사, 기본값 및 바로 가기 체크 타입("stringify List", 1, 목록., "테이블") 한다면 #목록. == 0 그리고나서 돌아가다 제로 끝. 체크 타입("stringify List", 2, 옵션들, "테이블", 진실의) 옵션들 = 옵션들 또는 {} 위해서 k, v 에 쌍들(스트링화하다List Default 옵션) 하다 한다면 옵션들[k] == 제로 그리고나서 옵션들[k] = v 끝. 끝. 현지의 s = 옵션들.공간 -- 요청 시 목록 형식을 지정합니다. 한다면 옵션들.포맷했다 그리고나서 목록. = mFormatLink.포맷 페이지( {categorizeMissing = mHatnote.missingTargetCat}, 목록. ) 끝. -- 구분 기호를 설정합니다. 항목이 있는 경우 대체 구분 기호를 사용하십시오. 현지의 분리기 = 옵션들.분리기 위해서 k, v 에 쌍들(목록.) 하다 한다면 검색 디스프(v, 분리기) 그리고나서 분리기 = 옵션들.altSeparator 브레이크. 끝. 끝. -- 접속사를 설정하고 Oxford 콤마를 적용하고 #1에 """이 있으면 콤마를 붙입니다. 현지의 접속사 = s .. 옵션들.접속사 .. s 한다면 #목록. == 2 그리고. 검색 디스프(목록.[1], "§") 또는 #목록. > 2 그리고나서 접속사 = 분리기 .. 접속사 끝. -- 포맷된 문자열을 반환합니다. 돌아가다 음.본문.list To(목록., 분리기 .. s, 접속사) 끝. ·DRY 기능 기능. p.consa 리스트 (요술, 목록., fmt) 돌아가다 스트링화하다목록.(목록., {접속사 = 요술, 포맷했다 = fmt}) 끝. -- "and" 또는 "or"로 목록을 문자열화합니다. 기능. p.리스트 (...) 돌아가다 p.consa 리스트("그리고", ...) 끝. 기능. p.or (...) 돌아가다 p.consa 리스트("또는", ...) 끝. -------------------------------------------------------------------------------- -- 를 참조해 주세요. -- -- raw 파라미터에서 "X의 경우 [Y] 참조" 목록을 만듭니다.용도의 -- {{about}} 및 {{built}} 템플릿 및 그 변형. -------------------------------------------------------------------------------- -- for 전체에서 사용되는 기본 옵션테이블 기능 패밀리 참조 현지의 for '디폴트 옵션' 참조 = { 키워드 = '그리고', 제목 = 음.제목.get Current Title(전류 제목)().본문, 기타 텍스트 = '기타 용도', forSeeForm = '%s에 대해서는 %s을 참조하십시오.', } -- 중복된 구두점을 접습니다. 현지의 기능. punctuationCollapse (본문) 현지의 교환품 = { ["%.%.$"] = ".", ["%?%.$"] = "?", ["%!%.$"] = "!", ["%.%]%]%.$"] = ".]]", ["%?%]%]%.$"] = "?]]", ["%!%]%]%.$"] = "!]]" } 위해서 k, v 에 쌍들(교환품) 하다 본문 = string.gsub(본문, k, v) 끝. 돌아가다 본문 끝. -- 인수를 문자열화 및 옵션 테이블로 구성합니다. 기능. p.for "Args To Table" 참조 (args, 부터, 옵션들) -- 유형 검사 및 기본값 체크 타입("ForArgsToTable" 참조, 1, args, '테이블') 체크 타입("ForArgsToTable" 참조, 2, 부터, '숫자', 진실의) 부터 = 부터 또는 1 체크 타입("ForArgsToTable" 참조, 3, 옵션들, '테이블', 진실의) 옵션들 = 옵션들 또는 {} 위해서 k, v 에 쌍들(for '디폴트 옵션' 참조) 하다 한다면 옵션들[k] == 제로 그리고나서 옵션들[k] = v 끝. 끝. -- getArgs()와 table.maxn은 친구가 아니기 때문에 maxArg는 수동으로 취득했습니다. 현지의 maxArg = 0 위해서 k, v 에 쌍들(args) 하다 한다면 유형(k) == '숫자' 그리고. k > maxArg 그리고나서 maxArg = k 끝. 끝. -- 파라미터 리스트에서 데이터를 구조화합니다. -- * forTable은 래퍼 테이블로 forRow 행이 있습니다. -- * 행은 "사용" 문자열 테이블과 pagename 문자열의 "페이지" 테이블입니다. -- * 공백은 다른 곳에서 기본값으로 사용할 수 있도록 비워두지만 목록을 종료할 수 있습니다. 현지의 테이블 = {} 현지의 i = 부터 현지의 종료했다 = 거짓의 -- 추가 텍스트가 있고 인수가 지정되지 않은 경우 0 값을 지정합니다. -- "기타 용도의 경우 foo를 참조하십시오(구체적 명확화)"의 기본값을 생성하지 않습니다. 한다면 옵션들.외부 속도 그리고. i > maxArg 그리고나서 돌아가다 제로 끝. -- 행을 생성하기 위해 루프 따라하다 -- 빈 행이 새로 만들기 현지의 행 = {} -- 블랭크 사용의 경우, 리스트가 종료되어 이 루프의 마지막에 끊어진다고 가정합니다. 행.사용하다 = args[i] 한다면 것은 아니다. args[i] 그리고나서 종료했다 = 진실의 끝. -- 새로운 빈 페이지 목록 행.페이지 = {} -- 있는 경우 첫 페이지 항목을 삽입합니다. table.insert(행.페이지, args[i + 1]) -- 다음 파라미터가 "and"인 경우 내부 루프를 실행하여 파라미터를 수집합니다. 'and'가 멈출 때까지요공백은 무시됩니다. "1 및 3" → {1, 3) 하는 동안에 args[i + 2] == 옵션들.키워드 하다 한다면 args[i + 3] 그리고나서 table.insert(행.페이지, args[i + 3]) 끝. -- 다음 "and"로 증분합니다. i = i + 2 끝. -- 다음 사용 시 증가 i = i + 2 -- 행을 추가합니다. table.insert(테이블, 행) 까지 종료했다 또는 i > maxArg 돌아가다 테이블 끝. -- 테이블 형식을 forSeeArgsToTable로 지정합니다. 기능. p.for 'TableToString' 참조 (표 참조, 옵션들) -- 유형 검사 및 기본값 체크 타입("ForTableToString", 1, 표 참조, "테이블", 진실의) 체크 타입("ForTableToString", 2, 옵션들, "테이블", 진실의) 옵션들 = 옵션들 또는 {} 위해서 k, v 에 쌍들(for '디폴트 옵션' 참조) 하다 한다면 옵션들[k] == 제로 그리고나서 옵션들[k] = v 끝. 끝. -- 참조할 각 항목을 목록으로 문자열화합니다. 현지의 strList = {} 한다면 표 참조 그리고나서 위해서 k, v 에 쌍들(표 참조) 하다 현지의 useStr = v.사용하다 또는 옵션들.기타 텍스트 현지의 pagesStr = p.리스트(v.페이지, 진실의) 또는 mFormatLink._formatLink{ categorizeMissing = mHatnote.missingTargetCat, 링크 = mHatnote.차이를 분명히 보여 주다(옵션들.제목) } 현지의 forSeeStr = string.format(옵션들.forSeeForm, useStr, pagesStr) forSeeStr = punctuationCollapse(forSeeStr) table.insert(strList, forSeeStr) 끝. 끝. 한다면 옵션들.외부 속도 그리고나서 table.insert(strList, punctuationCollapse(옵션들.외부 속도..'.')) 끝. -- 연결된 목록을 반환합니다. 돌아가다 table.concat(strList, ' ') 끝. -- 인수에서 "X의 경우 [Y] 참조" 문자열을 생성합니다.예상 지수 격차 -- 단, 공백/공백 값은 사용할 수 없습니다.이름 있는 args 및 args < "from"을 무시합니다. 기능. p._를 참조해 주세요. (args, 부터, 옵션들) 현지의 표 참조 = p.for "Args To Table" 참조(args, 부터, 옵션들) 돌아가다 p.for 'TableToString' 참조(표 참조, 옵션들) 끝. -- _forSee로 지정되지만 프레임을 사용합니다. 기능. p.를 참조해 주세요. (틀, 부터, 옵션들) mArguments(인수) = 요구하다('모듈:인수') 돌아가다 p._를 참조해 주세요.(mArguments(인수).취득하다(틀), 부터, 옵션들) 끝. 돌아가다 p 