You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							78 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							78 lines
						
					
					
						
							1.9 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = void 0; | 
						|
 | 
						|
var _diffSequences = _interopRequireDefault(require('diff-sequences')); | 
						|
 | 
						|
var _cleanupSemantic = require('./cleanupSemantic'); | 
						|
 | 
						|
function _interopRequireDefault(obj) { | 
						|
  return obj && obj.__esModule ? obj : {default: obj}; | 
						|
} | 
						|
 | 
						|
/** | 
						|
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | 
						|
 * | 
						|
 * This source code is licensed under the MIT license found in the | 
						|
 * LICENSE file in the root directory of this source tree. | 
						|
 */ | 
						|
const diffStrings = (a, b) => { | 
						|
  const isCommon = (aIndex, bIndex) => a[aIndex] === b[bIndex]; | 
						|
 | 
						|
  let aIndex = 0; | 
						|
  let bIndex = 0; | 
						|
  const diffs = []; | 
						|
 | 
						|
  const foundSubsequence = (nCommon, aCommon, bCommon) => { | 
						|
    if (aIndex !== aCommon) { | 
						|
      diffs.push( | 
						|
        new _cleanupSemantic.Diff( | 
						|
          _cleanupSemantic.DIFF_DELETE, | 
						|
          a.slice(aIndex, aCommon) | 
						|
        ) | 
						|
      ); | 
						|
    } | 
						|
 | 
						|
    if (bIndex !== bCommon) { | 
						|
      diffs.push( | 
						|
        new _cleanupSemantic.Diff( | 
						|
          _cleanupSemantic.DIFF_INSERT, | 
						|
          b.slice(bIndex, bCommon) | 
						|
        ) | 
						|
      ); | 
						|
    } | 
						|
 | 
						|
    aIndex = aCommon + nCommon; // number of characters compared in a | 
						|
 | 
						|
    bIndex = bCommon + nCommon; // number of characters compared in b | 
						|
 | 
						|
    diffs.push( | 
						|
      new _cleanupSemantic.Diff( | 
						|
        _cleanupSemantic.DIFF_EQUAL, | 
						|
        b.slice(bCommon, bIndex) | 
						|
      ) | 
						|
    ); | 
						|
  }; | 
						|
 | 
						|
  (0, _diffSequences.default)(a.length, b.length, isCommon, foundSubsequence); // After the last common subsequence, push remaining change items. | 
						|
 | 
						|
  if (aIndex !== a.length) { | 
						|
    diffs.push( | 
						|
      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, a.slice(aIndex)) | 
						|
    ); | 
						|
  } | 
						|
 | 
						|
  if (bIndex !== b.length) { | 
						|
    diffs.push( | 
						|
      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, b.slice(bIndex)) | 
						|
    ); | 
						|
  } | 
						|
 | 
						|
  return diffs; | 
						|
}; | 
						|
 | 
						|
var _default = diffStrings; | 
						|
exports.default = _default;
 | 
						|
 |