한동안 JSL을 작성해 왔다면 아마도 스크립트의 여러 복사본을 저장하고 결국에는 스크립트 간의 차이점에 대해 궁금해했을 것입니다. Windows에 내장된 질문에 답할 수 있는 좋은 방법은 없으므로 JSL에서 다음을 사용하여 답할 수 있는 방법이 있습니다. 최단 편집 스크립트 기능(거의 모든 작업을 수행함).
CompareTextFiles = Function( {pathA, pathB},
{textA, textB, v, gray, red, green, ipart, parts, kind, text, vv, bb},
textA = Load Text File( pathA );
textB = Load Text File( pathB );
parts = Shortest Edit Script( lines( textA, textB, ignorewhitespace() ) );
v = V List Box();
gray = RGB Color( .9, .9, .9 );
red = RGB Color( 1, .7, .7 );
green = RGB Color( .7, 1, .7 );
For( ipart = 1, ipart <= N Items( parts ), ipart += 1,
{kind, text} = parts[ipart];
bb = MouseBox(
Border Box( Left( 10 ), Right( 100 ),
// trim removes a final CR that double spaces the joint
// between text boxes in the vlistbox. the 3 spaces added
// back hides a rendering error that clips the last chars
// in a line...sometimes.
Text Box( Trim( text, right ) || " ", <<SETWRAP></SETWRAP>이 함수는 두 개의 파일 이름을 예상하고 창에 삽입하기에 적합한 vlist 상자를 반환합니다. vlist 상자에는 회색, 빨간색 또는 녹색 배경 위에 그려진 여러 개의 텍스트 상자가 있습니다. Shortest Edit Script 함수에 의해 반환된 편집 스크립트는 다음 명령 목록입니다: keep data 흔한 두 문자열 모두에 (회색), 삭제 첫 번째 문자열(빨간색)의 데이터, 끼워 넣다 두 번째 문자열(녹색)의 데이터입니다. 이 세 가지 명령만 사용하면 스크립트는 문자열 A를 문자열 B로 변환하는 "a"("the"가 아님) 가능한 가장 짧은 스크립트입니다.
MouseBox는 빨간색과 녹색 섹션에 어떤 파일이 해당 데이터를 잃었는지 또는 해당 데이터를 추가했는지 설명하는 도구 설명을 추가합니다.
그만큼 최단 편집 스크립트 긴 파일, 특히 한계 매개변수. 500 또는 1000개의 차이로 합리적인 제한을 설정하면 흥미로운 결과를 생성할 가능성이 없는 매우 느린 일치 프로세스를 기다리는 데 너무 많은 시간을 소비하지 않고 "이 파일은 정말 다릅니다"라고 말할 수 있습니다. 함수는 다음과 같이 호출됩니다. 공백 무시 매개변수를 사용하는 이유는 다르게 들여쓰기된 줄에는 관심이 없기 때문입니다.
Two versions of Jabberwocky downloaded from the webTwo versions of Jabberwocky downloaded from the webTwo versions of Jabberwocky downloaded from the webTwo versions of Jabberwocky downloaded from the web웹에서 다운로드한 Jabberwocky의 두 가지 버전
해당 버전 중 하나 이상이 원본에서 수정되었습니다.
스크립트가 첨부되었습니다.