しばらく 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>この関数は 2 つのファイル名を予期し、ウィンドウへの埋め込みに適した vlist ボックスを返します。 vlist ボックスには、灰色、赤、または緑の背景の上に描画された一連のテキストボックスが保持されます。 Shortest Edit Script 関数によって返される編集スクリプトは、次のコマンドのリストです: データを保持一般両方の文字列 (灰色)、消去最初の文字列のデータ (赤)、入れる2 番目の文字列のデータ (緑色)。 これら 3 つのコマンドだけを使用すると、このスクリプトは、文字列 A を文字列 B に変換するための (「」ではなく) 最も短いスクリプトです。
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 webWeb からダウンロードされた Jabberwocky の 2 つのバージョン
これらのバージョンの少なくとも 1 つはオリジナルから変更されています。
スクリプトが添付されています。