모듈:Namespace 탐지
Module:Namespace detect| 이 루아 모듈은 시스템 메시지와 전체 페이지의 약 26%인 약 14,600,000페이지에 사용된다. 그것에 대한 변경은 위키백과 사용자 인터페이스에 즉각적인 변화를 일으킬 수 있다. 큰 중단과 서버 로드를 방지하려면 모듈의 /샌드박스 또는 /테스트케이스 하위 페이지 또는 사용자 고유의 모듈 샌드박스에서 변경 사항을 테스트해야 한다.테스트한 변경사항은 한 번의 편집으로 이 페이지에 추가될 수 있다.변경 사항을 적용하기 전에 토크 페이지에서 논의하십시오. |
| 이 모듈은 페이지 보호의 대상이 된다.그것은 매우 많은 페이지들이 사용하고 있거나 매우 자주 교체되는 매우 눈에 잘 띄는 모듈이다.공공 기물 파손이나 실수가 많은 페이지에 영향을 미치고 사소한 편집이라도 서버에 상당한 부하를 줄 수 있기 때문에 편집으로부터 보호된다. |
이 모듈을 사용하면 주어진 페이지가 있는 네임스페이스에 따라 다른 텍스트를 출력할 수 있다.{{namespace detect}} 템플릿의 Lua 구현으로, 모든 네임스페이스와 모든 네임스페이스 별칭이 지원되며, 로컬 위키에 대해 네임스페이스 이름이 자동으로 탐지된다.
사용법
{{#8226;네임 스페이스,!--페이지 것이 아니면 현재 페이지>주요=<>입니다. 텍스트를 주요한 네임 스페이스로 돌아올-->이야기)< 네임 스페이스를 감지할 수 있는,!--텍스트를 네임 스페이스에 대한-->>다시!--텍스트 특정 대상 네임 스페이스에 대한-->, 포털=복귀할 메인 페이지)<>것을 찾아내다 범주)사용자)위키 피디아)mediawiki= 책)timedtext)특별한=매체 탭 파일)이미지)모듈) 다른=<> 도와 주=.!--텍스트의 지정되지 않은 네임 스페이스에 대한--& 복귀할 템플릿 =.gt.demospace = <!--- 텍스트를 표시하는 네임스페이스는 --> 제목 = <!-- 토크 페이지를 해당 제목 페이지로 처리하려면 "예"로 설정하십시오. --> }} 매개변수
- 기본 - 페이지가 기본 네임스페이스에 있는 경우 반환할 텍스트.
- talk - 페이지가 talk 네임스페이스에 있는 경우 반환할 텍스트.이것은 어떤 토크 네임스페이스도 될 수 있다 - 그것은 "Talk:," "Wikipedia Talk:," "User talk:," 등과 어울릴 것이다.
- 제목 네임스페이스 매개변수(예: 위키백과, 사용자, 파일...- 페이지가 해당 네임스페이스에 있는 경우 반환할 텍스트.이 모듈은 네임스페이스 별칭과 가상 네임스페이스를 포함한 모든 주체 네임스페이스를 매개 변수로 허용한다.지원되는 값 목록은 아래를 참조하십시오.
- 기타 - 페이지의 네임스페이스에 대한 매개변수가 지정되지 않은 경우 반환할 텍스트.이 텍스트는 다음과 같은 경우에도 반환된다.
demospace=잘못된 네임스페이스 값으로 설정됨. - 제목 - 대화 페이지에서 해당 제목 페이지를 사용하십시오."예", "y", "true" 또는 "1"의 값으로 설정할 수 있다.
- demopage - 네임스페이스를 탐지할 페이지를 지정하십시오.지정되지 않은 경우 및
demospace=매개변수가 설정되지 않은 경우 모듈이 현재 페이지를 사용한다. - demospace - 모듈이 지정된 네임스페이스에 있는 것처럼 작동하도록 하십시오.데모를 위해 자주 사용된다.
네임스페이스 매개 변수
주체 네임스페이스 매개변수에 대해 가능한 값은 다음과 같다.
| 네임스페이스 | 별칭 |
|---|---|
main | |
user | |
wikipedia | project,wp |
file | image |
mediawiki | |
template | |
help | |
category | |
portal | |
draft | |
timedtext | |
module | |
gadget | |
gadget definition |
테이블 함수
가능한 네임스페이스 매개 변수가 서로 다른 테이블을 표시하려면 다음을 사용하십시오.
{{#8226;네임스페이스 탐지 테이블 토크=예} 토크 네임스페이스에 대한 매개 변수를 포함하려면 talk=yes.
다른 Wiki로 포팅
이 모듈은 휴대할 수 있도록 설계되었다.다른 wiki에서 사용하려면 모듈에서 값을 변경하기만 하면 된다.네임스페이스 탐지/구성.그 페이지에는 지시사항이 나와 있다.
기술적 세부사항
모듈이 모듈에서 데이터 페이지를 사용함:네임스페이스 탐지/데이터.이 페이지에는 mw.loadData가 로드되는데, 이는 #invoke당 한 번이 아니라 페이지당 한 번 처리됨을 의미한다.이것은 수행상의 이유로 행해졌다.
--[[ -------------------------------------------------------------------------------- -- -- - 네임스페이스 탐지 - -- -- -- 이 모듈은 루아에 {{namespace detect}} 템플릿을 구현하며 -- -- 몇 가지 개선 사항: 모든 네임스페이스 및 모든 네임스페이스 별칭이 지원됨. -- - 로컬 Wiki에 대해 네임스페이스 이름이 자동으로 탐지됨.- -- 모듈은 또한 해당 주체 네임스페이스 값이 --인 경우 사용할 수 있다. - 대화 페이지에 사용됨.매개 변수 이름은 다른 Wiki에 대해 구성할 수 있음 -- -- 의 "cfg" 표의 값을 변경하여 -- -- 모듈:네임스페이스 탐지/구성 - -- -- -------------------------------------------------------------------------------- --]] 국부적 자료 = mw.로드데이터('모듈:네임스페이스 탐지/데이터') 국부적 아그키스 = 자료.아그키스 국부적 cfg = 자료.cfg 국부적 매핑 = 자료.매핑 국부적 예스노 = 요구하다('모듈:예스노') 국부적 무어먼트 -- 모듈 초기화 지연:논쟁들 국부적 mTableTools -- Lazily 초기화 모듈:TableTools 국부적 ustringLower = mw.우스트링.더 낮게 국부적 p = {} 국부적 기능을 하다 fetchValue(t1, t2) -- 배열 t2의 첫 번째 키에 대해 테이블 t1에서 값 가져오기 -- nil 값이 아닌 t1이 존재한다. 을 위해 i, 핵심을 에 아이페어(t2) 하다 국부적 가치를 매기다 = t1[핵심을] 만일 가치를 매기다 ~= 못을 박다 그때 돌아오다 가치를 매기다 종지부를 찍다 종지부를 찍다 돌아오다 못을 박다 종지부를 찍다 국부적 기능을 하다 equalArrayValue(t, 가치를 매기다) -- 값이 배열 t의 값과 같으면 true를 반환한다.그렇지 않으면 - 거짓으로 돌려주다. 을 위해 i, 배열 값 에 아이페어(t) 하다 만일 가치를 매기다 == 배열 값 그때 돌아오다 진실의 종지부를 찍다 종지부를 찍다 돌아오다 거짓의 종지부를 찍다 기능을 하다 p.getPageObject(페이지를 매기다) -- 페이지 오브젝트 가져오기, pcall을 통해 기능 전달 -- 오류(예: 값비싼 함수 개수 제한 초과) 만일 페이지를 매기다 그때 국부적 성공, pageObject = 피콜(mw.칭호를 붙이다.새로운, 페이지를 매기다) 만일 성공 그때 돌아오다 pageObject 다른 돌아오다 못을 박다 종지부를 찍다 다른 돌아오다 mw.칭호를 붙이다.getCurrentTitle() 종지부를 찍다 종지부를 찍다 -- 다른 모듈과의 역호환성을 위해 제공됨 기능을 하다 p.getParamMappings() 돌아오다 매핑 종지부를 찍다 국부적 기능을 하다 getNamespace(아그) -- 이 함수는 페이지 개체로부터 네임스페이스 이름을 얻는다. 국부적 페이지를 매기다 = fetchValue(아그, 아그키스.감원하다) 만일 페이지를 매기다 == '' 그때 페이지를 매기다 = 못을 박다 종지부를 찍다 국부적 우주 공간의 = fetchValue(아그, 아그키스.우주 공간의) 만일 우주 공간의 == '' 그때 우주 공간의 = 못을 박다 종지부를 찍다 국부적 주제 = fetchValue(아그, 아그키스.주제) 국부적 되받아치다 만일 우주 공간의 그때 -- "우주=주"를 적절하게 처리하십시오. 만일 equalArrayValue(아그키스.본래의, ustringLower(우주 공간의)) 그때 되받아치다 = mw.사이트.네임스페이스[0].이름을 붙이다 다른 되받아치다 = 우주 공간의 종지부를 찍다 다른 국부적 pageObject = p.getPageObject(페이지를 매기다) 만일 pageObject 그때 만일 pageObject.isTalkPage 그때 -- 옵션이 설정된 경우 제목 네임스페이스를 가져오십시오. - 그렇지 않으면 "talk"를 사용하십시오. 만일 예스노(주제) 그때 되받아치다 = mw.사이트.네임스페이스[pageObject.네임스페이스].주제.이름을 붙이다 다른 되받아치다 = '말하다' 종지부를 찍다 다른 되받아치다 = pageObject.ns텍스트 종지부를 찍다 다른 돌아오다 못을 박다 -- 페이지 개체가 존재하지 않는 경우 0을 반환하십시오. 종지부를 찍다 종지부를 찍다 되받아치다 = 되받아치다:gsub('_', ' ') 돌아오다 ustringLower(되받아치다) 종지부를 찍다 기능을 하다 p._주요(아그) -- 매핑 테이블에 저장된 매개 변수에 일치하는 항목이 있는지 확인하십시오. 국부적 네임스페이스 = getNamespace(아그) 또는 '기타' - "기타"가 0일 테이블 키 방지 국부적 모조품 = 매핑[네임스페이스] 또는 {} 국부적 되받아치다 = fetchValue(아그, 모조품) --[[ -- 일치하는 항목이 없으면 다른 네임스페이스에 대한 매개변수를 반환하십시오. -- 네임스페이스에 대해 지정된 텍스트가 없는 경우, -- 탐지되었거나, 우주 공간 매개변수가 유효하지 않은 경우 -- 네임스페이스.탐지된 네임스페이스에 대한 매개 변수는 다음과 같아야 함 - 이런 일이 일어나기 위해 완전히 결석한 것이지, 단순히 빈칸이 아니다. --]] 만일 되받아치다 == 못을 박다 그때 되받아치다 = fetchValue(아그, 아그키스.타사의) 종지부를 찍다 돌아오다 되받아치다 종지부를 찍다 기능을 하다 p.본래의(액자에 넣다) 무어먼트 = 요구하다('모듈:주장') 국부적 아그 = 무어먼트.게타르크스(액자에 넣다, {learblanks = 거짓의}) 국부적 되받아치다 = p._주요(아그) 돌아오다 되받아치다 또는 '' 종지부를 찍다 기능을 하다 p.테이블(액자에 넣다) --[[ -- 제목 네임스페이스 매개 변수에 대한 Wikible 만들기(대상 네임스페이스 매개 변수) -- 문서화 목적.토크 매개변수는 선택사항이며, 경우에 따라 선택 사항임 -- 설명서에서 제외할 필요가 있음. --]] -- 모듈을 로드하고 변수를 초기화하십시오. mTableTools = 요구하다('모듈:TableTools') 국부적 네임스페이스 = mw.사이트.네임스페이스 국부적 cfg = 자료.cfg 국부적 Talk를 사용하다 = 타자를 치다(액자에 넣다) == '테이블' 그리고 타자를 치다(액자에 넣다.아그) == '테이블' 그리고 예스노(액자에 넣다.아그.이야기를 나누다) -- talk 매개 변수를 사용할지 여부. -- 머리글 이름을 가져오십시오. 국부적 기능을 하다 checkValue(가치를 매기다, 체납) 만일 타자를 치다(가치를 매기다) == '끈' 그때 돌아오다 가치를 매기다 다른 돌아오다 체납 종지부를 찍다 종지부를 찍다 국부적 ns헤더 = checkValue(cfg.wikableNamespaceHeader, '네임스페이스') 국부적 앨리어스헤더 = checkValue(cfg.위키피디아의앨리어스헤더, '앨리어스') -- 네임스페이스를 순서대로 정렬하십시오. 국부적 매핑 순서 지정됨 = {} 을 위해 nsname, 모조품 에 쌍들(매핑) 하다 만일 Talk를 사용하다 또는 nsname ~= '말하다' 그때 국부적 엔씨드 = 네임스페이스[nsname].id -- 1을 추가하십시오. 어레이는 1로 시작해야 하므로 nsid 0이(가) 손실됩니다. 엔씨드 = 엔씨드 + 1 매핑 순서 지정됨[엔씨드] = 모조품 종지부를 찍다 종지부를 찍다 매핑 순서 지정됨 = mTableTools.압축파스 배열(매핑 순서 지정됨) -- 테이블을 만드십시오. 국부적 되받아치다 = '{class="probableproperty" .. '\n-' .. '\n! ' .. ns헤더 .. '\n! ' .. 앨리어스헤더 을 위해 i, 모조품 에 아이페어(매핑 순서 지정됨) 하다 을 위해 j, PARAM. 에 아이페어(모조품) 하다 만일 j == 1 그때 되받아치다 = 되받아치다 .. '\n-' .. '\n<코드> .. PARAM. .. '[/code]' .. '\n' 그렇지 않으면 j == 2 그때 되받아치다 = 되받아치다 .. '[code]' .. PARAM. .. '[/code]' 다른 되받아치다 = 되받아치다 .. ', <코드>." .. PARAM. .. '[/code]' 종지부를 찍다 종지부를 찍다 종지부를 찍다 되받아치다 = 되받아치다 .. '\n-' .. '\n}' 돌아오다 되받아치다 종지부를 찍다 돌아오다 p