모듈:슬라이드 쇼/샌드박스 발췌

Module
현지의 p = {} 현지의 발췌 모듈 = 요구하다('모듈:발췌/포털/샌드박스') 현지의 슬라이드 쇼 모듈 = 요구하다('모듈:랜덤 슬라이드쇼/샌드박스') 현지의 랜덤 모듈 = 요구하다('모듈:랜덤')  현지의 디폴트_LIMIT = 25 -- 슬라이드 쇼에 표시되는 발췌의 최대수 현지의 출처_PAGES_LIMIT = 10 -- 링크/목록 항목을 확인하는 최대 페이지 수  -- 소스 페이지 추적을 위한 BHG 추가를 시작합니다. 현지의 소스 페이지 사용 = {}; 현지의 sourcepagesused 카운터 = 0; 현지의 기사 리스트 카운트 = -1; 현지의 uses Embedded List = 거짓의; -- 소스 페이지 추적을 위한 BHG 추가 종료  기능. 청소 Args(args 테이블)  현지의 클린아그 = {}  위해서 열쇠,   쌍들(args 테이블) 하다   한다면 유형() == '문자열 그리고나서     = :경기('^%s*(-)%s*
                
) 한다면 ~= '' 그리고나서 클린아그[열쇠] = 끝. 또 다른 클린아그[열쇠] = 끝. 끝. 돌아가다 클린아그 끝. 기능. 디카인드() 한다면 것은 아니다. 그리고나서 돌아가다 거짓의 끝. 현지의 거부된 단어 = "거절 거부 제외 제외 제외 false none not no off 생략 생략 제거 제거" 돌아가다 string.find(거부된 단어 , ' '....' ', 1, 진실의 ) 그리고. 진실의 또는 거짓의 끝. --[[ @param {String} Wikitext:목록만 Wikitext(각 행이 목록 항목임) @param {String} 기호:목록의 Wikitext 마크업에 사용되는 특수 문자(예: '*' 또는 '#') @param {String} outerTag:각 목록 또는 하위 목록의 태그 텍스트 부분(예: 'ul' 또는 'ol') @param {String} innerTag:각 목록 항목의 태그 텍스트 부분(예: 'li') ]] 현지의 Wikitext ToHtml 목록 = 기능.(위키텍스트, 기호., 외부 태그, 내부 태그) 현지의 부품 목록 = {} 위해서 수평, 아이템 .스트링.gmatch('\n'..위키텍스트..'\n', '\n(%'..기호...'+'(-)%f[\n]') 하다 table.insert(부품 목록, {수평=수평, 아이템=아이템}) 끝. table.insert(부품 목록, {수평='', 아이템=''}) 현지의 html 리스트 = {} 위해서 i, 이것. 아이페어( 부품 목록 ) 하다 현지의 isFirstItem(ISFirstItem) = (i == 1) 현지의 isLastItem(isLastItem) = (i == #부품 목록) 현지의 최종 레벨 = isFirstItem(ISFirstItem) 그리고. '' 또는 부품 목록[i-1]['레벨] 현지의 태그 한다면 #최종 레벨 == #이것..수평 그리고나서 태그 = '/'..내부 태그..'><'..내부 태그..'>' 그렇지 않으면 #이것..수평 > #최종 레벨 그리고나서 태그 = string.rep('<'..외부 태그..'><'..내부 태그..'>', #이것..수평 - #최종 레벨) 그렇지 않으면 isLastItem(isLastItem) 그리고나서 태그 = string.rep('/'..내부 태그..'/'..외부 태그..'>', #최종 레벨) 또 다른 -- ( # this . level < # last Level ) 。마지막 항목이 아닙니다. 태그 = string.rep('/'..내부 태그..'/'..외부 태그..'>', #최종 레벨 - #이것..수평 ) .. '/'..내부 태그..'><'..내부 태그..'>' 끝. table.insert(html 리스트, 태그 .. 이것..아이템) 끝. 돌아가다 table.concat(html 리스트) 끝. --[[ @param {String} Wikitext:0개 이상의 목록을 포함하는 Wikitext Excertp @param {String} 기호:목록의 Wikitext 마크업에 사용되는 특수 문자(예: '*' 또는 '#') @param {String} outerTag:각 목록 또는 하위 목록의 태그 텍스트 부분(예: 'ul' 또는 'ol') @param {String} innerTag:각 목록 항목의 태그 텍스트 부분(예: 'li') ]] 현지의 gsubWikitext 리스트 = 기능.(위키텍스트, 기호., 외부 태그, 내부 태그) --목록 줄 바꿈을 일시적으로 삭제합니다... 위키텍스트 = .스트링.서브(위키텍스트..'\n', '\n%'..기호., '¿¿¿'..기호.) 전체 목록(및 목록만)을 가져올 수 있도록... 돌아가다 .스트링.서브( 위키텍스트, '¿¿¿%'..기호...'[^\n]+', 기능.(리스트 Wikitext) ...그리고 회선 차단기를 복구합니다. 리스트 Wikitext = .스트링.서브(리스트 Wikitext, '¿¿¿%'..기호., '\n'..기호.) --...마지막으로 변환을 실시합니다. 돌아가다 Wikitext ToHtml 목록(리스트 Wikitext, 기호., 외부 태그, 내부 태그) 끝. ) 끝. 현지의 파이프의 치환하다With Magicword(매직워드 포함) = 기능.(t) 돌아가다 .스트링.서브(t, ' ', '{{!}}') 끝. --[[ gsub strip 테이블과 템플릿이 산문의 일부가 아닌 것을 돕습니다. 다른 템플릿 내에서 줄 바꿈을 삭제합니다. 및 파서 함수 전처리 ]] 현지의 프로세스 브레이스 = 기능.(t) 현지의 테이블 = .스트링.후보선수(.본문.다듬다(t), 2, 2) == ' ' 한다면 테이블 그리고나서 돌아가다 '' 끝. --그렇지 않으면 템플릿 또는 파서 함수입니다. 현지의 첫번째 = .스트링.후보선수(t, 1, 1) 현지의 지난 = .스트링.후보선수(t, -1) 현지의 is Not Part Of Prose = 첫번째 == '\n' 그리고. 지난 == '\n' 한다면 is Not Part Of Prose 그리고나서 돌아가다 '' 끝. 현지의 isParser 기능 = .스트링.후보선수(.본문.다듬다(t), 3, 3) == '#' 한다면 isParser 기능 그리고나서 현지의 = .get Current Frame(전류 프레임)() 돌아가다 :전처리(t) 끝. -- 그렇지 않으면 파이프를 교체하고 내부 라인브레이크를 제거합니다. 돌아가다 파이프의 치환하다With Magicword(매직워드 포함)(.스트링.서브(t, '\n*', '')) 끝. 현지의 클린업 엑서셉트 = 기능.(발췌.) -- 스트립 갤러리 발췌. = .스트링.서브(발췌., "<%s*[G]allery.-> -<%s*/%s*[G]allery%s*>", "") -- 테이블과 블록 템플릿을 제거합니다. 인라인 템플릿 내에서 새 선을 제거하고 파이프를 바꿉니다. 발췌. = .스트링.서브(발췌...'\n', '\n?%b{}\n?', 프로세스 브레이스) -- 링크 내의 파이프를 교환합니다. 발췌. = .스트링.서브(발췌., '%b[]', 파이프의 치환하다With Magicword(매직워드 포함)) -- 다른 파이프를 html 엔티티로 바꿉니다. 발췌. = .스트링.서브(발췌., ' ', '&#p;') -- wikitext 글머리 기호 목록을 html 글머리 기호 목록으로 바꿉니다. 발췌. = gsubWikitext 리스트(발췌., '*', '울', '리') -- Wikitext 번호 목록을 html 번호 목록으로 바꿉니다. 발췌. = gsubWikitext 리스트(발췌., '#', 'ol', '리') 발췌. = .본문.다듬다(발췌.) 돌아가다 발췌. 끝. 기능. 갤러리 Args를 만들다(타이틀, 옵션들, 제한., 랜덤하지 않다) 현지의 갤러리 Args = {} 현지의 타이틀 시퀀스 = {} 현지의 i = 1 하는 동안에 타이틀[i] 하다 타이틀 시퀀스[i] = 타이틀[i] i = i + 1 끝. 현지의 정렬된 제목 = 랜덤하지 않다 그리고. 타이틀 시퀀스 또는 랜덤 모듈.주된('어레이, {t=타이틀 시퀀스, 제한.=제한.}) 위해서 _i, 직함 아이페어(정렬된 제목) 하다 한다면 (#갤러리 Args / 2) < > 제한. 그리고나서 현지의 성공., 발췌. = pcall(발췌 모듈.얻다, 직함, 옵션들) 한다면 것은 아니다. 성공. 그리고나서 .로그.("require('모듈:발췌').실패: " .. 발췌.) --아마도 레드링크를 받았을 겁니다. 발췌. = 제로 끝. 한다면 발췌. 그리고. 발췌. ~= '' 그리고. #발췌. > 10 그리고나서 --몇글자이상일경우다시체크해주세요(전체기사...) 발췌. = 클린업 엑서셉트(발췌.) 한다면 옵션들. 그리고나서 발췌. = 발췌. .. " ('''[[" .. 직함 .. " " .. 옵션들. .. "]]''')" 끝. 현지의 본문 = '<div style ===}}:text-align:left;>' .. .스트링.서브(발췌., '%c', '<br>') .. '/div>' table.insert(갤러리 Args, '파일:Blank.png') table.insert(갤러리 Args, 본문) 끝. 끝. 끝. 한다면 랜덤하지 않다 그리고나서 갤러리 Args.랜덤 = 'false' 끝. 한다면 #갤러리 Args == 0 그리고. 옵션들.스탭 그리고나서 -- stub를 포함하여 다시 시도합니다. 옵션들.스탭 = 거짓의 돌아가다 갤러리 Args를 만들다(타이틀, 옵션들, 제한., 랜덤하지 않다) 또 다른 돌아가다 갤러리 Args 끝. 끝. 현지의 제조 옵션 = 기능.(args) 현지의 옵션들 = args -- 기타 옵션 선택: more, errors, fileargs 옵션들.패러 플래그 = 발췌 모듈.번호 플래그(args.단락 또는 "") -- 패러그래프 (예: "1,3-5" → {"1", 3-5"}) 옵션들.파일 플래그 = 발췌 모듈.번호 플래그(args.파일 또는 "") -- 파일 번호의 해석 한다면 args.스탭 그리고. 디카인드(args.스탭) 그리고나서 옵션들.스탭 = 거짓의 또 다른 옵션들.스탭 = 진실의 끝. 돌아가다 옵션들 끝. 현지의 기사 = 기능.(페이지 제목) 현지의 title 객체 = .직함.신규(페이지 제목) 돌아가다 ( title 객체 그리고. title 객체.네임스페이스 == 0 ) 그리고. 진실의 또는 거짓의 끝. 현지의 get Linked Titles(연결된 제목) = 기능.(args, 방법, 제한.) 현지의 페이지명 = {} 현지의 ii = 1 현지의 is Not Category(is Not Category(카테고리 없음) 하는 동안에 args[ii] 그리고. ii < > 제한. 하다 현지의 페이지 내용 = 발췌 모듈.컨텐츠의 취득(args[ii]) 한다면 페이지 내용 그리고나서 현지의 페이지 섹션 = args["섹션"..ii] 또는 args["섹션"] 현지의 섹션만 = args["섹션만"..ii] 또는 args["섹션만"] 현지의 본문 = 페이지 내용 한다면 페이지 섹션 그리고나서 -- 관련 섹션만 확인합니다. 현지의 성공., 결과 = pcall(발췌 모듈.get section(get section), 페이지 내용, 페이지 섹션, 섹션만) 한다면 것은 아니다. 성공. 그리고나서 .로그.("require('모듈:발췌').getSection이 "의 내용에 실패했습니다. .. args[ii] .. ": " .. 결과) 결과 = 제로 끝. 본문 = 결과 또는 페이지 내용 끝. -- 소스 페이지 추적을 위한 BHG 추가를 시작합니다. 현지의 이 페이지 = .직함.get Current Title(전류 제목)().nsText .. ":" .. .직함.get Current Title(전류 제목)().본문 현지의 이베레파람 = .스트링.서브(args[ii], "^([^#]+).*$", "%1", 1) -- 매개변수의 페이지 이름에서 섹션 앵커를 제거합니다. 한다면 (이 페이지 == 이베레파람) 그리고나서 uses Embedded List = 진실의; 끝. -- 소스 페이지 추적을 위한 BHG 추가 종료 -- 주석이 달린 링크를 실제 링크로 바꿉니다. 본문 = .스트링.서브(본문, "{{%s*[Aa]notated[ _ ]link%s*%s*(-)%s*}", "[[%1]]") 한다면 방법 == '링크' 그리고나서 위해서 p .스트링.gmatch(본문, %[%[%s*([^%])\n]*)") 하다 한다면 기사(p) 그리고나서 table.insert(페이지명, p) 끝. 끝. 또 다른 -- listitem : "see also" 또는 그 이후의 섹션을 제외하고 *, :# 등으로 시작하는 행의 첫 번째 Wikilink 본문 = .스트링.서브(본문, "\n== *「」도 참조.*", "") 위해서 p .스트링.gmatch(본문, "\n:*[%*#][^\n]-%[%[%s*([^%]\n]*)") 하다 한다면 기사(p) 그리고나서 table.insert(페이지명, p) 끝. 끝. 끝. -- 소스 페이지 추적을 위한 BHG 추가를 시작합니다. 한다면 ((방법 == "목록 항목") 또는 (방법 == '링크')) 그리고나서 table.insert(소스 페이지 사용, args[ii]) sourcepagesused 카운터 = sourcepagesused 카운터 + 1 끝. -- 소스 페이지 추적을 위한 BHG 추가 종료 끝. ii = ii + 1 끝. --추적용 BHG 추가를 시작합니다. 기사 리스트 카운트 = #페이지명 --추적용 BHG 추가 종료 돌아가다 페이지명 끝. -- 템플릿 진입점: --랜덤발췌:템플릿 파라미터로 지정된 제목({Transclude random extract}에 상당) p.랜덤 추출 = 기능.() 현지의 부모 = .부모 취득() 현지의 산출량 = p._ipt(부모.args, '실패') 돌아가다 :확장 태그{ 이름.='패턴 스타일', args = { src='모듈:랜덤 슬라이드쇼/샌드박스/스타일.css'} } .. :전처리(산출량) 끝. --linkedExcerpt:1페이지 이상의 링크 제목 ({Transclude linked extract}와 유사) p.linkedExcerpt = 기능.() 현지의 부모 = .부모 취득() 현지의 산출량 = p._ipt(부모.args, '링크') 돌아가다 :확장 태그{ 이름.='패턴 스타일', args = { src='모듈:랜덤 슬라이드쇼/샌드박스/스타일.css'} } .. :전처리(산출량) 끝. -- listItem발췌:링크 리스트 아이템의 타이틀 1페이지 이상 ({Transclude list item extract}과 유사) p.리스트 아이템발췌 = 기능.() 현지의 부모 = .부모 취득() 현지의 산출량 = p._ipt(부모.args, '목록 항목') 돌아가다 :확장 태그{ 이름.='패턴 스타일', args = { src='모듈:랜덤 슬라이드쇼/샌드박스/스타일.css'} } .. :전처리(산출량) 끝. -- 모듈 진입점: p._ipt = 기능.(_sys, 방법) 현지의 args = 청소 Args(_sys) args. = 발췌 모듈.상세 링크본문(_sys.) 현지의 옵션들 = 제조 옵션(args) 현지의 제한. = args.제한. 그리고. 톤수(args.제한.) 또는 디폴트_LIMIT 현지의 타이틀 한다면 방법 == '링크' 또는 방법 == '목록 항목' 그리고나서 타이틀 = get Linked Titles(연결된 제목)(args, 방법, 출처_PAGES_LIMIT) 또 다른 타이틀 = args 끝. 현지의 갤러리 Args = 갤러리 Args를 만들다(타이틀, 옵션들, 제한., 디카인드(_sys.랜덤)) 돌아가다 슬라이드 쇼 모듈.메인(갤러리 Args, 거짓의, 'excerptSlideshow-container') .. 체크소스 페이지() 끝. p._cleanUpExcerpt = 클린업 엑서셉트 -- 소스 페이지 추적을 위한 BHG 추가를 시작합니다. 기능. 체크소스 페이지() -- Portal 네임스페이스에 없는 한 트래킹은 할 수 없습니다. 한다면 (.직함.get Current Title(전류 제목)().nsText ~= "포털") 그리고나서 돌아가다 "" 끝. 현지의 페이지 카운터 = 0; 현지의 템플릿 카운트 = 0; 현지의 아웃라인 카운트 = 0; 현지의 회수하다 =""; 현지의 usesEponymous기사 = 거짓의; 현지의 디버깅 = 거짓의; 현지의 이 PageBareName = .직함.get Current Title(전류 제목)().본문; 한다면 디버깅 그리고나서 회수하다 = '<div style=" display: block; 테두리: 10px 녹색, 배경색: #efe; 패딩:1em; 여백:1em'>\n----\n' 회수하다 = 회수하다 .. "sourcepagesused 카운터: " .. sourcepagesused 카운터 .. "\n----\n" 회수하다 = 회수하다 .. "사용 페이지:" 끝. 현지의 수식 위해서 수식 배열값(소스 페이지 사용) 하다 한다면 디버깅 그리고나서 회수하다 = 회수하다 .. "\n# [[:" .. 수식 .. "]]" 회수하다 = 회수하다 .. " — " .. "첫 번째 999 = /" .. 스트링.서브(수식, 1, 999) .. "/" 끝. 한다면 (string.find(수식, "^[T]템플릿?:") == 1) 그리고나서 템플릿 카운트 = 템플릿 카운트 + 1; 끝. 한다면 (string.find(수식, "^[O]utline +/") == 1) 그리고나서 아웃라인 카운트 = 아웃라인 카운트 + 1; 끝. 한다면 (수식 == 이 PageBareName) 그리고나서 usesEponymous기사 = 진실의; 끝. 페이지 카운터 = 페이지 카운터 + 1 끝. 한다면 디버깅 그리고나서 회수하다 = 회수하다 .. "\n총 페이지 수: " .. 페이지 카운터 회수하다 = 회수하다 .. "\n템플릿 수: " .. 템플릿 카운트 회수하다 = 회수하다 .. "/div>" 끝. --먼저 두 계산법이 동일한 결과를 산출했는지 건전성 검사를 실시합니다. 한다면 (sourcepagesused 카운터 == 페이지 카운터) 그리고나서 -- 모든 페이지가 템플릿인 경우 추적 카테고리를 채웁니다. 한다면 (페이지 카운터 == 템플릿 카운트) 그리고나서 한다면 (템플릿 카운트 == 1) 그리고나서 회수하다 = 회수하다 .. "[카테고리:하나의 템플릿만으로 작성된 기사 목록을 가진 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (템플릿 카운트 == 2) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록을 2개의 템플릿만으로 작성하는 자동 기사 슬라이드 쇼 포털]" 그렇지 않으면 (템플릿 카운트 == 3) 그리고나서 회수하다 = 회수하다 .. "[카테고리:3개의 템플릿만으로 작성된 기사 목록을 가진 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (템플릿 카운트 > 3) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록을 4개 이상의 템플릿만으로 작성하는 자동 기사 슬라이드 쇼 포털]" 끝. 그렇지 않으면 (템플릿 카운트 > 0) 그리고나서 회수하다 = 회수하다 .. "[카테고리:하나 이상의 템플릿 및 기타 소스를 사용하여 작성된 기사 목록을 포함하는 자동 기사 슬라이드 쇼 포털]" 끝. 끝. 한다면 (아웃라인 카운트 >= 1) 그리고나서 회수하다 = 회수하다 .. "[카테고리:하나 이상의 개요 페이지를 사용하여 작성된 기사 목록을 포함하는 자동 기사 슬라이드 쇼 포털]" 끝. 한다면 (기사 리스트 카운트 < > 2) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 기사가 2개 미만인 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 5) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 2~5개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 10) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 6~10개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 15) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 11~15개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 20) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 16~20개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 25) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 21~25개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 30) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 26~30개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 40) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 31~40개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 50) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 41~50개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 100) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 51~100개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 200) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 101~200개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 500) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 201~500개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 <=> 1000) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 501~1000개의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 그렇지 않으면 (기사 리스트 카운트 > 1000) 그리고나서 회수하다 = 회수하다 .. "[카테고리:기사 목록에 1000개 이상의 기사가 포함된 자동화된 기사 슬라이드 쇼 포털]" 끝. 한다면 uses Embedded List 그리고나서 회수하다 = 회수하다 .. "[카테고리:리스트가 내장된 자동 기사 슬라이드 쇼 포털]" 끝. 한다면 usesEponymous기사 그리고나서 회수하다 = 회수하다 .. "[카테고리:익명의 기사를 사용하여 작성된 기사 목록이 있는 자동 기사 슬라이드 쇼 포털]" 끝. 돌아가다 회수하다 끝. 기능. 배열값(t) 현지의 i = 0 돌아가다 기능.() i = i + 1; 돌아가다 t[i] 끝. 끝. -- 소스 페이지 추적을 위한 BHG 추가 종료 돌아가다 p