editer
Version:
A high level multiline string manipulation library
79 lines (59 loc) • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = remove;
var _locater = require('locater');
var _locater2 = _interopRequireDefault(_locater);
var _utils = require('./utils');
var _utils2 = _interopRequireDefault(_utils);
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var lineBreak = '\n';
function getNthLine(string, lineNumber) {
var arr = string.split(lineBreak);
return arr[lineNumber - 1];
}
function replaceNthLine(string, lineNumber, newString) {
var arr = string.split(lineBreak);
arr[lineNumber - 1] = newString;
return arr.join('\n');
}
function remove(string, target, options) {
function getModifiedTarget(targetInfo, condition) {
var targetSubstring = undefined;
if (condition.onSameLine) {
targetSubstring = getNthLine(target, targetInfo.line);
} else {
if (condition.after) {
targetSubstring = target.slice(targetInfo.index);
} else if (condition.before) {
targetSubstring = target.slice(0, targetInfo.index);
}
}
var regex = undefined;
if (condition.multi) {
regex = new RegExp(_lodash2.default.escapeRegExp(string), 'g');
} else {
regex = new RegExp(_lodash2.default.escapeRegExp(string));
}
var newSubstring = targetSubstring.replace(regex, '');
if (condition.onSameLine) {
return replaceNthLine(target, targetInfo.line, newSubstring);
} else {
return target.replace(targetSubstring, newSubstring);
}
}
if (options.or) {
for (var i = 0; i < options.or.length; i++) {
var targetInfo = (0, _utils2.default)(target, options.or[i]);
if (targetInfo) {
return getModifiedTarget(targetInfo, options.or[i]);
}
}
} else {
var targetInfo = (0, _utils2.default)(target, options);
return getModifiedTarget(targetInfo, options);
}
}