1个稳定版本
1.0.0 | 2022年10月26日 |
---|
#22 in #edit-distance
35KB
808 行
此库提供了显示两个字符串之间差异的函数。它使用Levenshtein距离来计算从一个字符串到另一个字符串所需的最低编辑操作数:插入、删除、替换。
有几个选项可用于自定义此处理
-
split_size
如果字符串包含任何新行,则将其拆分为行列表。然后,如果任何行太大,则根据split_size
将其拆分为更小的部分进行比较。这是为了减少用于计算所有编辑成本的编辑矩阵的大小。默认值为200。 -
separators
用于突出显示差异的文本的开头和结尾部分(默认为括号) -
shorten size
如果输入文本太大,则可以显示主要差异和一些上下文。如果字符串大于shorten_size
(默认为20),则会在分隔符周围省略字符串。 -
shorten_text
在原始字符串中省略字符时使用的字符串(默认为"..."
) -
display_edit_operations
一个函数,用于指定编辑操作(插入/删除/替换/保持)的表示方式
以下是一些示例
use edits::edits::*;
// "between the e and the n the letter i was added"
assert_eq!(show_distance("kitten", "kittein"), "kitte[+i]n");
// "at the end of the text 3 letters have been deleted"
assert_eq!(show_distance("kitten", "kit"), "kit[-t-e-n]");
// "between the t and the n 2 letters have been modified"
assert_eq!(show_distance("kitten", "kitsin"), "kit[~t/s~e/i]n");
// "between the t and the n 2 letters have been modified"
let my_split_size = SplitSize { split_size: 300 };
assert_eq!(show_distance_with(my_split_size, default_display_options(), "kitten", "kitsin"), "kit[~t/s~e/i]n");
输出也可以着色。例如:
在REPL中尝试
您可以在REPL中尝试此库
- 克隆此存储库
- 安装
evcxr
repl:cargo install evcxr_repl
- 启动它
sh> evcxr
Welcome to evcxr. For help, type :help
>>
- 将当前路径添加为依赖项并导入
edits
模块
>> :dep edits = { path = "." }
>> use edits::edits::*;
- 使用
show
函数
>> println!("{}", show_distance_colored("abcd", "abcdefg"));
abcd[efg]