如何实现字符串树的diff?

时间:2013-02-23 01:46:24

标签: javascript string tree diff

如何实现一个解释两个字符串树之间差异的函数?例如:

diff(["aaa","bbb",["ccc","ddd"],"eee"],
     ["aaa","bbx",["ccc","ddd"]]);

此功能应报告“bbb”上的编辑和“eee”的删除。如何实现这样的功能?

1 个答案:

答案 0 :(得分:2)

对于简单的文本差异,您可以将每个树转换为平面文件。

将节点转换为行,这样每个子节点都会添加选项卡(每个嵌套级别都有一个选项卡)。然后在两个平面文件上运行diff。例如:

["aaa","bbb",["ccc","ddd"],"eee"]

变为(转义标签和换行符):

aaaa
bbb
    ccc
    ddd
eee

如果需要数字度量,请计算diff输出中的行数。

如果你想获得花哨,它可以按节点进行,但这取决于结果的用途,这是很多工作。