모듈:라벨 부착 리스트 해트노트/샌드박스

Module
-------------------------------------------------------------------------------- -- 라벨이 붙은 리스트 -- --                                                                            -- -- 이 모듈은 목록으로 구성된 해트노트를 작성하는 핵심 작업을 수행합니다. -- "LABEL: [and List of pages]"와 같이 콜론으로 끝나는 라벨이 앞에 붙습니다. -- {{see also}} 및 이와 유사한 템플릿에 대해 설명합니다. --------------------------------------------------------------------------------  현지의 mHatnote = 요구하다('모듈:해트노트') 현지의 mHatlist(해트리스트) = 요구하다('모듈:Hatnote 목록') 현지의 mArguments(인수) --게으른 초기화 현지의 네, 아니요 --게으른 초기화 현지의 p = {}  -- 이 모듈의 디폴트 글로벌 현지의 디폴트 = {  라벨. = '참조 항목', --label 인수의 최종 폴백  라벨 폼 = '%s: %s',  프리픽스 = {'라벨', '라벨', 'l'},  템플릿 = '모듈:라벨 목록 해트노트' }  -- 현지화 가능한 메시지 문자열 현지의 메시지 = {  에러 Suffix = '#오류',  입력 경고 없음 = '지정된 페이지 이름 없음',  출력 경고 없음 =   "''[%s] - 출력 없음: 대상 페이지가 없습니다." }  -- 표시 파라미터를 페이지 인수에 미리 결합하는 도우미 함수. -- 또, 바람직한 부작용으로서 스파스 어레이를 압축합니다. 기능. p.전처리 화면 (args, 프리픽스)  -- 프리픽스는 표시 옵션을 체크할 파라미터를 순서대로 지정합니다.  -- 각각 'label1', 'label1', 'label1' 등 번호가 자동으로 부가됩니다.  프리픽스 = 프리픽스 또는 디폴트.프리픽스  현지의 인덱스 = {}  현지의 스파스 페이지 = {}  위해서 k, v  쌍들(args) 하다   한다면 유형(k) == '숫자' 그리고나서    인덱스[#인덱스 + 1] = k    현지의 표시    위해서 i = 1, #프리픽스 하다     표시 = args[프리픽스[i] .. k]     한다면 표시 그리고나서 브레이크. 끝.    끝.    스파스 페이지[k] = 표시 그리고.     string.format(%s %s', string.gsub(v, ' .*
                
, ''), 표시) 또는 v 끝. 끝. table.displaces(인덱스) 현지의 페이지 = {} 위해서 k, v 아이페어(인덱스) 하다 페이지[#페이지 + 1] = 스파스 페이지[v] 끝. 돌아가다 페이지 끝. ·처리된 페이지 문자열에서 페이지 타깃을 취득하는 데 도움이 되는 기능 --예: "페이지 라벨" → "페이지" 또는 "대상" → "대상" 현지의 기능. 타겟을 취득하다(pagename) 현지의 파이프 = string.find(pagename, ' ') 돌아가다 스트링.서브(pagename, 0, 파이프 그리고. 파이프 - 1 또는 제로) 끝. -- 라벨이 붙은 페이지 목록 해트노트를 만듭니다. -- 메인 프레임(템플릿 정의)은 1개 또는2개의 인수를 사용합니다(단수). -- 및 (선택사항) 각각 여러 개의 라벨: -- * {{##filename:라벨 부착 리스트 해트노트 라벨 부착 리스트싱귤러 라벨 복수 라벨} -- 결과 템플릿은 보통 pagename 및 label 파라미터를 사용합니다. 기능. p.labeled List(라벨 리스트) () mArguments(인수) = 요구하다('모듈:인수') 네, 아니요 = 요구하다('모듈:네, 아니요.) 현지의 라벨 = {.args[1] 또는 디폴트.라벨.} 라벨[2] = .args[2] 또는 라벨[1] 라벨[3] = .args[3] --디폴트 없음 라벨[4] = .args[4] --디폴트 없음 현지의 템플릿 = :부모 취득():getTitle(제목)() 현지의 args = mArguments(인수).취득하다(, {parent Only(부모 전용) = 진실의}) 현지의 페이지 = p.전처리 화면(args) 현지의 옵션들 = { 카테고리 = 네, 아니요(args.카테고리), 체외 = .args.체외, ifexists = 네, 아니요(.args.ifexists), 라벨 폼 = .args.라벨 폼, 네임스페이스 = .args.네임스페이스 또는 args.네임스페이스, 셀프레프 = 네, 아니요(.args.셀프레프 또는 args.셀프레프), 템플릿 = 템플릿 } 돌아가다 p._라벨 부착 리스트(페이지, 라벨, 옵션들) 끝. 기능. p._라벨 부착 리스트 (페이지, 라벨, 옵션들) 한다면 옵션들.ifexists 그리고나서 위해서 k = #페이지, 1, -1 하다 --반복하여 부드럽게 제거할 수 있도록 합니다. 현지의 v = 페이지[k] 현지의 직함 = .직함.신규(타겟을 취득하다(v), 네임스페이스) 한다면 (v == '') 또는 직함 == 제로 또는 것은 아니다. 직함.존재한다 그리고나서 테이블.삭제(페이지, k) 끝. 끝. 끝. 라벨 = 라벨 또는 {} 라벨. = (#페이지 == 1 그리고. 라벨[1] 또는 라벨[2]) 또는 디폴트.라벨. 위해서 k, v 쌍들(페이지) 하다 한다면 mHatnote.find Namespace Id(v) ~= 0 그리고나서 라벨. = ( #페이지 == 1 그리고. (라벨[3] 또는 라벨[1] 또는 디폴트.라벨.) 또는 (라벨[4] 또는 라벨[2] 또는 디폴트.라벨.) ) 또는 디폴트.라벨. 끝. 끝. 한다면 #페이지 == 0 그리고나서 한다면 옵션들.ifexists 그리고나서 .경고 추가( string.format( 메시지.출력 경고 없음, 옵션들.템플릿 또는 디폴트.템플릿 ) ) 돌아가다 '' 또 다른 돌아가다 mHatnote.makeWikitext 오류( 메시지.입력 경고 없음, (옵션들.템플릿 또는 디폴트.템플릿) .. 메시지.에러 Suffix, 옵션들.카테고리 ) 끝. 끝. 현지의 본문 = string.format( 옵션들.라벨 폼 또는 디폴트.라벨 폼, 라벨., mHatlist(해트리스트).리스트(페이지, 진실의) ) 현지의 hn옵션 = { 체외 = 옵션들.체외, 셀프레프 = 옵션들.셀프레프 } 돌아가다 mHatnote._해트노트(본문, hn옵션) 끝. 돌아가다 p