本文整理汇总了TypeScript中diff-match-patch.diff_match_patch.diff_main方法的典型用法代码示例。如果您正苦于以下问题:TypeScript diff_match_patch.diff_main方法的具体用法?TypeScript diff_match_patch.diff_main怎么用?TypeScript diff_match_patch.diff_main使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类diff-match-patch.diff_match_patch
的用法示例。
在下文中一共展示了diff_match_patch.diff_main方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: testPatchMake
function testPatchMake() {
const text1 = 'The quick brown fox jumps over the lazy dog.';
const text2 = 'That quick brown fox jumped over a lazy dog.';
let expectedPatch = '@@ -1,8 +1,7 @@\n Th\n-at\n+e\n qui\n@@ -21,17 +21,18 @@\n jump\n-ed\n+s\n over \n-a\n+the\n laz\n';
let patches = dmp.patch_make(text2, text1);
assertEquals(expectedPatch, dmp.patch_toText(patches));
// Method 1
expectedPatch = '@@ -1,11 +1,12 @@\n Th\n-e\n+at\n quick b\n@@ -22,18 +22,17 @@\n jump\n-s\n+ed\n over \n-the\n+a\n laz\n';
patches = dmp.patch_make(text1, text2);
assertEquals(expectedPatch, dmp.patch_toText(patches));
// Method 2
const diffs = dmp.diff_main(text1, text2, false);
patches = dmp.patch_make(diffs);
assertEquals(expectedPatch, dmp.patch_toText(patches));
// Method 3
patches = dmp.patch_make(text1, diffs);
assertEquals(expectedPatch, dmp.patch_toText(patches));
// Method 4
patches = dmp.patch_make(text1, text2, diffs);
assertEquals(expectedPatch, dmp.patch_toText(patches));
}
示例2: testDiffMain
function testDiffMain() {
assertEquivalent([], dmp.diff_main('', '', false));
dmp.Diff_Timeout = 0;
// Simple cases.
assertEquivalent([[DIFF_DELETE, 'a'], [DIFF_INSERT, 'b']], dmp.diff_main('a', 'b', false));
}
示例3: testDiffMainEach
function testDiffMainEach() {
const oldValue = "hello world, how are you?";
const newValue = "hello again world. how have you been?";
const diffEngine = new DiffMatchPatch.diff_match_patch();
const diffs = diffEngine.diff_main(oldValue, newValue);
diffEngine.diff_cleanupSemantic(diffs);
let changes = "";
let pattern = "";
diffs.forEach((diff) => {
const operation = diff[0]; // Operation (insert, delete, equal)
const text = diff[1]; // Text of change
switch (operation) {
case DiffMatchPatch.DIFF_INSERT:
pattern += "I";
break;
case DiffMatchPatch.DIFF_DELETE:
pattern += "D";
break;
case DiffMatchPatch.DIFF_EQUAL:
pattern += "E";
break;
}
changes += text;
});
}
示例4: processResults
protected processResults(output: string): TextEdit[] {
const diffs: Diff[] = this.differ.diff_main(this.originalText, output);
const edits: TextEdit[] = [];
// VSCode wants TextEdits on the original document
// this means position only gets moved for DIFF_EQUAL and DIFF_DELETE
// as insert is new and doesn't have a position in the original
let position = 0;
for (let diff of diffs) {
const [num, str] = diff;
const startPos = this.document.positionAt(position);
switch (num) {
case DIFF_DELETE:
edits.push({
range: {
start: startPos,
end: this.document.positionAt(position + str.length),
},
newText: '',
});
position += str.length;
break;
case DIFF_INSERT:
edits.push({
range: { start: startPos, end: startPos },
newText: str,
});
break;
case DIFF_EQUAL:
position += str.length;
break;
}
// If we have a range we are doing a selection format. Thus,
// only apply patches that start within the selected range
if (this.range && num !== DIFF_EQUAL && !this.checkPositionInRange(startPos)) {
edits.pop();
}
}
return edits;
}