mirror of https://github.com/Wilfred/difftastic/
49 lines
490 B
Markdown
49 lines
490 B
Markdown
Consider changing:
|
|
|
|
```
|
|
foo();
|
|
bar();
|
|
```
|
|
|
|
To:
|
|
|
|
```
|
|
if (true) {
|
|
foo();
|
|
}
|
|
```
|
|
|
|
What we want:
|
|
|
|
```
|
|
+ if (true) {
|
|
foo();
|
|
- bar();
|
|
+ }
|
|
```
|
|
|
|
A longest-common-subsequence algorithm is wrong here. The longest
|
|
subsequence is five tokens:
|
|
|
|
```
|
|
( ) ( ) ;
|
|
```
|
|
|
|
which leads to:
|
|
|
|
```
|
|
+if+ (+true+) +{+
|
|
+foo+();
|
|
-bar-();
|
|
+}+
|
|
```
|
|
|
|
so we claim `foo` is added. We want the following *four* tokens to be
|
|
preserved:
|
|
|
|
```
|
|
foo ( ) ;
|
|
```
|
|
|
|
Proposed solution: advance on both sides, keep first match.
|