I just completed a rewrite of the ShowChanges code on the NBTSC Wiki. It’s been two years in the making, counting from when I first hunted down the sourcecode to diff
, the diff.st implementation, and a few hours of talks with my dad on possible ways to figure out what’s changed, and since I looked at the HTML spec to figure out where the and tags were allowed to go.
It’s not an easy algorithm in the first place. It’s made worse by HTML’s stuff-inside-of-stuff-inside-of-stuff layout. The usual way diffs work is on flat lists of things. That’s the easy part. The hard part is figuring out the little bits that changed in a complex document.
I’d really appreciate bug reports right now, but I can’t make it break (for once!), and I’ve run it through a fair number of tests.
There’s more improvements in the works — at the moment, the smallest changes it’ll highlight is paragraphs. I’d like it to find individual words and sentences that have changed, but that’ll have to wait a while longer.