Closed ExplodingCabbage closed 4 months ago
The docs:
Diff.diffWords(oldStr, newStr[, options]) - diffs two blocks of text, comparing word by word, ignoring whitespace.
Diff.diffWords(oldStr, newStr[, options])
Here are some examples of this working as described:
> diff.diffWords("foo bar", "foo bar") [ { value: 'foo bar', count: 3 } ] > diff.diffWords("foo, bar", "foo, bar") [ { value: 'foo, bar', count: 4 } ]
But here are a couple of examples of it not working as described:
> diff.diffWords("foo bar", "foo\n\nbar") [ { count: 2, value: 'foo\n' }, { count: 1, added: true, removed: undefined, value: '\n' }, { count: 1, value: 'bar' } ]
> diff.diffWords("( foo )", "(foo)") [ { count: 1, value: '(' }, { count: 1, added: undefined, removed: true, value: ' ' }, { count: 1, value: 'foo' }, { count: 1, added: undefined, removed: true, value: ' ' }, { count: 1, value: ')' } ]
The first failure case is due to changes from https://github.com/kpdecker/jsdiff/pull/217, but the second is independent of those changes.
An even more profound example of whitespace being EXTREMELY SIGNIFICANT to diffWords, in a way that produces frankly absurd results:
diffWords
https://github.com/kpdecker/jsdiff/issues/160#issuecomment-1866099640
The docs:
Here are some examples of this working as described:
But here are a couple of examples of it not working as described:
The first failure case is due to changes from https://github.com/kpdecker/jsdiff/pull/217, but the second is independent of those changes.