-- 모듈:Excrept는 Excrept 템플릿을 구현합니다. -- 설명서 및 마스터 버전: https://en.wikipedia.org/wiki/Module:Excerpt -- 작성자: 사용자:소피보러스, 사용자:인증서, 사용자:에이단9382 외 -- 라이선스: CC-BY-SA-3.0 현지의 트랜스클루더 = 요구하다( '모듈:트랜스클루더' ) 현지의 예스 노 = 요구하다( '모듈:Yes no'. ) 현지의 네 알겠습니다, 구성의 = pcall( 요구하다, '모듈:발췌/구성' ) 한다면 것은 아니다. 네 알겠습니다 그리고나서 구성의 = {} 끝. 현지의 p = {} -- 인수를 가져오는 도우미 함수 현지의 아그르그르그르그르그르그르그르그르그. 현지의 기능. getArg( 열쇠, 체납 ) 현지의 가치 = 아그르그르그르그르그르그르그르그르그.[ 열쇠 ] 한다면 가치 그리고. mw.본문.다듬다( 가치 ) ~= '' 그리고나서 돌아가다 가치 끝. 돌아가다 체납 끝. -- 오류를 처리하는 도우미 기능 현지의 기능. getError( 메세지, 가치 ) 한다면 유형( 메세지 ) == '끈'. 그리고나서 메세지 = 트랜스클루더.getError( 메세지, 가치 ) 끝. 한다면 구성의.분류 그리고. 구성의.분류.과오 그리고. mw.표제.현재 제목 가져오기().isContentPage 그리고나서 메세지:절점( '[[카테고리:]' .. 구성의.분류.과오 .. ']]' ) 끝. 돌아가다 메세지 끝. -- 지역화된 메시지를 가져오는 도우미 기능 현지의 기능. 메시지 가져오기( 열쇠 ) 현지의 네 알겠습니다, TNT = pcall( 요구하다, '모듈:TNT' ) 한다면 것은 아니다. 네 알겠습니다 그리고나서 돌아가다 열쇠 끝. 돌아가다 TNT.형식의( 'I18n/Module:발췌.탭', 열쇠 ) 끝. -- 템플릿의 주 진입점 기능. p.주된( 틀 ) 아그르그르그르그르그르그르그르그르그. = 트랜스클루더.구문 분석 Args( 틀 ) -- 요청한 페이지가 있는지 확인합니다. 현지의 페이지입니다. = getArg( 1 ) 한다면 것은 아니다. 페이지입니다. 아니면 페이지입니다. == '{{{1}}}' 그리고나서 돌아가다 getError( '페이지 없음' ) 끝. 현지의 표제 = mw.표제.신규(페이지입니다.) 한다면 것은 아니다. 표제 그리고나서 돌아가다 getError( 'invalid-title', 페이지입니다. ) 끝. 한다면 표제.isRedirect 그리고나서 표제 = 표제.대상 리디렉션 끝. 한다면 것은 아니다. 표제.존재한다 그리고나서 돌아가다 getError( '페이지를 찾을 수 없음', 페이지입니다. ) 끝. 페이지입니다. = 표제.접두사가 붙은 텍스트 -- 템플릿 매개 변수에서 변수 설정 현지의 부분 = getArg( 2, mw.우스트링.경기( getArg( 1 ), '[^#]+#(.+)' ) ) 현지의 모자 = 예스 노( getArg( '모자', 진실의 ) ) 현지의 편집하다, 편집하다, 편집하다 = 예스 노( getArg( '편집', 진실의 ) ) 현지의 이것. = getArg( 이거. ) 현지의 오직. = getArg( '온리' ) 현지의 서류철 = getArg( '파일', getArg( 파일', ( 오직. == 파일' 그리고. 1 ) ) ) 현지의 목록들 = getArg( '리스트', getArg( '리스트', ( 오직. == '리스트' 그리고. 1 ) ) ) 현지의 테이블들 = getArg( 'tables', getArg( '테이블', ( 오직. == '테이블' 그리고. 1 ) ) ) 현지의 템플릿 = getArg( 'templates', getArg( 'template', ( 오직. == 'template' 그리고. 1 ) ) ) 현지의 단락들 = getArg( '단문', getArg( '단락', ( 오직. == '단락' 그리고. 1 ) ) ) 현지의 참고 문헌 = getArg( 'refe' ) 현지의 소분류 = 것은 아니다. 예스 노( getArg( '하위 섹션' ) ) 현지의 링크 없음 = 것은 아니다. 예스 노( getArg( 'links', 진실의 ) ) 현지의 노볼드 = 것은 아니다. 예스 노( getArg( '대담한' ) ) 현지의 사용 가능한 파일만 = 예스 노( getArg( '사용 가능한 파일만', 진실의 ) ) 현지의 간략한 날짜 = 예스 노( getArg( 'brief 날짜', 거짓의 ) ) 현지의 인라인의 = 예스 노( getArg( 'inline' ) ) 현지의 인용문 = 예스 노( getArg( 'quote' ) ) 현지의 더 = 예스 노( getArg( '더' ) ) 현지의 학급 = getArg( '수업' ) 현지의 표제를 띄우다 = getArg( '표시 제목' ) 아니면 페이지입니다. -- 해트노트 작성 한다면 모자 그리고. 것은 아니다. 인라인의 그리고나서 한다면 이것. 그리고나서 모자 = 이것. 그렇지 않다면 인용문 그리고나서 모자 = 메시지 가져오기( 이거. ) 그렇지 않다면 오직. 그리고나서 모자 = 메시지 가져오기( 오직. ) 또 다른 모자 = 메시지 가져오기( '섹션' ) 끝. 모자 = 모자 .. ' ' .. 메시지 가져오기( 'excer' ) .. ' ' 한다면 부분 그리고나서 모자 = 모자 .. '[[:' .. 페이지입니다. .. '#' .. mw.우리의.닻 부호화( 부분 ) .. ' ' .. 표제를 띄우다 .. ' § ' .. mw.우스트링.헉헉대다( 부분, '%[%[([^] ]+) ?[^]]*%]%]', '%1' ) .. ']].' -- 중첩된 링크 제거 또 다른 모자 = 모자 .. '[[:' .. 페이지입니다. .. ' ' .. 표제를 띄우다 .. ']].' 끝. 한다면 편집하다, 편집하다, 편집하다 그리고나서 모자 = 모자 .. '<span class="mw-edit section-like plainlinks"><span class="mw-edit section-bracket">[/span>[] 모자 = 모자 .. 표제:풀 울( 'action=edit' ) .. ' ' .. mw.메세지.신규( '섹션 편집' ):평지() 모자 = 모자 .. ']<span class="mw-edit section-bracket">]</span>/span>' 끝. 한다면 구성의.모자 그리고나서 모자 = 구성의.모자 .. 모자 .. '}}' 모자 = 틀:전 처리( 모자 ) 또 다른 모자 = mw.html.만들다( '디브' ):클래스 추가( 'dab 링크 발췌-hat' ):위키텍스트( 모자 ) 끝. 또 다른 모자 = 영의 끝. -- "더 읽기" 링크 작성 한다면 더 그리고. 것은 아니다. 인라인의 그리고나서 더 = "'''[[" .. 페이지입니다. .. '#' .. ( 부분 아니면 '' ) .. " " .. 메시지 가져오기( '더' ) .. "]]'''" 더 = mw.html.만들다( '디브' ):클래스 추가( '인쇄 안함 발췌-더보기' ):위키텍스트( 더 ) 또 다른 더 = 영의 끝. -- 모듈에 대한 옵션 빌드:템플릿 매개 변수 및 원하는 기본값에서 트랜스클루더를 벗어남 현지의 옵션들 = { 서류철 = 서류철, 목록들 = 목록들, 테이블들 = 테이블들, 단락들 = 단락들, 섹션들 = 소분류, 분류 = 0, 참고 문헌 = 참고 문헌, 오직. = 오직. 그리고. mw.본문.다듬다( 오직., 's' ) .. 's', 링크 없음 = 링크 없음, 노볼드 = 노볼드, 자기 링크 없음 = 진실의, 사용할 수 없는 파일 없음 = 사용 가능한 파일만, 동작 스위치 없음 = 진실의, 참조 수정 = 진실의, 링크볼드 = 진실의, } -- 발췌된 내용 자체를 가져옵니다. 현지의 표제 = 페이지입니다. .. '#' .. ( 부분 아니면 '' ) 현지의 네 알겠습니다, 발췌문 = pcall( 트랜스클루더.얻다, 표제, 옵션들 ) 한다면 것은 아니다. 네 알겠습니다 그리고나서 돌아가다 getError( 발췌문 ) 끝. 한다면 mw.본문.다듬다( 발췌문 ) == '' 그리고. 것은 아니다. 오직. 그리고나서 한다면 부분 그리고나서 돌아가다 getError( '섹션-빈', 부분 ) 또 다른 돌아가다 getError( '납이 비어 있음' ) 끝. 끝. -- 출생일과 사망일을 정하되, 첫 번째 단락에서만 한다면 간략한 날짜 그리고나서 현지의 스타트포스 = 1 -- 초기 템플릿 건너뛰기 현지의 s 현지의 e = 0 따라하다 스타트포스 = e + 1 s, e = mw.우스트링.찾아내다( 발췌문, "%s*%b{}%s*", 스타트포스 ) 까지 것은 아니다. s 아니면 s > 스타트포스 s, e = mw.우스트링.찾아내다( 발췌문, "%b ()", 스타트포스 ) -- (...), (년)이 될 수 있습니다. 한다면 s 그리고. s < 스타트포스 + 100 그리고나서 -- 처음부터 가까이 보다 현지의 1년차, 접속사, 2년차 = mw.우스트링.경기( mw.우스트링.후보선수( 발췌문, s, e ), '(%d%d%d+)(-)(%d%d%d+)' ) 한다면 1년차 그리고. 2년차 그리고. (mw.우스트링.경기( 접속사, '[%-–—]' ) 아니면 mw.우스트링.경기( 접속사, '{{%s*[sS]nd%s*}' )) 그리고나서 현지의 y1 = 수적으로(1년차) 현지의 y2 = 수적으로(2년차) 한다면 y2 > y1 그리고. y2 < y1 + 125 그리고. y1 <= 수적으로( os.데이트( "%Y" )) 그리고나서 발췌문 = mw.우스트링.후보선수( 발췌문, 1, s ) .. 1년차 .. "–" .. 2년차 .. mw.우스트링.후보선수( 발췌문, e ) 끝. 끝. 끝. 끝. -- 파일을 찾지 못한 경우 정보 상자에서 파일을 가져오십시오. 현지의 fileNamespaces = 트랜스클루더.namespaces 가져오기( 파일' ) 한다면 ( ( 오직. == 파일' 아니면 오직. == '파일' ) 아니면 ( 것은 아니다. 오직. 그리고. ( 서류철 ~= '0' 아니면 것은 아니다. 서류철 ) ) ) 그리고. -- 파일을 요청한 발신자 것은 아니다. 트랜스클루더.matchAny( 발췌문, '%[%[', fileNamespaces, ':' ) 그리고. -- 그리고 트랜스클루더의 출력에는 파일이 없습니다. 구성의.캡션 -- 템플릿에서 파일을 찾는 데 필요한 구성 옵션이 있습니다. 그리고나서 -- 인포박스를 다른 템플릿과 구별할 수 없기 때문에 모두 검색합니다. 현지의 인포박스 = 트랜스클루더.템플릿 가져오기( 발췌문 ); 인포박스 = 테이블.콘캣( 인포박스 ) 현지의 매개 변수 = 트랜스클루더.매개변수 가져오기( 인포박스 ) 현지의 파일, 캡션, 캡션 위해서 _, 짝 안에 쌍들( 구성의.캡션 ) 하 파일 = 짝[1] 파일 = 매개 변수[파일] 한다면 파일 그리고. 트랜스클루더.matchAny( 파일, '^.*%.', { '[찌][뿌][이]?[Gg]', '[Pp][Nn][Gg]', '[Gg][Ii][FF]', '[Ss][Vv][Gg]' }, '.*' ) 그리고나서 파일 = mw.우스트링.경기( 파일, '%[?%[?.-:([^{ ]+)%]?%]?' ) 아니면 파일 -- [[파일:예제.jpg{!}} upright=1.5]] ~ 예제.jpg 캡션 = 짝[2] 위해서 _, p 안에 쌍들( 캡션 ) 하 한다면 매개 변수[ p ] 그리고나서 캡션 = 매개 변수[ p ] 브레이크. 끝. 끝. 발췌문 = '[[파일:]' .. 파일 .. ' 엄지손가락' .. ( 캡션 아니면 '' ) .. ']]' .. 발췌문 한다면 ( 사용 가능한 파일만 ) 그리고나서 발췌문 = 트랜스클루더.빈 파일 제거( 발췌문 ) 끝. 브레이크. 끝. 끝. 끝. -- 다른 요소와 달리 템플릿은 여기서 필터링됩니다. -- 왜냐하면 우리는 파일을 찾기 위해 정보 상자를 검색해야 했기 때문입니다. 현지의 쓰레기. 한다면 오직. 그리고. ( 오직. == 'template' 아니면 오직. == 'templates' ) 그리고나서 쓰레기., 발췌문 = 트랜스클루더.템플릿 가져오기( 발췌문, 템플릿 ); 또 다른 -- 블랙리스트에 있는 템플릿 제거 현지의 블랙리스트 = 구성의.블랙리스트 그리고. 테이블.콘캣( 구성의.블랙리스트, ',' ) 아니면 '' 한다면 템플릿 그리고나서 한다면 끈의후보선수( 템플릿, 1, 1 ) == '-' 그리고나서 --원하지 않는 템플릿입니다. 블랙리스트에 추가 블랙리스트 = 템플릿 .. ',' .. 블랙리스트 또 다른 --템플릿을 원합니다. 블랙리스트를 대체하고 화이트리스트 역할을 수행합니다. 블랙리스트 = 템플릿 끝. 또 다른 블랙리스트 = '-' .. 블랙리스트 끝. 쓰레기., 발췌문 = 트랜스클루더.템플릿 가져오기( 발췌문, 블랙리스트 ); 끝. -- 여분의 줄 바꿈을 제거하되, 파서가 목록, 표 등을 올바르게 해석할 수 있도록 전후에 하나를 남겨 둡니다. 발췌문 = mw.본문.다듬다( 발췌문 ) 발췌문 = string.gsub( 발췌문, '\n\n\n+', '\n\n' ) 발췌문 = '\n' .. 발췌문 .. '\n' -- 중첩된 범주 제거 발췌문 = 틀:전 처리( 발췌문 ) 현지의 분류, 발췌문 = 트랜스클루더.카테고리 가져오기( 발췌문, 옵션들.분류 ) -- 추적 카테고리 추가 한다면 구성의.분류 그리고나서 현지의 내용 카테고리 = 구성의.분류.내용적인 한다면 내용 카테고리 그리고. mw.표제.현재 제목 가져오기().isContentPage 그리고나서 발췌문 = 발췌문 .. '[[카테고리:]' .. 내용 카테고리 .. ']]' 끝. 현지의 네임스페이스 카테고리 = 구성의.분류[ mw.표제.현재 제목 가져오기().네임스페이스 ] 한다면 네임스페이스 카테고리 그리고나서 발췌문 = 발췌문 .. '[[카테고리:]' .. 네임스페이스 카테고리 .. ']]' 끝. 끝. -- 스타일 로드 현지의 풍격 한다면 구성의.풍격 그리고나서 풍격 = 틀:확장 태그( 'templ 스타일', '', { src = 구성의.풍격 } ) 끝. -- 요소 결합 및 반환 한다면 인라인의 그리고나서 돌아가다 mw.본문.다듬다( 발췌문 ) 끝. 현지의 술래잡기 = '디브' 한다면 인용문 그리고나서 술래잡기 = '블록 인용문' 끝. 발췌문 = mw.html.만들다( '디브' ):클래스 추가( 'excer' ):위키텍스트( 발췌문 ) 현지의 차단하다, 차단하다 = mw.html.만들다( 술래잡기 ):클래스 추가( 'excer pt-block' ):클래스 추가( 학급 ) 돌아가다 차단하다, 차단하다:절점( 풍격 ):절점( 모자 ):절점( 발췌문 ):절점( 더 ) 끝. -- 하위 호환성을 위한 진입점 기능. p.이끌다( 틀 ) 돌아가다 p.주된( 틀 ) 끝. 기능. p.발췌문( 틀 ) 돌아가다 p.주된( 틀 ) 끝. 돌아가다 p