summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/xdiff/xdiff_string_patch.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/xdiff/xdiff_string_patch.js')
-rw-r--r--node_modules/locutus/php/xdiff/xdiff_string_patch.js203
1 files changed, 0 insertions, 203 deletions
diff --git a/node_modules/locutus/php/xdiff/xdiff_string_patch.js b/node_modules/locutus/php/xdiff/xdiff_string_patch.js
deleted file mode 100644
index af40a33..0000000
--- a/node_modules/locutus/php/xdiff/xdiff_string_patch.js
+++ /dev/null
@@ -1,203 +0,0 @@
-'use strict';
-
-module.exports = function xdiff_string_patch(originalStr, patch, flags, errorObj) {
- // eslint-disable-line camelcase
- // discuss at: http://locutus.io/php/xdiff_string_patch/
- // original by: Brett Zamir (http://brett-zamir.me)
- // improved by: Steven Levithan (stevenlevithan.com)
- // note 1: The XDIFF_PATCH_IGNORESPACE flag and the error argument are not
- // note 1: currently supported.
- // note 2: This has not been tested exhaustively yet.
- // note 3: The errorObj parameter (optional) if used must be passed in as a
- // note 3: object. The errors will then be written by reference into it's `value` property
- // example 1: xdiff_string_patch('', '@@ -0,0 +1,1 @@\n+Hello world!')
- // returns 1: 'Hello world!'
-
- // First two functions were adapted from Steven Levithan, also under an MIT license
- // Adapted from XRegExp 1.5.0
- // (c) 2007-2010 Steven Levithan
- // MIT License
- // <http://xregexp.com>
-
- var _getNativeFlags = function _getNativeFlags(regex) {
- // Proposed for ES4; included in AS3
- return [regex.global ? 'g' : '', regex.ignoreCase ? 'i' : '', regex.multiline ? 'm' : '', regex.extended ? 'x' : '', regex.sticky ? 'y' : ''].join('');
- };
-
- var _cbSplit = function _cbSplit(string, sep) {
- // If separator `s` is not a regex, use the native `split`
- if (!(sep instanceof RegExp)) {
- // Had problems to get it to work here using prototype test
- return String.prototype.split.apply(string, arguments);
- }
- var str = String(string);
- var output = [];
- var lastLastIndex = 0;
- var match;
- var lastLength;
- var limit = Infinity;
- var x = sep._xregexp;
- // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero
- // and restore it to its original value when we're done using the regex
- // Brett paring down
- var s = new RegExp(sep.source, _getNativeFlags(sep) + 'g');
- if (x) {
- s._xregexp = {
- source: x.source,
- captureNames: x.captureNames ? x.captureNames.slice(0) : null
- };
- }
-
- while (match = s.exec(str)) {
- // Run the altered `exec` (required for `lastIndex` fix, etc.)
- if (s.lastIndex > lastLastIndex) {
- output.push(str.slice(lastLastIndex, match.index));
-
- if (match.length > 1 && match.index < str.length) {
- Array.prototype.push.apply(output, match.slice(1));
- }
-
- lastLength = match[0].length;
- lastLastIndex = s.lastIndex;
-
- if (output.length >= limit) {
- break;
- }
- }
-
- if (s.lastIndex === match.index) {
- s.lastIndex++;
- }
- }
-
- if (lastLastIndex === str.length) {
- if (!s.test('') || lastLength) {
- output.push('');
- }
- } else {
- output.push(str.slice(lastLastIndex));
- }
-
- return output.length > limit ? output.slice(0, limit) : output;
- };
-
- var i = 0;
- var ll = 0;
- var ranges = [];
- var lastLinePos = 0;
- var firstChar = '';
- var rangeExp = /^@@\s+-(\d+),(\d+)\s+\+(\d+),(\d+)\s+@@$/;
- var lineBreaks = /\r?\n/;
- var lines = _cbSplit(patch.replace(/(\r?\n)+$/, ''), lineBreaks);
- var origLines = _cbSplit(originalStr, lineBreaks);
- var newStrArr = [];
- var linePos = 0;
- var errors = '';
- var optTemp = 0; // Both string & integer (constant) input is allowed
- var OPTS = {
- // Unsure of actual PHP values, so better to rely on string
- 'XDIFF_PATCH_NORMAL': 1,
- 'XDIFF_PATCH_REVERSE': 2,
- 'XDIFF_PATCH_IGNORESPACE': 4
- };
-
- // Input defaulting & sanitation
- if (typeof originalStr !== 'string' || !patch) {
- return false;
- }
- if (!flags) {
- flags = 'XDIFF_PATCH_NORMAL';
- }
-
- if (typeof flags !== 'number') {
- // Allow for a single string or an array of string flags
- flags = [].concat(flags);
- for (i = 0; i < flags.length; i++) {
- // Resolve string input to bitwise e.g. 'XDIFF_PATCH_NORMAL' becomes 1
- if (OPTS[flags[i]]) {
- optTemp = optTemp | OPTS[flags[i]];
- }
- }
- flags = optTemp;
- }
-
- if (flags & OPTS.XDIFF_PATCH_NORMAL) {
- for (i = 0, ll = lines.length; i < ll; i++) {
- ranges = lines[i].match(rangeExp);
- if (ranges) {
- lastLinePos = linePos;
- linePos = ranges[1] - 1;
- while (lastLinePos < linePos) {
- newStrArr[newStrArr.length] = origLines[lastLinePos++];
- }
- while (lines[++i] && rangeExp.exec(lines[i]) === null) {
- firstChar = lines[i].charAt(0);
- switch (firstChar) {
- case '-':
- // Skip including that line
- ++linePos;
- break;
- case '+':
- newStrArr[newStrArr.length] = lines[i].slice(1);
- break;
- case ' ':
- newStrArr[newStrArr.length] = origLines[linePos++];
- break;
- default:
- // Reconcile with returning errrors arg?
- throw new Error('Unrecognized initial character in unidiff line');
- }
- }
- if (lines[i]) {
- i--;
- }
- }
- }
- while (linePos > 0 && linePos < origLines.length) {
- newStrArr[newStrArr.length] = origLines[linePos++];
- }
- } else if (flags & OPTS.XDIFF_PATCH_REVERSE) {
- // Only differs from above by a few lines
- for (i = 0, ll = lines.length; i < ll; i++) {
- ranges = lines[i].match(rangeExp);
- if (ranges) {
- lastLinePos = linePos;
- linePos = ranges[3] - 1;
- while (lastLinePos < linePos) {
- newStrArr[newStrArr.length] = origLines[lastLinePos++];
- }
- while (lines[++i] && rangeExp.exec(lines[i]) === null) {
- firstChar = lines[i].charAt(0);
- switch (firstChar) {
- case '-':
- newStrArr[newStrArr.length] = lines[i].slice(1);
- break;
- case '+':
- // Skip including that line
- ++linePos;
- break;
- case ' ':
- newStrArr[newStrArr.length] = origLines[linePos++];
- break;
- default:
- // Reconcile with returning errrors arg?
- throw new Error('Unrecognized initial character in unidiff line');
- }
- }
- if (lines[i]) {
- i--;
- }
- }
- }
- while (linePos > 0 && linePos < origLines.length) {
- newStrArr[newStrArr.length] = origLines[linePos++];
- }
- }
-
- if (errorObj) {
- errorObj.value = errors;
- }
-
- return newStrArr.join('\n');
-};
-//# sourceMappingURL=xdiff_string_patch.js.map \ No newline at end of file