bhousel / node-diff3

A node.js library for text diffing and three-way-merge
Other
91 stars 13 forks source link

Diff is working weird in some scenarios? #59

Open hmarcelodn opened 2 years ago

hmarcelodn commented 2 years ago

Hello,

We are experiencing a really weird behaviour with the following example:

const Diff3 = require('node-diff3');

const templateA = `
$capitalize($possessive([q#3])) Security Policies and Procedures were adopted as of (Date) by
`;

const templateB = `
$capitalize($possessive([q#3])) Security Policies and Procedures were adopted as of [Date] by

123
`;

const original = `
$capitalize($possessive([q#3])) Security Policies and Procedures were adopted as of (Date) by
`

const diffOutput = Diff3.diff3Merge(templateA, original, templateB, { stringSeparator: '\n' });
console.log(diffOutput[0].ok.join('\n'));
console.log(diffOutput);

My expectation from the code above is to get:

$capitalize($possessive([q#3])) Security Policies and Procedures were adopted as of (Date) by

123

However I am getting:

$capitalize($possessive([q#3])) Security Policies and Procedures were adopted as of [Date] by

123

Notice the parenthesis is not being applied to my [Date] piece. Any clue on what's happening? I am expecting to get a conflict but its not happening.

Thanks in advanced.

denis-sokolov commented 1 month ago

The behavior seems exactly right to me. Your templateA is unchanged from the original, and your templateB has new parentheses and the number 123. The 3-way merge is then to take templateB and ignore templateA, there is no conflict. Did you perhaps mean to use the different parentheses in the original?