모듈:지역 토픽
Module| 이 모듈은 알파 등급입니다.타사 입력에 사용할 준비가 되어 있으며, 문제가 발생하는지 확인하기 위해 몇 페이지에서 사용할 수 있지만 지켜봐야 합니다.새로운 기능에 대한 제안이나 입력 및 출력 메커니즘의 변경을 환영합니다. |
이 모듈에는 Lua 기반 대륙/지역별 주제 탐색 상자에 대한 기본 코드가 포함되어 있습니다.
사용.
이 모듈을 기반으로 사용자 지정 가능한 탐색 상자를 만들려면 매개 변수 "data" 및 "name"을 사용하여 호출하는 래퍼 템플릿을 만듭니다.
{{#선택사항:지역 주제 주 데이터 = 모듈:DataPageNamename = {{name {{name}:PAGENAME}}}}}} }} name=올바른 "V•T•E" 링크에 필요합니다. 매개 변수{{{name}}}추가 래퍼 템플릿을 만들 수 있습니다. data=영역 이름 및 기타 옵션에 대한 데이터 모듈의 페이지 이름입니다.
참고 항목
- 이 모듈을 사용하는 샌드박스:
- 위키백과:Lua/Requests/Archive 5 » 다시 쓰기 템플릿:루아 모듈로서의 세계 주제
현지의 p = {} 현지의 대상 리디렉션 = 요구하다("모듈:리디렉션").대상 가져오기 현지의 기능. 빈 ToNil(s) -- 공백으로만 구성된 문자열을 0으로 바꿉니다. 돌아가다 s 그리고. 줄을 대다(s, '%S') 그리고. s 또는 영의 끝. 현지의 기능. 링크를 해제합니다(s) 돌아가다 s=="연결 해제" 끝. 현지의 yn_map = {네.="y", y="y", ["참"]="y", ["1"]="y", 아니요.="n", n="n", ["거짓"]="n", ["0"]="n", [""]="e"} 현지의 기능. yn의(s,지도) --"예"/"아니오" 문자열을 부울 문자열로 변환합니다. map은 --각 입력 유형을 지정하는 테이블 --로 표시되며, 기본값은 {{yesno}}과(와) 일치합니다. 지도 = 지도 또는 {} 현지의 fmap = {y = 지도.y 또는 1, --예, 예, 참, 1. n = 지도.n 또는 0, --아니, 아니, 거짓, 0. o = 지도.o 또는 지도.y 또는 1, --기타 e = 지도.e 또는 지도.n 또는 0, --빈 문자열 u = 지도.u 또는 지도.n 또는 0} --지정되지 않음(수정) 현지의 번호 = s 그리고. fmap[yn_map[s] 또는 "o"] 또는 fmap.u 돌아가다 번호 ~= 0 끝. 현지의 기능. yn3(s,nrl) --"예"/"아니오" 문자열을 숫자(1=예, 0=아니오, 0.5=숫자)로 변환합니다. 현지의 yn의 = yn_map[s 또는 ""] 돌아가다 (yn의=="y" 그리고. 1) 또는 (nrl 그리고. 링크를 해제합니다(s) 그리고. 1) 또는 (yn의=="n" 그리고. 0) 또는 0.5 끝. 현지의 기능. xor(a,b) --논리적 XOR 함수 돌아가다 것은 아니다. a ~= 것은 아니다. b 끝. 현지의 기능. 실패로 끝나다(t) 현지의 i = 1 현지의 r = 0.5 하는 동안에 r==0.5 그리고. t[i] 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 r = t[i] i = i + 1 끝. 돌아가다 (r 그리고. r~=0) 그리고. 1 또는 0 끝. 현지의 기능. 로드 데이터(d) 한다면 유형(d)=="테이블" 그리고나서 돌아가다 d 그렇지 않으면 유형(d)=="문자열" 그리고. 빈 ToNil(d) 그리고나서 돌아가다 mw.로드 데이터(d) 또 다른 돌아가다 오류("데이터 페이지 또는 테이블이 지정되지 않음") 끝. 끝. 기능. p.루아 메인(틀,논병아리) --navbox를 생성합니다(다른 Lua 스크립트용). --navbox 스타일 매개변수 전달 현지의 navboxArgs = { 이름. = 논병아리.이름. 또는 오류("이름 매개 변수 없음"), 주 = 논병아리.주 또는 "임시 붕괴", 타이틀 스타일 = 논병아리.타이틀 스타일, 보디 스타일 = 논병아리.보디 스타일, 상투적인 스타일 = 논병아리.상투적인 스타일, 저속한 = 논병아리.저속한, 그룹 스타일 = 논병아리.그룹 스타일, 리스트 스타일 = 논병아리.리스트 스타일, 리스트 클래스 = "hlist", 이미지 = 논병아리.이미지, 위에 = 논병아리.위에, 경계 = 논병아리.경계, 나비바 = 논병아리.나비바 } --데이터 로드 페이지 현지의 데이터. = 로드 데이터(논병아리.데이터.) -- 접두사/접미사 매개변수 현지의 접두어 = 빈 ToNil(논병아리.접두어 또는 논병아리[1]) 현지의 접미사 = 빈 ToNil(논병아리.접미사 또는 논병아리[2]) 접두어 = (접두어 또는 "")..(것은 아니다. yn의(논병아리.접두사 공백 없음) 그리고. 접두어 그리고. " " 또는 "") 접미사 = (것은 아니다. yn의(논병아리.6공간이 없음) 그리고. 접미사 그리고. " " 또는 "")..(접미사 또는 "") --필요한 경우 정관사 "the"를 포함하도록 전환합니다. 현지의 기사 한다면 논병아리.기사 그리고나서 기사 = yn의(논병아리.기사) 또 다른 기사 = (접두어~="" 그리고. 접미사=="") 끝. --존재하지 않는 아티클을 생략하도록 전환(지정되지 않은 경우 0.5) 현지의 레드링크 없음 = yn3(논병아리.노링크,1) 현지의 연결 해제RedLinks = 링크를 해제합니다(논병아리.노링크) --방향 수정을 자동으로 따르도록 전환합니다. 현지의 노 레더즈 = yn3(논병아리.지시 없음) --navbox 제목 만들기 한다면 논병아리.제목 그리고나서 navboxArgs.제목 = 논병아리.제목 또 다른 현지의 링크Name = 데이터..지역 또는 오류("데이터 페이지에 영역 매개 변수 없음") 현지의 링크 아티클 = (기사 그리고. 데이터..지역_더) 그리고. (접두어=="" 그리고. "더" 또는 "더") 또는 "" 현지의 전체 링크 = 접두어..링크 아티클..링크Name..접미사 한다면 레드링크 없음==0 또는 mw.제목.신규(전체 링크).존재한다 그리고나서 navboxArgs.제목 = "[["..전체 링크.."]]" 또 다른 navboxArgs.제목 = 전체 링크 끝. 끝. --그룹 위로 루프 현지의 n번째 그룹 = 1 현지의 n번째 표시 그룹 = 1 하는 동안에 데이터.["그룹"..n번째 그룹] 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 --그룹을 숨기지 않거나 제외하지 않은 경우 한다면 것은 아니다. 데이터.["그룹"..n번째 그룹].스위치 또는 것은 아니다. 논병아리[데이터.["그룹"..n번째 그룹].스위치] 그리고. 것은 아니다. 데이터.["그룹"..n번째 그룹].숨은 또는 논병아리[데이터.["그룹"..n번째 그룹].스위치] 그리고. xor(yn의(논병아리[데이터.["그룹"..n번째 그룹].스위치],{o=0}),데이터.["그룹"..n번째 그룹].negate_switch) 그리고나서 --목록 작성 및 항목 루프오버 현지의 목록. = {} 현지의 listSortMap = {} 위해서 n차 국가,국가 데이터 에 짝을 짓다(데이터.["그룹"..n번째 그룹].데이터.) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 현지의 코드 = 국가 데이터[1] 현지의 countryName = 빈 ToNil(논병아리[코드.."_name"]) 또는 국가 데이터[2] 또는 국가 데이터[1] 현지의 listItem --국가를 포함해야 하는지 여부 결정 한다면 yn의(논병아리[코드],{u=1}) 그리고. (논병아리[코드] 또는 것은 아니다. (국가 데이터.스위치 그리고. 논병아리[국가 데이터.스위치]) 그리고. 것은 아니다. 국가 데이터.숨은 또는 국가 데이터.스위치 그리고. 논병아리[국가 데이터.스위치] 그리고. xor(yn의(논병아리[국가 데이터.스위치],{o=0}),국가 데이터.negate_switch)) 그리고나서 --링크 대상 결정 현지의 링크Name = 국가 데이터.링크 또는 국가 데이터[2] 또는 국가 데이터[1] 현지의 링크 아티클 = (기사 그리고. 국가 데이터.그) 그리고. "더" 또는 "" 현지의 전체 링크 = 것은 아니다. yn의(논병아리[코드],{o=0}) 그리고. 논병아리[코드] 또는 (접두어..링크 아티클..링크Name..접미사) --존재하지 않는 경우 목록 항목 만들기 현지의 RedLink 없음 = 실패로 끝나다({yn3(논병아리[코드.."_noredlink"],1),레드링크 없음,국가 데이터.노드 링크 또는 0}) 한다면 (논병아리[코드] 또는 RedLink 없음~=1 또는 mw.제목.신규(전체 링크).존재한다) 그리고. 것은 아니다. 링크를 해제합니다(논병아리[코드]) 그리고나서 현지의 레디르 없음 = 실패로 끝나다({yn3(논병아리[코드.."_직접 연결 안 함]),노 레더즈,국가 데이터.직접적이지 않은 또는 0}) listItem = "[["..(레디르 없음==1 그리고. 대상 리디렉션(전체 링크) 또는 전체 링크).." "..countryName.."]]" 그렇지 않으면 링크를 해제합니다(논병아리[코드]) 또는 링크를 해제합니다(논병아리[코드.."_noredlink"]) 또는 연결 해제RedLinks 또는 링크를 해제합니다(국가 데이터.노드 링크) 그리고나서 listItem = countryName 끝. 끝. --있는 경우 하위 목록 만들기 한다면 국가 데이터.부분군 그리고나서 현지의 하위 그룹 = 국가 데이터.부분군 현지의 하위 목록 = {} 현지의 하위 목록 소트 맵 = {} 위해서 n번째 하위 국가,하위 국가 데이터 에 짝을 짓다(하위 그룹) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 --메인 아이템 코드와 유사 현지의 하위 코드 = 하위 국가 데이터[1] 현지의 하위 국가Name = 빈 ToNil(논병아리[하위 코드.."_name"]) 또는 하위 국가 데이터[2] 또는 하위 국가 데이터[1] 현지의 subLinkName = 하위 국가 데이터.링크 또는 하위 국가 데이터[2] 또는 하위 국가 데이터[1] 현지의 하위 링크 아티클 = (기사 그리고. 하위 국가 데이터.그) 그리고. "더" 또는 "" 현지의 subFullLink = 것은 아니다. yn의(논병아리[하위 코드],{o=0}) 그리고. 논병아리[하위 코드] 또는 (접두어..하위 링크 아티클..subLinkName..접미사) 현지의 RedLink 없음 = 실패로 끝나다({yn3(논병아리[하위 코드.."_noredlink"],1), 레드링크 없음,하위 국가 데이터.노드 링크 또는 0}) 한다면 yn의(논병아리[하위 코드],{u=1}) 그리고. (논병아리[하위 코드] 또는 (것은 아니다. (하위 그룹.스위치 그리고. 논병아리[하위 그룹.스위치]) 그리고. 것은 아니다. 하위 그룹.숨은 또는 하위 그룹.스위치 그리고. 논병아리[하위 그룹.스위치] 그리고. xor(yn의(논병아리[하위 그룹.스위치],{o=0}),하위 그룹.negate_switch)) 그리고. 것은 아니다. (하위 국가 데이터.스위치 그리고. 논병아리[하위 국가 데이터.스위치]) 그리고. 것은 아니다. 하위 국가 데이터.숨은 또는 하위 국가 데이터.스위치 그리고. 논병아리[하위 국가 데이터.스위치] 그리고. xor(yn의(논병아리[하위 국가 데이터.스위치],{o=0}),하위 국가 데이터.negate_switch)) 그리고나서 한다면 (논병아리[하위 코드] 또는 RedLink 없음~=1 또는 mw.제목.신규(subFullLink).존재한다) 그리고. 것은 아니다. 링크를 해제합니다(논병아리[하위 코드]) 그리고나서 현지의 레디르 없음 = 실패로 끝나다({yn3(논병아리[하위 코드.."_직접 연결 안 함]), 노 레더즈,하위 국가 데이터.직접적이지 않은 또는 0}) 하위 목록[#하위 목록+1] = "<li>["..(레디르 없음==1 그리고. 대상 리디렉션(subFullLink) 또는 subFullLink) .." "..하위 국가Name.."[]//li" 하위 목록 소트 맵[#하위 목록 소트 맵+1] = {논병아리[하위 코드.."_filename"] 또는 논병아리[하위 코드.."_name"] 또는 하위 국가 데이터[2] 또는 하위 국가 데이터[1],#하위 목록 소트 맵+1} 그렇지 않으면 링크를 해제합니다(논병아리[하위 코드]) 또는 링크를 해제합니다(논병아리[하위 코드.."_noredlink"]) 또는 연결 해제RedLinks 또는 링크를 해제합니다(하위 국가 데이터.노드 링크) 그리고나서 하위 목록[#하위 목록+1] = "<li>"..하위 국가Name.."/li" 하위 목록 소트 맵[#하위 목록 소트 맵+1] = {논병아리[하위 코드.."_filename"] 또는 논병아리[하위 코드.."_name"] 또는 하위 국가 데이터[2] 또는 하위 국가 데이터[1],#하위 목록 소트 맵+1} 끝. 끝. 끝. --공백이 아닌 경우 국가 항목에 추가 한다면 #하위 목록>0 그리고나서 테이블. 테이블.(하위 목록 소트 맵, 기능.(t1,t2) 돌아가다 t1[1]<t2[1] 끝.) 현지의 하위 목록 정렬 = {} 위해서 목록 위치 정렬,목록 항목 정렬 에 짝을 짓다(하위 목록 소트 맵) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 하위 목록 정렬[목록 위치 정렬] = 하위 목록[목록 항목 정렬[2]] 끝. listItem = (listItem 또는 countryName).."\n<ul>\n"..테이블.콘캣(하위 목록 정렬,"\n").."\n</ul>" 끝. 끝. 한다면 listItem 그리고나서 목록.[#목록.+1] = "<li>"..listItem.."/li" listSortMap[#listSortMap+1] = {논병아리[코드.."_filename"] 또는 countryName, #listSortMap+1} 끝. 끝. --navbox 인수에 그룹 이름 및 데이터 추가 한다면 데이터.["그룹"..n번째 그룹].이름. 그리고나서 한다면 string.match(데이터.["그룹"..n번째 그룹].이름.,"%{%{") 그리고나서 navboxArgs["그룹"..n번째 표시 그룹] = 틀:전처리(데이터.["그룹"..n번째 그룹].이름.) 또 다른 navboxArgs["그룹"..n번째 표시 그룹] = 데이터.["그룹"..n번째 그룹].이름. 끝. 끝. --목록을 정렬하고 비어 있지 않은 경우 navbox 매개변수로 이동합니다. 한다면 #목록.>0 또는 yn의(논병아리.빈 그룹 표시) 그리고나서 테이블. 테이블.(listSortMap, 기능.(t1,t2) 돌아가다 t1[1]<t2[1] 끝.) 현지의 listSorted = {} 위해서 목록 위치 정렬,목록 항목 정렬 에 짝을 짓다(listSortMap) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 listSorted[목록 위치 정렬] = 목록.[목록 항목 정렬[2]] 끝. navboxArgs["리스트"..n번째 표시 그룹] = "<ul>\n"..테이블.콘캣(listSorted,"\n").."\n</ul>" n번째 표시 그룹 = n번째 표시 그룹 + 1 끝. 끝. n번째 그룹 = n번째 그룹 + 1 끝. --navbox 모듈 호출 돌아가다 요구하다("모듈:탐색 상자")._navbox(navboxArgs) 끝. 기능. p.주된(틀) --navbox를 생성합니다(위키텍스트용). 현지의 논병아리 = 요구하다("모듈:인수").args를 얻다(틀, {공백 제거 = 거짓의}) 돌아가다 p.루아 메인(틀,논병아리) 끝. 기능. p.루아리스트(틀,data 페이지) --엔티티 및 관련 매개변수 목록을 생성합니다. --템플릿 문서에서 사용(다른 Lua 스크립트에 사용) --데이터 로드 페이지 현지의 데이터. = 로드 데이터(data 페이지) --테이블 및 머리글 행 작성 현지의 테이블 = mw.html.만들다("테이블"):addClass("반복 가능한 접이식"):CSS("색상","#000") 현지의 테이블 헤드 = 테이블:꼬리표를 달다("tr"):CSS("표준 중량","대담한") 테이블 헤드:꼬리표를 달다("th"):CSS("배경색","#e8e8e8"):위키텍스트("코드") 테이블 헤드:꼬리표를 달다("th"):CSS("배경색","#e8e8e8"):위키텍스트("표시 이름 [링크 이름]") 테이블 헤드:꼬리표를 달다("th"):CSS("배경색","#e8e8e8"):위키텍스트("스위치") 테이블 헤드:꼬리표를 달다("th"):CSS("배경색","#e8e8e8"):위키텍스트("숨겼나요?") --그룹 위로 루프 현지의 n번째 그룹 = 1 하는 동안에 데이터.["그룹"..n번째 그룹] 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 --그룹 데이터 추가 현지의 그룹 헤드 = 테이블:꼬리표를 달다("tr"):CSS("배경색","#eaf1fe") 그룹 헤드:꼬리표를 달다("스캐너덜너덜) 한다면 데이터.["그룹"..n번째 그룹].이름. 그리고. string.match(데이터.["그룹"..n번째 그룹].이름.,"%{%{") 그리고나서 그룹 헤드:꼬리표를 달다("스캐너덜너덜):CSS("표준 중량","대담한"):위키텍스트(틀:전처리(데이터.["그룹"..n번째 그룹].이름.)) 또 다른 그룹 헤드:꼬리표를 달다("스캐너덜너덜):CSS("표준 중량","대담한"):위키텍스트(데이터.["그룹"..n번째 그룹].이름. 또는 "<i>무명 그룹") 끝. 그룹 헤드:꼬리표를 달다("스캐너덜너덜):css텍스트(데이터.["그룹"..n번째 그룹].negate_switch 그리고. "텍스트 장식:오버라인;" 또는 "") :위키텍스트(데이터.["그룹"..n번째 그룹].스위치 또는 "") 그룹 헤드:꼬리표를 달다("스캐너덜너덜):위키텍스트(데이터.["그룹"..n번째 그룹].숨은 그리고. "예" 또는 "") --그룹 항목 위로 루프 위해서 n차 국가,국가 데이터 에 짝을 짓다(데이터.["그룹"..n번째 그룹].데이터.) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 --단일 입력 데이터 추가 현지의 컨트리 로우 = 테이블:꼬리표를 달다("tr"):CSS("배경색","#f8f8f8") 컨트리 로우:꼬리표를 달다("스캐너덜너덜):위키텍스트(국가 데이터[1]) 현지의 countryName = 컨트리 로우:꼬리표를 달다("스캐너덜너덜):CSS("좌우로 이동","1em"):위키텍스트(국가 데이터[2] 또는 국가 데이터[1]) 한다면 국가 데이터.그 또는 국가 데이터.링크 그리고나서 countryName:위키텍스트(" ["..(국가 데이터.그 그리고. "그" 또는 "") ..(국가 데이터.그 그리고. 국가 데이터.링크 그리고. " " 또는 "") ..(국가 데이터.링크 또는 "").."]") 끝. 컨트리 로우:꼬리표를 달다("스캐너덜너덜):css텍스트(국가 데이터.negate_switch 그리고. "텍스트 장식:오버라인;" 또는 ""):위키텍스트(국가 데이터.스위치 또는 "") 컨트리 로우:꼬리표를 달다("스캐너덜너덜):위키텍스트(국가 데이터.숨은 그리고. "예" 또는 (국가 데이터.노드 링크 그리고. "존재에 따라 달라짐" 또는 "")) --부분군 데이터가 있는 경우 추가 한다면 국가 데이터.부분군 그리고나서 현지의 하위 목록 헤드 = 테이블:꼬리표를 달다("tr"):CSS("배경색","#feffe2") 하위 목록 헤드:꼬리표를 달다("스캐너덜너덜) 하위 목록 헤드:꼬리표를 달다("스캐너덜너덜):CSS("좌우로 이동","2em"):CSS("표준 중량","대담한"):위키텍스트("부분군") 하위 목록 헤드:꼬리표를 달다("스캐너덜너덜):css텍스트(국가 데이터.부분군.negate_switch 그리고. "텍스트 장식:오버라인;" 또는 "") :위키텍스트(국가 데이터.부분군.스위치 또는 "") 하위 목록 헤드:꼬리표를 달다("스캐너덜너덜):위키텍스트(국가 데이터.부분군.숨은 그리고. "예" 또는 "") 위해서 n번째 하위 국가,하위 국가 데이터 에 짝을 짓다(국가 데이터.부분군) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 현지의 하위 국가 행 = 테이블:꼬리표를 달다("tr"):CSS("배경색","#tftfcf4") 하위 국가 행:꼬리표를 달다("스캐너덜너덜):위키텍스트(하위 국가 데이터[1]) 현지의 하위 국가Name = 하위 국가 행:꼬리표를 달다("스캐너덜너덜):CSS("좌우로 이동","2em"):CSS("스캐너 스타일","이탤릭") :위키텍스트(하위 국가 데이터[2] 또는 하위 국가 데이터[1]) 한다면 하위 국가 데이터.그 또는 하위 국가 데이터.링크 그리고나서 하위 국가Name:위키텍스트(" ["..(하위 국가 데이터.그 그리고. "그" 또는 "") ..(하위 국가 데이터.그 그리고. 하위 국가 데이터.링크 그리고. " " 또는 "") ..(하위 국가 데이터.링크 또는 "").."]") 끝. 하위 국가 행:꼬리표를 달다("스캐너덜너덜):css텍스트(하위 국가 데이터.negate_switch 그리고. "텍스트 장식:오버라인;" 또는 "") :위키텍스트(하위 국가 데이터.스위치 또는 "") 하위 국가 행:꼬리표를 달다("스캐너덜너덜):위키텍스트(하위 국가 데이터.숨은 그리고. "예" 또는 (하위 국가 데이터.노드 링크 그리고. "존재에 따라 달라짐" 또는 "")) 끝. 끝. 끝. n번째 그룹 = n번째 그룹 + 1 끝. 돌아가다 끈으로 묶는(테이블) 끝. 기능. p.목록.(틀) --엔티티 및 관련 매개변수 목록을 생성합니다. --템플릿 문서에서 사용(위키텍스트용) 현지의 논병아리 = 요구하다("모듈:인수").args를 얻다(틀) 돌아가다 p.루아리스트(틀,논병아리.데이터.) 끝. 돌아가다 p 