[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
text.diff
- テキストストリームの相違点を計算する このモジュールでは、util.lcs
(util.lcs
- 最長共通サブシーケンス参照)を
使って、2つのテキストストリーム、あるいは2つの文字列の相違点を計算します。
テキストソースsrc-aとsrc-bから“編集リスト”を生成します。
それぞれのテキストソース、src-aとsrc-bは入力ポートか文字列です。
もし文字列であれば、それは内部的に文字列ポートに変換されます。
そして、2つのソースからのテキストストリームは、それらに対してreaderを繰り返し
呼ぶことによってシーケンスに変換されます。デフォルトのreaderはread-lineで、
2つのシーケンスは編集リストを計算するためにlcs-edit-list
に渡されます。
lcs-edit-list
には、等値を検査する関数eq-fnも渡されます。
編集リストとは、src-a
からsrc-b
へテキストシーケンスを
変更するためのコマンドのセットです。編集リストの詳細な説明は、
lcs-edit-list
を参照してください。
(diff "a\nb\nc\nd\n" "b\ne\nd\nf\n") ⇒ (((- 0 "a")) ((- 2 "c") (+ 1 "e")) ((+ 3 "f"))) |
2つのテキストソースのdiffをとって、その結果をきれいに表示するための
簡易手続きです。この手続きは、2つのテキストソースの相違点を計算する
ためにlcs-fold
を呼び出します。src-a、src-b、
reader、eq-fnの意味は、diff
の場合と同じです。
writerは2つの引数、テキスト要素とタイプ(シンボル+
、
シンボル-
、あるいは#f
のいずれか)を取る手続きです。
テキスト要素がsrc-aにしかない場合は、writerがそのテキスト要素と
-
とともに呼ばれます。テキスト要素がsrc-bにしかない場合は、
writerはそのテキスト要素と+
とともに呼ばれます。
テキスト要素が両方のソースにある場合は、writerはそのテキスト要素と
#f
とともに呼ばれます。writerのデフォルトの手続きは、
渡されたテキスト要素を現在の出力ポートにユニファイドdiffのようなフォーマットで
出力します。
(diff-report "a\nb\nc\nd\n" "b\ne\nd\nf\n") |
displays:
- a b - c + e d + f |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.