我一直想找到或编写一个新的 diffing gem,它不仅可以突出显示文本的变化,还可以突出 HTML 结构的变化。这是我的意思的一个快速示例。
现在,大多数不同的 gems 或 algos 将采用以下内容:
a = "<p>I am some text</p>"
b = "<p>I was some text</p>"
MyDiffer.diff(a,b)
=> "<p>I <del>am</del><ins>was</ins> some text</p>"
然而,当 HTML 标签被抛出时,它们中的大多数都没有正确考虑。我想看到这样的东西:
a = "<p>I am <strong>some</strong> text</p>"
b = "<p>I was some text</p>"
MyDiffer.diff(a,b)
=> "<p>I <del>am</del><ins>was</ins> <del class='htmlchange'><strong>some</strong></del><ins class="htmlchange">some</ins></p>"
a = "<p>I am a sentence. I am another sentence.</p>"
b = "<p>I am a sentence.</p><p>I am another sentence.</p>"
MyDiffer.diff(a,b)
=> "<p>I am a sentence.<del class="htmlchange">I am another sentence</del></p><ins class="htmlchange"><p>I am another sentence</p></ins>"
外面有这样的东西吗?如果不是,我不完全确定如何按照这些思路进行构建。任何帮助,将不胜感激。