모듈:좌현/모래 박스

Module:Portal/sandbox

---[==[ 이 모듈은 기존 {{Portal} 템플릿의 Lua 구현이다.2019년 2월 현재 약 7,900,000개의 기사에 사용되고 있다. -- 업데이트할 때 주의하십시오!포털 목록을 생성하는 p.portal과 p.image의 두 가지 기능을 출력한다. -- 개별 포털의 이미지 이름 생성.  -- 포털 이미지 데이터는 [[Module:포털/이미지]]]]], 아래 나열: - [모듈:포털/이미지/a] - "A"로 시작하는 포털 이름. - [모듈:Portal/images/b] - "B"로 시작하는 포털 이름. - [모듈:Portal/images/c] - "C"로 시작하는 포털 이름. - [모듈:Portal/images/d] - "D"로 시작하는 포털 이름. - [모듈:Portal/images/e] - "E"로 시작하는 포털 이름. - [모듈:Portal/images/f] - "F"로 시작하는 포털 이름. - [모듈:Portal/images/g] - "G"로 시작하는 포털 이름. - [모듈:Portal/images/h] - "H"로 시작하는 포털 이름. - [모듈:Portal/images/i] - "I"로 시작하는 포털 이름. - [모듈:Portal/images/j] - "J"로 시작하는 포털 이름. - [모듈:Portal/images/k] - "K"로 시작하는 포털 이름. - [모듈:Portal/images/l] - "L"로 시작하는 포털 이름. - [모듈:Portal/images/m] - "M"으로 시작하는 포털 이름. - [모듈:Portal/images/n] - "N"으로 시작하는 포털 이름. - [모듈:Portal/images/o] - "O"로 시작하는 포털 이름. - [모듈:Portal/images/p] - "P"로 시작하는 포털 이름. - [모듈:Portal/images/q] - "Q"로 시작하는 포털 이름. - [모듈:Portal/images/r] - "R"로 시작하는 포털 이름. - [모듈:포털/이미지/s] - "S"로 시작하는 포털 이름. - [모듈:Portal/images/t] - "T"로 시작하는 포털 이름. - [모듈:Portal/images/u] - "U"로 시작하는 포털 이름. - [모듈:Portal/images/v] - "V"로 시작하는 포털 이름. - [모듈:Portal/images/w] - "W"로 시작하는 포털 이름. - [모듈:Portal/images/x] - "X"로 시작하는 포털 이름. - [모듈:Portal/images/y] - "Y"로 시작하는 포털 이름. - [모듈:Portal/images/z] - "Z"로 시작하는 포털 이름. - [모듈:포털/이미지/기타] - 다른 문자로 시작하는 포털 이름.여기에는 숫자가 포함된다. - 분음 부호가 있는 문자 및 비 라틴 문자 문자. - [모듈:포털/이미지/별칭] - 기존 포털 이름에 대한 별칭 추가변형에 대해 이 페이지 사용 - 철자법, 분음법 등에서는 포털이 어떤 문자로 시작하든 상관없다. -- -- 이미지 데이터 페이지는 이미지가 추가, 변경 또는 제거될 때 서버 로드를 줄이기 위해 첫 번째 문자로 구분된다. -- 이전에는 모든 이미지가 [[Module:Portal/images]]](포털/이미지] -- 이 모듈을 사용하는 500만 페이지는 이미지를 추가하거나 제거할 때마다 새로 고쳐져야 함 ]==]  국부적 p = {}  - 샌드박스에서 우리를 호출할지 여부를 결정한다. 국부적 이스샌드박스 = mw.getCurrentFrame():getTitle():찾아내다('sandbox', 1, 진실의) 국부적 모래톱을 치다 = 이스샌드박스 그리고 '/message' 또는 ''  국부적 기능을 발휘하다 샌드박스버전(s)  돌아오다 이스샌드박스 그리고 s..'-모래' 또는 s 종지부를 찍다  국부적 템플리트형 = '모듈:포털'..모래톱을 치다..'/styles.css'  국부적 게타르크스 = 요구하다('모듈:주장').게타르크스 국부적 예스노 = 요구하다('모듈:예스노')  -- 추적해서는 안 되는 대화 이외의 네임스페이스 목록(대화 페이지는 추적되지 않음) 국부적 badNamespaces = {'사용자','template','draft','wikipedia'}  -- 이 네임스페이스에서 추적 수행 여부 확인 -- 페이지가 금지된 네임스페이스 중 하나가 아닌 경우 true로 반환 국부적 기능을 발휘하다 체크트래킹(칭호를 붙이다)  국부적 이 페이지 = 칭호를 붙이다 또는 mw.칭호를 붙이다.getCurrentTitle()  만일 이 페이지.isTalkPage 그때   돌아오다 거짓의  종지부를 찍다  국부적 ns = 이 페이지.ns텍스트:더 낮게()  을 위해 _, v  아이페어(badNamespaces) 하다   만일 ns == v 그때    돌아오다 거짓의   종지부를 찍다  종지부를 찍다  돌아오다 진실의 종지부를 찍다  국부적 기능을 발휘하다 matchImagePage(s)  -- 소문자가 지정된 적절한 이미지 하위 페이지 찾기  - 포털 이름에 해당 포털 이름의 첫 글자를 추가하십시오.  만일 타자를 치다(s) ~= '끈' 또는 #s < 1 그때 돌아오다 종지부를 찍다  국부적 퍼스트 레터 = mw.우스트링.후보선수(s, 1, 1)  국부적 imagePage  만일 mw.우스트링.찾아내다(퍼스트 레터, '^[a-z]') 그때   imagePage = '모듈:포털/이미지/' .. 퍼스트 레터 .. 모래톱을 치다  다른   imagePage = '모듈:포털/이미지/기타' .. 모래톱을 치다  종지부를 찍다  돌아오다 mw.로드데이터(imagePage)[s] 종지부를 찍다  국부적 기능을 발휘하다 게탈리아스(s)  -- 이미지 별칭 데이터 페이지에서 별칭 가져오기.  국부적 별칭데이터 = mw.로드데이터('모듈:포털/이미지/별칭'..모래톱을 치다)  을 위해 포탈을 치다, 가명  쌍들(별칭데이터) 하다   을 위해 _, 가명  아이페어(가명) 하다    만일 가명 == s 그때     돌아오다 포탈을 치다    종지부를 찍다   종지부를 찍다  종지부를 찍다 종지부를 찍다  국부적 기능을 발휘하다 getImageName(s)  -- 주어진 문자열의 이미지 이름 가져오기.  국부적 체납 = 'Portal-puzzle.svg link=alt='  만일 타자를 치다(s) ~= '끈' 또는 #s < 1 그때   돌아오다 체납  종지부를 찍다  s = mw.우스트링.더 낮게(s)  돌아오다 matchImagePage(s) 또는 matchImagePage(게탈리아스(s)) 또는 체납 종지부를 찍다   -- 인수 포털에서 오류를 확인하고, 필요한 경우 추적 카테고리를 생성하는 기능  -- 기능이 먼저 너무 적은 수의 포털을 검사함  - 그런 다음 포털 목록을 확인하여 존재하지 않는 포털을 제거하십시오.  -- 인수:  -- 포털: 포털의 원시 목록  - args.properties: 추적이 요청되었는가?(잘못된 제목이나 네임스페이스를 추적하지 않음)  -- args.redlinks: redlinks를 표시해야 하는가?  -- args.minPortals: 최소 포털 인수 수  -- args.maxPortals: 최대 포털 인수 수  -- 반환:  -- portals = redlink가 제거된 포털 목록(만약 args.redlinks=false)  -- trackingCat = 가능한 추적 범주  -- errorMsg = 오류 메시지 기능을 발휘하다 p._checkPortals(포탈, 아그)  국부적 트래킹캣 = ''  국부적 에러엠스그 = 못을 박다    -- 추적이 기본적으로 켜져 있음.  -- 다음 중 하나라도 참일 경우 비활성화됨  -- 1/ 매개 변수 "parameter"가 'no', 'n' 또는 'false'로 설정됨  -- 2/ 현재 페이지 네임스페이스 또는 페이지 이름 테스트 실패  국부적 trackingEnabled = 아그.추적 그리고 체크트래킹()    아그.MinPortals = 아그.MinPortals 또는 1  아그.maxPortals = 아그.maxPortals 또는 -1  - 너무 적은 수의 포털 확인  만일 #포탈 < 아그.MinPortals 그때   에러엠스그 = '최소한 '을(를) 지정하십시오.'..아그.MinPortals..'포털'..(아그.MinPortals > 1 그리고 's 또는 '')   트래킹캣 = (trackingEnabled 그리고 '[카테고리:포털 수가 너무 적은 포털 템플릿]' 또는 '')   돌아오다 포탈, 트래킹캣, 에러엠스그  종지부를 찍다  -- 포털이 너무 많은지 확인  만일 아그.maxPortals >= 0 그리고 #포탈 > 아그.maxPortals 그때   에러엠스그 = '너무 많은 포털(최대 = ')..아그.maxPortals..')'   트래킹캣 = (trackingEnabled 그리고 '[카테고리:포털이 너무 많은 포털 템플릿]' 또는 '')   돌아오다 포탈, 트래킹캣, 에러엠스그  종지부를 찍다  만일 아닌 아그.레드링크 또는 trackingEnabled 그때   -- 존재하는 포털의 새로운 목록 만들기   국부적 기존 포탈 = {}   을 위해 _, 포탈을 치다  아이페어(포탈) 하다    국부적 portalTitle = mw.칭호를 붙이다.새로운(포탈을 치다,"포탈")    - 포털이 있는 경우 목록에 넣으십시오.    만일 portalTitle 그리고 portalTitle.존재한다 그때     table.insert(기존 포탈,포탈을 치다)    &shy; 그렇지 않으면 셋트 트래킹 캣    그렇지 않으면 trackingEnabled 그때     트래킹캣 = "[범주:포털이 재연결된 포털 템플릿]"    종지부를 찍다   종지부를 찍다   -- Redlink가 꺼져 있는 경우, 포털 목록에서 Redlink를 삭제함   포탈 = 아그.레드링크 그리고 포탈 또는 기존 포탈   - 제거 후에도 남아 있는 것이 없으면 추적 고양이 설정   만일 #포탈 == 0 그리고 trackingEnabled 그때    트래킹캣 = 트래킹캣.."[범주:포털 템플릿이 비어 있는 페이지]]"    종지부를 찍다  종지부를 찍다  돌아오다 포탈, 트래킹캣, 에러엠스그 종지부를 찍다  기능을 발휘하다 p._beakes(포탈, 아그)  -- {{portal}} 템플릿에서 사용하는 포털 박스를 구축하는 기능 입니다.    -- 모든 인수 표준화  만일 아그.레드링크 == 'include' 그때 아그.레드링크 = 진실의 종지부를 찍다  아그.addBreak = 아그['브레이크']  을 위해 핵심을, 체납  쌍들({남겨진=거짓의,추적=진실의,최소의=거짓의,                          레드링크=거짓의,addBreak=거짓의,테두리를 두르다=진실의}) 하다   만일 아그[핵심을] == 못을 박다 그때 아그[핵심을] = 체납 종지부를 찍다   아그[핵심을] = 예스노(아그[핵심을], 체납)  종지부를 찍다   국부적 뿌리를 내리다 = mw.html.만들다('div')   :동뜨다('role', 'navigation')   :동뜨다('아리아', '포탈스')   :addClass('노프린트 플레인리스트')   :addClass(샌드박스버전('스파이박스'))   :addClass(아그.테두리를 두르다 그리고 샌드박스버전('경계') 또는 '')   :addClass(아그.남겨진 그리고 '좌측' 또는 '추적')   :css('margin', 아그.여백 또는 못을 박다)   :뉴라인()   국부적 트래킹캣 = ''  국부적 에러엠스그 = 못을 박다  아그.MinPortals = 아그.최소의 그리고 0 또는 1  아그.maxPortals = -1  포탈, 트래킹캣, 에러엠스그 = p._checkPortals(포탈, 아그)  뿌리를 내리다:위키텍스트(트래킹캣)  - 오류 메시지가 표시되면 상자에 넣고 반환  만일 에러엠스그 그때   만일 아그.테두리를 두르다 그때 -- 테두리=아니오일 때 오류 메시지 표시 안 함    국부적 에러태그 = 뿌리를 내리다:꼬리표를 달다('강한')    에러태그:addClass('error')    에러태그:css('padding','0.2em')    에러태그:위키텍스트('오류: '..에러엠스그)   종지부를 찍다   돌아오다 토스트링(뿌리를 내리다)  종지부를 찍다  -- 포털이 없는 경우(오류 없음), 추적 범주만 반환  만일 #포탈 == 0 그때   돌아오다 트래킹캣  종지부를 찍다   -- 목록을 시작하십시오.이는 이전 [[템플릿:Portal]]]]  국부적 리스트루트 = 뿌리를 내리다:꼬리표를 달다('울')   :css('폭', (톤넘버(아그.박스 사이즈의) 또는 0) > 0 그리고 (아그.박스 사이즈의 .. 'px') 또는 아그.박스 사이즈의)   -- 위치 인수에 지정된 포털 표시  을 위해 _, 포탈을 치다  아이페어(포탈) 하다   국부적 이미지 = getImageName(포탈을 치다)    -- 이미지 및 포털 이름에 대한 html 생성   리스트루트    :뉴라인()    :꼬리표를 달다('리')     :꼬리표를 달다('스팬')      :위키텍스트(문자열.format('[파일:%s 32x28px 클래스=노뷰어]', 이미지))      :끝냈다()     :꼬리표를 달다('스팬')      :위키텍스트(문자열.format('[포털:%s %s%ssportal]', 포탈을 치다, 포탈을 치다, 아그.addBreak 그리고 '[<</>] 또는 ' '))  종지부를 찍다  돌아오다 토스트링(뿌리를 내리다) 종지부를 찍다  기능을 발휘하다 p._이미지(포탈)  -- #invoke를 통해 getImageName()에 액세스할 수 있는 래퍼 함수.  국부적 이름을 붙이다 = getImageName(포탈[1])  돌아오다 이름을 붙이다:짝을 맞추다('^(.-) ') 또는 이름을 붙이다 -- FIXME: 이미지 이름과 테두리 등을 구분하는 보다 우아한 방법을 사용 종지부를 찍다  국부적 기능을 발휘하다 GetAllImageTables()  -- mw.loadData로 로드된 모든 이미지 하위 페이지(마이너스 별칭)를 포함하는 배열을 반환한다.  국부적 이미지들 = {}  을 위해 i, 하위 페이지  아이페어{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's, 't', 'u', 'v', 'w', 'x', 'Y', 'z', '기타'} 하다   이미지들[i] = mw.로드데이터('모듈:포털/이미지/' .. 하위 페이지 .. 모래톱을 치다)  종지부를 찍다  돌아오다 이미지들 종지부를 찍다  기능을 발휘하다 p._표시전부(포탈, 아그)  -- 이 함수는 포털 이미지가 있는 모든 포털을 표시한다.이 기능은 유지보수를 위한 것이므로 다음에서 사용해서는 안 된다.  -- 기사, 두 가지 이유: 1) 포털 이미지가 있는 포털이 1500개가 넘고 2) 모듈에서 포털 이미지가 어떻게 기록되는지 기록하지 않는다.  -- 이름은 대문자로 되어 있어서 포털 링크가 끊어질 수도 있다.  국부적 랑그 = mw.언어.getContentLanguage()  국부적 수를 세다 = 1  을 위해 _, imageTable  아이페어(GetAllImageTables()) 하다   을 위해 포탈을 치다  쌍들(imageTable) 하다    포탈[수를 세다] = 랑그:uc(포탈을 치다)    수를 세다 = 수를 세다 + 1   종지부를 찍다  종지부를 찍다  돌아오다 p._beakes(포탈, 아그) 종지부를 찍다  기능을 발휘하다 p._imageDupes()  -- 이 기능은 이미지 하위 페이지를 검색하여 중복된 이미지를 찾아낸다.중복된 이미지가 존재한다면 반드시 나쁜 것만은 아니다.  - 다른 포털에서 같은 이미지를 선택할 수도 있기 때문에.그러나 이 기능은 다음과 같은 이미지를 식별하는 데 도움이 된다.  --유지보수가용이하도록 포털 별칭으로이동해야 함.  국부적 존재한다, 얼간이들 = {}, {}  을 위해 _, imageTable  아이페어(GetAllImageTables()) 하다   을 위해 포탈을 치다, 이미지  쌍들(imageTable) 하다    만일 아닌 존재한다[이미지] 그때     존재한다[이미지] = 포탈을 치다    다른     table.insert(얼간이들, 문자열.format('이미지 "[:File:%s %s]"은 포털 "%s"와 "%s"에 모두 사용된다., 이미지, 이미지, 존재한다[이미지], 포탈을 치다))    종지부를 찍다   종지부를 찍다  종지부를 찍다  만일 #얼간이들 < 1 그때   돌아오다 '복제된 이미지를 찾을 수 없음.'  다른   돌아오다 ' 다음과 같은 중복 이미지가 발견됨:\n* ' .. table.classat(얼간이들, '\n* ')  종지부를 찍다 종지부를 찍다  국부적 기능을 발휘하다 processPortalArgs(아그)  -- 이 함수는 인수의 표를 처리하고 두 개의 표를 반환하는데, IPer에 의한 처리를 위한 포털 이름 배열과 의 표를 반환한다.  -- 스타일 옵션 등을 지정하는 명명된 인수우리는 모든 포털을 순서대로 나열하고 싶기 때문에 아이페어를 사용할 필요가 있다.  -- 템플릿에 전달되었지만, 예를 들어, 명시적으로 전달된 위치상의 논쟁도 처리할 수 있기를 바란다.  --{{portal 2=정치}}}.nil 값이 있으면 ipecer의 동작이 정의되지 않기 때문에 모두 제거되었는지 확인할 필요가 있다.  아그 = 타자를 치다(아그) == '테이블' 그리고 아그 또는 {}  국부적 포탈 = {}  국부적 명명된 아르그스 = {}  을 위해 k, v  쌍들(아그) 하다   만일 타자를 치다(k) == '숫자' 그리고 타자를 치다(v) == '끈' 그때 -- 비 문자열 포털 이름이 없는지 확인하십시오.    table.insert(포탈, k)   그렇지 않으면 타자를 치다(k) ~= '숫자' 그때    명명된 아르그스[k] = v   종지부를 찍다  종지부를 찍다  table.properties(포탈)  을 위해 i, v  아이페어(포탈) 하다   포탈[i] = 아그[v]  종지부를 찍다  돌아오다 포탈, 명명된 아르그스 종지부를 찍다  -- 다른 명명된 인수에서 포털을 정렬하기 위한 진입점 기능을 발휘하다 p._processPortalArgs(아그)  돌아오다 processPortalArgs(아그) 종지부를 찍다  국부적 기능을 발휘하다 메이크워퍼(funcName)  -- 외부 인수를 처리하여 다른 함수로 전송.  돌아오다 기능을 발휘하다 (액자에 넣다)   -- #invoke를 통해 호출될 경우 호출에 전달되는 아그를 사용하십시오.   -- 템플릿 또는 #messages로 전달된 아그(arg)가 존재하는지 여부.그렇지 않으면   -- 디버그 콘솔에서 직접 아그가 전달되는 것으로 가정   - 또는 다른 루아 모듈에서.    -- 또한: 공백을 자르고 빈 인수 제거   국부적 종이접기 = 게타르크스(액자에 넣다)   -- func에 전달할 두 개의 테이블을 만드십시오. 포탈 이름 배열과 명명된 인수 표입니다.   국부적 포탈, 아그 = processPortalArgs(종이접기)   국부적 결과. = ''   만일 funcName == '_portal' 또는 funcName == '_표시올' 그때    결과. = 액자에 넣다:확장 태그{ 이름을 붙이다 = '전형적인 프리스타프리스타입니당, 아그 = { src = 템플리트형} }   종지부를 찍다   돌아오다 결과. .. p[funcName](포탈, 아그)   종지부를 찍다 종지부를 찍다  을 위해 _, funcName  아이페어{'포털', '이미지', '이미지듀프', 전시하다올'} 하다  p[funcName] = 메이크워퍼('_' .. funcName) 종지부를 찍다  돌아오다 p