Skip to content

Commit db7c5a0

Browse files
Deduplicate exposed API
1 parent 437c8a0 commit db7c5a0

File tree

2 files changed

+31
-51
lines changed

2 files changed

+31
-51
lines changed

demo/index.html

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -238,16 +238,16 @@
238238
return API.greedyMerge(left, middle, right);
239239
}
240240

241-
function diff(left, middle, right) {
242-
return API.diff(left, middle, right);
241+
function diff(left, middle, right, patience) {
242+
return API.resolve(left, middle, right, false, false, patience);
243243
}
244244

245-
function resolveNonConflicting(left, middle, right) {
246-
return API.resolveNonConflicting(left, middle, right);
245+
function resolveNonConflicting(left, middle, right, greedy, patience) {
246+
return API.resolve(left, middle, right, true, greedy, patience, false);
247247
}
248248

249-
function applyResolvableConflictedChanges(left, middle, right) {
250-
return API.applyResolvableConflictedChanges(left, middle, right);
249+
function applyResolvableConflictedChanges(left, middle, right, greedy, patience) {
250+
return API.resolve(left, middle, right, true, greedy, patience, true);
251251
}
252252

253253
function getIjText() {
@@ -265,32 +265,32 @@
265265
}
266266

267267
function clearResults() {
268-
setResults(["", "", ""])
268+
setResults(["", "", ""]);
269269
}
270270

271-
function doDiff() {
271+
function doDiff(patience = false) {
272272
const [left, middle, right] = getIjText();
273273

274274
clearResults()
275-
const results = diff(left, middle, right);
275+
const results = diff(left, middle, right, patience);
276276
setResults(results);
277277
API.decorate();
278278
}
279279

280-
function doResolveNonConflicting() {
280+
function doResolveNonConflicting(greedy = false, patience = false) {
281281
const [left, middle, right] = getIjText();
282282

283283
clearResults()
284-
const results = resolveNonConflicting(left, middle, right);
284+
const results = resolveNonConflicting(left, middle, right, greedy, patience);
285285
setResults(results);
286286
API.decorate();
287287
}
288288

289-
function doApplyResolvableConflictedChanges() {
289+
function doApplyResolvableConflictedChanges(greedy = false, patience = false) {
290290
const [left, middle, right] = getIjText();
291291

292292
clearResults()
293-
const results = applyResolvableConflictedChanges(left, middle, right);
293+
const results = applyResolvableConflictedChanges(left, middle, right, greedy, patience);
294294
setResults(results);
295295
API.decorate();
296296
}
@@ -352,8 +352,15 @@ <h2>IJ Merge</h2>
352352

353353
<div class="action-buttons">
354354
<button onclick="doDiff()">Render diff</button>
355+
<button onclick="doDiff(true)">Render diff (patience)</button>
355356
<button onclick="doResolveNonConflicting()">Resolve non-conflicting changes</button>
356-
<button onclick="doApplyResolvableConflictedChanges()">Apply resolvable conflicted changes</button>
357+
<button onclick="doResolveNonConflicting(true)">Resolve non-conflicting changes (greedy)</button>
358+
<button onclick="doResolveNonConflicting(false, true)">Resolve non-conflicting changes (patience)</button>
359+
<button onclick="doResolveNonConflicting(true, true)">Resolve non-conflicting changes (greedy, patience)</button>
360+
<button onclick="doApplyResolvableConflictedChanges()">Apply resolvable conflicted changes ()</button>
361+
<button onclick="doApplyResolvableConflictedChanges(true)">Apply resolvable conflicted changes (greedy)</button>
362+
<button onclick="doApplyResolvableConflictedChanges(false, true)">Apply resolvable conflicted changes (patience)</button>
363+
<button onclick="doApplyResolvableConflictedChanges(true, true)">Apply resolvable conflicted changes (greedy, patience)</button>
357364
</div>
358365
</body>
359366
</html>

src/Main.hx

Lines changed: 10 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -11,44 +11,17 @@ class Main {
1111

1212
@:expose
1313
class API {
14+
static public function resolve(left, middle, right, applyNonConflicted = false, greedy = false, patience = false, conflicts = false):Array<String> {
15+
DiffConfig.AUTO_APPLY_NON_CONFLICTED_CHANGES = applyNonConflicted;
16+
DiffConfig.USE_GREEDY_MERGE_MAGIC_RESOLVE = greedy;
17+
DiffConfig.USE_PATIENCE_ALG = patience;
1418

15-
16-
static public function applyResolvableConflictedChanges(left, middle, right):Array<String> {
1719
var viewer = new MergeThreesideViewer([left, middle, right], middle);
1820
viewer.rediff(false);
19-
viewer.applyResolvableConflictedChanges();
20-
21-
var finalMergedText = viewer.myModel.getDocument();
22-
23-
var diff = new Diff(viewer.myAllMergeChanges);
2421

25-
var formattedLeft = diff.formatSide(left, ThreeSideEnum.LEFT);
26-
var formattedMiddle = diff.formatSide(finalMergedText, ThreeSideEnum.BASE);
27-
var formattedRight = diff.formatSide(right, ThreeSideEnum.RIGHT);
28-
29-
return [finalMergedText, formattedLeft, formattedMiddle, formattedRight];
30-
}
31-
32-
static public function diff(left, middle, right):Array<String> {
33-
DiffConfig.AUTO_APPLY_NON_CONFLICTED_CHANGES = false;
34-
var viewer = new MergeThreesideViewer([left, middle, right], middle);
35-
viewer.rediff(false);
36-
37-
var finalMergedText = viewer.myModel.getDocument();
38-
39-
var diff = new Diff(viewer.myAllMergeChanges);
40-
41-
var formattedLeft = diff.formatSide(left, ThreeSideEnum.LEFT);
42-
var formattedMiddle = diff.formatSide(finalMergedText, ThreeSideEnum.BASE);
43-
var formattedRight = diff.formatSide(right, ThreeSideEnum.RIGHT);
44-
45-
return [finalMergedText, formattedLeft, formattedMiddle, formattedRight];
46-
}
47-
48-
static public function resolveNonConflicting(left, middle, right):Array<String> {
49-
DiffConfig.AUTO_APPLY_NON_CONFLICTED_CHANGES = true;
50-
var viewer = new MergeThreesideViewer([left, middle, right], middle);
51-
viewer.rediff(false);
22+
if (conflicts) {
23+
viewer.applyResolvableConflictedChanges();
24+
}
5225

5326
var finalMergedText = viewer.myModel.getDocument();
5427

@@ -75,8 +48,8 @@ class API {
7548
}
7649

7750
#if js
78-
static public function decorate():Void{
79-
DiffDecorations.decorate();
80-
}
51+
static public function decorate():Void {
52+
DiffDecorations.decorate();
53+
}
8154
#end
8255
}

0 commit comments

Comments
 (0)