UNPKG

editer

Version:

A high level multiline string manipulation library

79 lines (59 loc) 2.01 kB
'use strict'; 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); } }