node-diff3 icon indicating copy to clipboard operation
node-diff3 copied to clipboard

Diff is working weird in some scenarios?

Open hmarcelodn opened this issue 3 years ago • 1 comments

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.

hmarcelodn avatar Jul 12 '22 18:07 hmarcelodn

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?

denis-sokolov avatar Aug 06 '24 20:08 denis-sokolov