Se scrivi JSL da un po', probabilmente hai salvato più copie del tuo script e alla fine ti sei chiesto quali siano le differenze tra gli script. Non esiste un ottimo modo per rispondere alla domanda integrato in Windows, quindi ecco un modo per farlo in JSL, utilizzando il comando Script di modifica più breve funzione (che fa quasi tutto il lavoro).
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>La funzione prevede due nomi di file e restituisce una casella vlist adatta per l'incorporamento in una finestra. La casella vlist contiene un gruppo di caselle di testo disegnate su uno sfondo grigio, rosso o verde. Lo script di modifica restituito dalla funzione Script di modifica più breve è un elenco di comandi: mantieni i dati comune su entrambe le corde (grigio), eliminare dati dalla prima stringa (rosso), inserire dati dalla seconda stringa (verde). Utilizzando solo questi tre comandi, lo script è "uno" (non "lo") lo script più breve possibile per convertire la stringa A nella stringa B.
MouseBox aggiunge un suggerimento alle sezioni rossa e verde che spiega quale file ha perso quei dati o ha aggiunto quei dati.
IL Script di modifica più breve ha alcuni altri parametri (non utilizzati qui) che saranno utili per file più lunghi, in particolare il file limite parametro. Impostando un limite ragionevole di 500 o 1000 differenze, puoi semplicemente dire "questi file sono davvero diversi" senza spendere troppo tempo in attesa di un processo di corrispondenza molto lento che difficilmente produrrà risultati interessanti. La funzione viene chiamata con il Ignora lo spazio bianco parametro perché non sono interessato alle righe rientrate in modo diverso.
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 webDue versioni di Jabberwocky scaricate dal web
Almeno una di quelle versioni è stata modificata rispetto all'originale.
Scritto allegato.