Permanently protected module

모듈:델링크

Module

-- 이 모듈은 대부분의 위키텍스트 링크를 해제합니다.  요구하다(strict)  현지의 p = {}  현지의 getArgs  현지의 기능. delink 역방향 파이프 트릭(s)  한다면 s:경기("^%[%[ .*[\n]") 그리고나서 -- 새 선이나 여러 파이프가 있는지 확인합니다.   돌아가다 s  끝.  돌아가다 s:경기("%[%[ (.*)%]%]")  끝.  현지의 기능. 디링크 파이프 트릭(s)  -- [도움말]에 따라 콜론, 대괄호 및 쉼표를 처리해야 합니다.파이프 트릭]].  -- 먼저 첫 번째 콜론 앞에 있는 텍스트를 제거합니다.  한다면 s:경기(":") 그리고나서   s = s:경기("%[%[.-:(.*) %]%]")  -- 콜론이 없으면 대괄호와 파이프를 제외한 모든 텍스트를 잡습니다.  또 다른   s = s:경기("%[%[(.*) %]%]")  끝.    -- 다음으로 괄호와 쉼표.  한다면 s:경기("%(.-%)$") 그리고나서 -- 대괄호는 쉼표보다 깁니다.   s = s:경기("(.-) ?%(.-%)$")  그 외의 경우에는 s:경기(",") 그리고나서 -- 대괄호가 없으면 첫 번째 쉼표 앞에 텍스트만 표시합니다.   s = s:경기("(.-),.*$")  끝.  돌아가다 s 끝.  -- wikilink target wikilinks= target 반환 현지의 기능. 연결 해제 대상 가져오기(s)  현지의 결과 = s  -- 역 파이프 트릭을 처리합니다.  한다면 결과:경기("%[%[ ") 그리고나서   돌아가다 delink 역방향 파이프 트릭(결과)  끝.    결과 = mw.uri.해독하다(결과, "PATH") -- %-encoded 엔티티를 디코딩합니다.밑줄과 더하기 기호를 남깁니다.  결과 = mw.본문.해독하다(결과, 진실의) -- HTML 엔티티를 해독합니다.    -- 제목이 나쁜지 확인합니다.이를 위해서는 우리가 필요한 것은  -- 링크의 제목 영역, 즉 파이프 앞 부분.  현지의 대상_면적  한다면 결과:경기(" ") 그리고나서 -- 우리가 파이프 연결을 다루고 있는지 알아봅니다.   대상_면적 = 결과:경기("^%[%[(.-) .*%]%]")  또 다른   대상_면적 = 결과:경기("^%[%[(.-)%]%]")  끝.   -- 나쁜 캐릭터가 있는지 확인합니다.  한다면 mw.utstring.경기(대상_면적, "[%[%]<>{}%  %c\n]") 그리고. mw.utstring.경기(대상_면적, "[%[%]<>{}%  %c\n]") ~= "?" 그리고나서   돌아가다 s  끝.    돌아가다 대상_면적 끝.  현지의 기능. 연결 해제된 레이블 가져오기(s)  현지의 결과 = s  -- 역 파이프 트릭을 처리합니다.  한다면 결과:경기("%[%[ ") 그리고나서   돌아가다 delink 역방향 파이프 트릭(결과)  끝.   결과 = mw.uri.해독하다(결과, "PATH") -- %-encoded 엔티티를 디코딩합니다.밑줄과 더하기 기호를 남깁니다.  결과 = mw.본문.해독하다(결과, 진실의) -- HTML 엔티티를 해독합니다.   -- 제목이 나쁜지 확인합니다.이를 위해서는 우리가 필요한 것은  -- 링크의 제목 영역, 즉 파이프 앞 부분.  현지의 대상_면적  한다면 결과:경기(" ") 그리고나서 -- 우리가 파이프 연결을 다루고 있는지 알아봅니다.   대상_면적 = 결과:경기("^%[%[(.-) .*%]%]")  또 다른   대상_면적 = 결과:경기("^%[%[(.-)%]%]")  끝.   -- 나쁜 캐릭터가 있는지 확인합니다.  한다면 mw.utstring.경기(대상_면적, "[%[%]<>{}%  %c\n]") 그리고. mw.utstring.경기(대상_면적, "[%[%]<>{}%  %c\n]") ~= "?" 그리고나서   돌아가다 s  끝.   -- 카테고리, 인터위키 및 파일을 확인합니다.  현지의 대장_ = 결과:경기("%[%[(.-):.*%]%]") 아니면 "" -- 첫번째 콜론 앞에 텍스트를 가져옵니다.  현지의 ns = mw.위치.네임스페이스[대장_] -- 알려진 네임스페이스인지 확인합니다.  한다면 mw.언어.isKnown LanguageTag(대장_) 아니면 (ns 그리고. (ns.표준 이름 == "파일" 아니면 ns.표준 이름 == "카테고리")) 그리고나서   돌아가다 ""  끝.   -- 링크가 [[도움말:]을 사용하는 경우 콜론을 제거합니다.대장 속임수].  한다면 결과:경기("%[%[:") 그리고나서   결과 = "[[" .. 결과:경기("%[%[:(.*%]%])")  끝.   -- [[도움말:]을 사용하여 링크를 처리합니다.파이프 트릭]].  한다면 mw.utstring.경기(결과, "^%[%[[^ ]* %]%]") 그리고나서   돌아가다 디링크 파이프 트릭(결과)  끝.    -- 위키링크의 표시 영역 찾기  한다면 결과:경기(" ") 그리고나서 -- 우리가 파이프 연결을 다루고 있는지 알아봅니다.   결과 = 결과:경기("^%[%[.- (.+)%]%]")   -- 다중 줄 연결 표시에서 새 줄을 제거합니다.   -- 파이프가 첫번째 새 줄 앞에 있는 곳입니다.   결과 = 결과:gsub("\n", "")  또 다른   결과 = 결과:경기("^%[%[(.-)%]%]")  끝.   돌아가다 결과 끝.  현지의 기능. delink URL(s)  -- 우리가 이미 내부 위키링크를 해제했다고 가정해 보겠습니다.  -- 우리는 두 대괄호 사이에 약간의 텍스트를 전달받았습니다.    -- 텍스트에 줄 바꿈이 포함되어 있으면 다른 내용에 관계없이 URL 형식으로 지정되지 않습니다.  한다면 s:경기("\n") 그리고나서   돌아가다 s  끝.    -- 텍스트에 유효한 URL 접두사와 하나 이상의 유효한 URL 문자가 있는지 확인합니다.  현지의 유효_url_prefix = {"//", "http://", "https://", "ftp://", "gopher://", "메일 수신인:", "뉴스:", "irc://"}   현지의 url_  위해서 _ ,v 인에 짝을 짓다(유효_url_prefix) 하다   한다면 mw.utstring.경기(s, '^%[' .. v ..'[^"%s ].*%]' ) 그리고나서    url_ = v    브레이크.   끝.  끝.    -- 표시 텍스트 가져오기  한다면 것은 아니다. url_ 그리고나서   돌아가다 s  끝.  s = s:경기("^%[" .. url_ .. "(.*)%]") -- URL 접두사 뒤와 마지막 대괄호 앞에 있는 텍스트를 모두 잡습니다.  s = s:경기('^-(["<> ).*)') 아니면 "" -- 첫 번째 URL 구분 문자 뒤에 있는 모든 텍스트("<>)를 잡습니다.  s = mw.utstring.경기(s, "^%s*(%S.*)$") 아니면 "" -- 구분 문자가 공백인 경우 잘라냅니다.    현지의 s_ = mw.본문.해독하다(s, 진실의)  한다면 mw.utstring.경기(s_, "%c") 그리고나서   돌아가다 s  끝.   돌아가다 s_  끝.  현지의 기능. delinkLinkClass(본문, 양식, delink 함수)  한다면 유형(본문) ~= "스트링" 그리고나서   오류를(" 문자열이 아닌 입력의 링크 해제를 시도합니다.", 2)  끝.  한다면 유형(양식) ~= "스트링" 아니면 mw.utstring.후보선수(양식, 1, 1) ~= "^" 그리고나서   오류를('잘못된 패턴이 탐지되었습니다'패턴은 "^"로 시작해야 합니다., 2)  끝.  -- 텍스트 문자열을 반복하고 일치하는 텍스트를 바꿉니다.사용중  -- 디링크 함수우리는 오히려 성격별로 반복할 필요가 있습니다.  -- gsub만 사용하는 것이 아니라, 그렇지 않으면 중첩된 링크가 제대로 감지되지 않습니다.  현지의 결과 = ""  하는 동안에 본문 ~= "" 하다   -- gsub의 한 번의 반복을 사용하여 텍스트를 바꿉니다.   본문 = mw.utstring.gsub(본문, 양식, delink 함수, 1)   -- 결과 문자열에 맨 왼쪽 문자를 추가합니다.   결과 = 결과 .. mw.utstring.후보선수(본문, 1, 1)   본문 = mw.utstring.후보선수(본문, 2, -1)  끝.  돌아가다 결과 끝.  기능. p._delink(아그스)  현지의 본문 = 아그스[1] 아니면 ""  한다면 아그스.참조. == "네" 그리고나서   -- [도움말:Strip markers]]]는 ref 태그를 나타냅니다.대부분의 상황에서   -- 이것은 좋은 생각이 아닙니다. 여러분이 무엇을 하고 있는지 알 때만 사용하세요!   본문 = mw.utstring.gsub(본문, "UNIQ%%w*~ref%-%d*~QinU  ", "")  끝.  한다면 아그스.평. ~= "아니오" 그리고나서   본문 = 본문:gsub("<!%-%-.-%-%->", "") -- html 주석을 제거합니다.  끝.   한다면 아그스.위키링크 ~= "아니오" 그리고. 아그스.위키링크 ~= "표적" 그리고나서   -- wikilinks의 링크를 해제하고 wikilink의 레이블 부분을 반환합니다.   본문 = delinkLinkClass(본문, "^%[%[.-%]%]", 연결 해제된 레이블 가져오기)  그 외의 경우에는 아그스.위키링크 == "표적" 그리고나서   -- wikilinks의 링크를 해제하고 wikilink의 대상 부분을 반환합니다.   본문 = delinkLinkClass(본문, "^%[%[.-%]%]", 연결 해제 대상 가져오기)  끝.  한다면 아그스.urls ~= "아니오" 그리고나서   본문 = delinkLinkClass(본문, "^%[.-%]", delink URL) -- URL 링크 해제.  끝.  한다면 아그스.여백 ~= "아니오" 그리고나서   -- 새 줄을 하나의 공백으로 바꾸되 새 줄을 두 개로 남깁니다.   -- 새 줄은 두 번째 새 줄 앞에 공백 또는 탭만 포함합니다.   본문 = mw.utstring.gsub(본문, "([^\n \t][\t]*)\n([\t]*[^\n \t])", "%1 %2")   본문 = 본문:gsub("[\t]+", " ") -- 여분의 탭과 공간을 제거합니다.  끝.  돌아가다 본문 끝.  기능. p.술을 마시다()  한다면 것은 아니다. getArgs 그리고나서   getArgs = 요구하다('모듈:논쟁').getArgs  끝.  돌아가다 p._delink(getArgs(, {포장지 = '템플릿:델링크'})) 끝.  돌아가다 p