Skip to content

diffWordsWithSpace - a char-by-char diff for spaces? #180

Closed
@rlidwka

Description

@rlidwka
require('diff').convertChangesToXML(
  require('diff').diffWordsWithSpace('foo\nbar', 'foo\n\n\nbar')
)

Returns:

'foo<del>\n</del><ins>\n\n\n</ins>bar'

Desired output is:

'foo<ins>\n\n</ins>bar'

As far as I understand, diffWordsWithSpace currently treats any amount of spaces as a single token. Which makes sense for diffWords (where space isn't significant), but doesn't work well for diffWordsWithSpace.

Suggestion: maybe it should compare spaces between words on character-by-character basis?

Possible solution - change regexp in tokenizer like this:

<   let tokens = value.split(/(\s+|\b)/);
---
>   let tokens = this.options.ignoreWhitespace ?
>                value.split(/(\s+|\b)/) :
>                value.split(/(\s|\b)/);

Seems to work fine for me, but I'm not quite sure it's correct.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions