모듈:Diff/샌드박스
Module| 모듈 샌드박스 페이지는 다음과 같습니다.Diff (diff) |
| 이 모듈은 일반 사용 가능한 것으로 평가되었습니다.성숙한 형태에 이르렀고 비교적 버그가 없으며 적절한 장소에서 사용할 수 있는 것으로 생각됩니다.새로운 사용자가 학습할 수 있는 옵션으로 도움말 페이지 및 기타 위키피디아 리소스를 언급할 준비가 되어 있습니다.서버의 부하와 불량 출력을 줄이려면 시행착오를 반복하는 편집이 아니라 샌드박스 테스트를 통해 개선해야 합니다. |
텍스트를 구분하는 기능을 제공합니다.
사용.
키어런 호프(Ciaran Hope, 1974년 8월 4일 ~ )는 아일랜드의 관현악, 합창, 영화 음악 작곡가이다.
말의 차이
{{TextDiff Ciaran Hope (born 4 August 1974) is an Irish composer of orchestral, choral, and film music. Ciaran Hope (was given birth to on 20 August last year) is an Irish composter of orchestral, oral, and film music dance moves.}}
결과:
| − | 키어런 호프(Ciaran Hope, 1974년 | + | 키어런 호프(Ciaran Hope, 지난해 8월 20일 출생)는 아일랜드 출신의 관현악, 구강, 영화음악 안무 담당 편집자이다. |
문자 차이
{{StringDiff Ciaran Hope (born 4 August 1974) is an Irish composer of orchestral, choral, and film music. Ciaran Hope (was given birth to on 20 August last year) is an Irish composter of orchestral, oral, and film music dance moves.}}
결과:
| − | 키어런 호프(Ciaran Hope, 1974년 | + | 키어런 호프(Ciaran Hope, 지난해 8월 20일 출생)는 아일랜드 출신의 관현악, 구강, 영화음악 안무 담당 편집자이다. |
호출을 사용한 예
{{#제외:디프 메인(Diff main, 1974년 8월 4일 ~ )은 아일랜드의 관현악, 합창, 영화 음악 작곡가이다.키어런 호프(Ciaran Hope, 지난해 8월 20일 출생)는 아일랜드 출신의 관현악, 구강, 영화음악 안무 담당 편집자이다.}}
결과:
| − | 키어런 호프(Ciaran Hope, 1974년 | + | 키어런 호프(Ciaran Hope, 지난해 8월 20일 출생)는 아일랜드 출신의 관현악, 구강, 영화음악 안무 담당 편집자이다. |
----------------------------------------------------------------------------- -- 텍스트를 구분하는 기능을 제공합니다. -- -- (c) 2007, 2008 유리 타크테예프(yuri@freewisdom.org) -- (c) 2007년 히샴 무함마드 -- MediaWiki LUA: [[사용자:Ebraminio]< ebrahim - at - gnu.org > -- -- 라이선스: MIT/X, http://sputnik.freewisdom.org/en/License 참조 ----------------------------------------------------------------------------- SKIP_세퍼레이터 = 진실의 -- 상수 입력 = "입력"」; 나가. = 아웃; 저도. = "똑같다" -- 토큰 상태 ----------------------------------------------------------------------------- -- 문자열을 토큰으로 분할합니다. (Gavin Kistner의 분할에서 적용됨) -- http://lua-users.org/wiki/SplitJoin 입니다. -- -- @param text 분할되는 문자열. -- @param separator [ optional ]세퍼레이터 패턴(임의) -- 공백 - %s+). -- @skip skip_skip [ optional ]결과에 구분자를 포함하지 않습니다. -- @return 토큰 목록. ----------------------------------------------------------------------------- 기능. 분열되다(본문, 분리기, 건너뛰다) 분리기 = 분리기 또는 %s+ 현지의 부품. = {} 현지의 개시하다 = 1 현지의 split_start, 스플릿 엔드 = 음.스트링.발견하다(본문, 분리기, 개시하다) 하는 동안에 split_start 하다 table.insert(부품., 음.스트링.후보선수(본문, 개시하다, split_start-1)) 한다면 것은 아니다. 건너뛰다 그리고나서 table.insert(부품., 음.스트링.후보선수(본문, split_start, 스플릿 엔드)) 끝. 개시하다 = 스플릿 엔드 + 1 split_start, 스플릿 엔드 = 음.스트링.발견하다(본문, 분리기, 개시하다) 끝. 한다면 음.스트링.후보선수(본문, 개시하다) ~= "" 그리고나서 table.insert(부품., 음.스트링.후보선수(본문, 개시하다)) 끝. 돌아가다 부품. 끝. ----------------------------------------------------------------------------- -- 2개의 문자열 중 가장 긴 공통 서브시퀀스를 도출합니다.이게 더 빨라요. -- stdlib에 의해 제공되는 구현이 아닙니다.히샴 무함마드에 의해 제출되었습니다. --알고리즘은 다음에서 취득했습니다. -- http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Longest_common_subsequence -- -- @param t1은 첫 번째 문자열입니다. -- 두 번째 문자열인 @param t2를 지정합니다. -- @가장 일반적인 서브시퀀스를 매트릭스로 반환합니다. ----------------------------------------------------------------------------- 기능. 퀵_LCS(t1, t2) 현지의 m = #t1 현지의 n = #t2 -- 온 디맨드 매트릭스 구축 현지의 C = {} 현지의 설정 가능한 = 설정 가능한 현지의 mt_tbl = { __인덱스 = 기능.(t, k) t[k] = 0 돌아가다 0 끝. } 현지의 MT_C = { __인덱스 = 기능.(t, k) 현지의 티비례 = {} 설정 가능한(티비례, mt_tbl) t[k] = 티비례 돌아가다 티비례 끝. } 설정 가능한(C, MT_C) 현지의 맥스. = math.max 위해서 i = 1, m+1 하다 현지의 ci1 = C[i+1] 현지의 ci = C[i] 위해서 j = 1, n+1 하다 한다면 t1[i-1] == t2[j-1] 그리고나서 ci1[j+1] = ci[j] + 1 또 다른 ci1[j+1] = 맥스.(ci1[j], ci[j+1]) 끝. 끝. 끝. 돌아가다 C 끝. ----------------------------------------------------------------------------- -- 인라인 diff 를 HTML 로서 포맷 합니다.< ins > 및 < del > 태그가 붙어 있습니다. -- -- @token은 {timeout, status}쌍의 테이블을 토큰합니다. -- @HTML 문자열을 반환합니다. ----------------------------------------------------------------------------- 기능. format_as_module(토큰) 현지의 diff_filters(다양한) = "" 현지의 상품권, 상황 위해서 i, token_record(토큰 레코드) 에서 아이페어(토큰) 하다 상품권 = 음.본문.노우키(token_record(토큰 레코드)[1]) 상황 = token_record(토큰 레코드)[2] 한다면 상황 == "입력"」 그리고나서 diff_filters(다양한) = diff_filters(다양한)..'<ins>'..상품권..'/ins>' 그렇지 않으면 상황 == 아웃 그리고나서 diff_filters(다양한) = diff_filters(다양한)..'<del>'..상품권..'/del>' 또 다른 diff_filters(다양한) = diff_filters(다양한)..상품권 끝. 끝. 돌아가다 diff_filters(다양한) 끝. ----------------------------------------------------------------------------- -- 두 문자열의 차이를 쌍 목록으로 반환합니다.첫 번째 값은 다음과 같습니다. --는 토큰과 두 번째 토큰 상태("same", "in", "out")를 나타냅니다. -- -- @param old "오래된" 텍스트 문자열 -- @param new "새로운" 텍스트 문자열 -- @param separator [ optional ]세퍼레이터 패턴(임의 없음) -- 공백). -- @return 주석이 달린 토큰 목록. ----------------------------------------------------------------------------- 기능. 다르다(늙은, 신규, 분리기) 주장하다(늙은); 주장하다(신규) 신규 = 분열되다(신규, 분리기); 늙은 = 분열되다(늙은, 분리기) -- 우선 문자열의 시작과 끝을 비교하여 공통을 제거합니다. -- 프리픽스와 서픽스.토큰의 수가 적습니다. --중간은 다른데, 이 경우 우리는 스스로를 많이 구할 수 있다. -- LCS 계산의 관점에서. 현지의 접두사 = "" --처음에는 일반적인 텍스트 현지의 접미사 = "" --결국 공통 텍스트 하는 동안에 늙은[1] 그리고. 늙은[1] == 신규[1] 하다 현지의 상품권 = 테이블.삭제(늙은, 1) 테이블.삭제(신규, 1) 접두사 = 접두사..상품권 끝. 하는 동안에 늙은[#늙은] 그리고. 늙은[#늙은] == 신규[#신규] 하다 현지의 상품권 = 테이블.삭제(늙은) 테이블.삭제(신규) 접미사 = 상품권..접미사 끝. -- diff(get_diff의 up값)를 저장하는 테이블을 설정합니다.우리는 할 거예요 -- 테일콜을 허용하기 위해 역순으로 저장합니다.저희도 계속 -- 이 표의 기능은 다른 이벤트를 처리하는 기능입니다. 현지의 rev_diff = { 놓다 = 기능.(자신, 상품권, 유형) table.insert(자신, {상품권,유형}) 끝., 인스톨 = 기능.(자신, 상품권) 자신:놓다(상품권, 입력) 끝., 델 = 기능.(자신, 상품권) 자신:놓다(상품권, 나가.) 끝., 저도. = 기능.(자신, 상품권) 한다면 상품권 그리고나서 자신:놓다(상품권, 저도.) 끝. 끝., } -- 첫 번째 토큰으로 서픽스를 넣습니다(diff는 -- 역순서) rev_diff:저도.(접미사) -- LCS 매트릭스를 거꾸로 스캔하여 빌드하는 함수를 정의합니다. --diff 출력을 재귀적으로 출력합니다. 현지의 기능. get_diff(C, 늙은, 신규, i, j) 현지의 old_i = 늙은[i] 현지의 new_j = 신규[j] 한다면 i >= 1 그리고. j >= 1 그리고. old_i == new_j 그리고나서 rev_diff:저도.(old_i) 돌아가다 get_diff(C, 늙은, 신규, i-1, j-1) 또 다른 현지의 Cij1 = C[i][j-1] 현지의 Ci1j = C[i-1][j] 한다면 j >= 1 그리고. (i == 0 또는 Cij1 >= Ci1j) 그리고나서 rev_diff:인스톨(new_j) 돌아가다 get_diff(C, 늙은, 신규, i, j-1) 그렇지 않으면 i >= 1 그리고. (j == 0 또는 Cij1 < > Ci1j) 그리고나서 rev_diff:델(old_i) 돌아가다 get_diff(C, 늙은, 신규, i-1, j) 끝. 끝. 끝. 그럼 불러주세요. get_diff(퀵_LCS(늙은, 신규), 늙은, 신규, #늙은 + 1, #신규 + 1) -- 마지막에 프레픽스를 입력합니다. rev_diff:저도.(접두사) -- 차이를 반대로 합니다. 현지의 다르다 = {} 위해서 i = #rev_diff, 1, -1 하다 table.insert(다르다, rev_diff[i]) 끝. 다르다.행선지 = format_as_module 돌아가다 다르다 끝. ----------------------------------------------------------------------------- -- Wiki diff style, 현재 회선 전용입니다. ----------------------------------------------------------------------------- 기능. WikiDiff(늙은, 신규, 분리기) 현지의 토큰 = 다르다(늙은, 신규, 분리기) --[ [ local root = mw . screate . create ( ' ) 로컬 토큰, 상태 로컬 plusMinusStyle = '너비: 2%, 패딩: 0.25em, 글꼴-무게: 굵은 글씨;' .. '크기: 1.25em, 텍스트 정렬: 끝' local tdDivStyle = 'word-fords: break-word; 방향: ltr;' local tdSharedStyle = '너비: 48%, 테두리 스타일: 솔리드, 테두리 간격: 0.33em; ' .. '문자: 0.33em 0.5em, 글꼴 크기: 88%, 공백: 사전 입력, 테두리 폭: 1px 1px 4px; ..' '-webkit-border-end-width: 1px; -webkit-border-start-width: 4px; ' .. '-moz-border-end-width: 1px; -moz-border-start-width: 4px;' -- 브라우저의 기본 테두리 너비보다 우선합니다.공통의 RTL UI에 필요합니다. local insDelSharedStyle = '문자: 0.25em 0, 글꼴-무게: 굵은 글씨, 텍스트 장식: initial;' 로컬 tr = root:tag('table'):addClass('diff'):css('width', '100%'):tagsettr) tr:태그 부착') : addClass('diff-marker') : cssText(plusMinusStyle) : confirstitext-) 로컬 삭제 = tr : tag '('' ) : cssText ('border-color: #fe49c; '..tdSharedStyle) : addClass('diff-deletedline') : tag "div" ) : cssText(tdDivStyle) i의 경우 ipairs(ipairs)의 token_record는 토큰 = mw.text.nowiki(token_record[1]) status = token_record [ 2 ] 상태 == OUT이면 삭제했다 : tag del') : cssText ('background: #feeec8; '..insDelSharedStyle) : add Class('diffchange') : add Class('diffchange-inline') : paramitext(표준) else 상태가 == SAME이면 삭제됨: syslogitext(삭제) 끝. 끝. tr:태그 부착') : cssText(plusMinusStyle) : specitext+) 로컬 삽입 = tr : tag '('' ) : cssText ('border-color: #a3d3ff; '..tdSharedStyle) : add Class ('diff-addline') : tag "div" ) : cssText(tdDivStyle) i의 경우 ipairs(ipairs)의 token_record는 토큰 = mw.text.nowiki(token_record[1]) status = token_record [ 2 ] 상태가 == IN인 경우 삽입했다 : tagins') : cssText ('background: #d8ecff; '..insDelSharedStyle) : add Class('diffchange') : add Class('diffchange-inline') : paramitext(표준) else 상태가 == SAME이면 삽입: substititext(표준) 끝. 끝. 루트 반환]-- 돌아가다 토큰 끝. 기능. 주된(틀) 현지의 wD = WikiDiff(음.본문.떼어내다(음.본문.해독하다(틀.args[1])), 음.본문.해독하다(음.본문.떼어내다(틀.args[2])), 틀.args[3] 또는 '[%s%:-]+') wD = string.gsub(wD[3][1], '<ins> <ins class="diffchange diffchange-filter" style="background: #d8ecff; 패딩: 0.25em 0; 글꼴 무게: 굵은 글씨; 텍스트 장식: initial;">', "") 돌아가다 wD 끝. 돌아가다 { 다르다 = 다르다, WikiDiff = WikiDiff, 주된 = 주된 }