canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS, CSS and JSON.
126 lines (80 loc) • 3.48 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _stripAnsi = require('strip-ansi');
var _stripAnsi2 = _interopRequireDefault(_stripAnsi);
var _spliceString = require('splice-string');
var _spliceString2 = _interopRequireDefault(_spliceString);
var _ansiRegex = require('ansi-regex');
var _ansiRegex2 = _interopRequireDefault(_ansiRegex);
var _mapANSIEscapeCodes = require('./mapANSIEscapeCodes');
var _mapANSIEscapeCodes2 = _interopRequireDefault(_mapANSIEscapeCodes);
var _trim = require('./trim');
var _trim2 = _interopRequireDefault(_trim);
var _close = require('./close');
var _close2 = _interopRequireDefault(_close);
var ANSIRegex = undefined;
ANSIRegex = (0, _ansiRegex2['default'])();
/**
* @param {String} subject
* @param {Number} beginSlice The zero-based index at which to begin extraction.
* @param {Number} endSlice Optional. The zero-based index at which to end extraction.
* @return {String}
*/
exports['default'] = function (subject, beginSlice, endSlice) {
if (beginSlice === undefined) beginSlice = 0;
var ANSIEscapeCodeMap = undefined,
ReverseANSIEscapeCodeMap = undefined,
noNegative = undefined,
offsetSlicedSubjectLength = undefined,
plainSubject = undefined,
slicedSubject = undefined,
mappedEscapeCodes = undefined;
mappedEscapeCodes = false;
if (typeof subject !== 'string') {
throw new Error('ansi-slice subject must be a string.');
}
plainSubject = (0, _stripAnsi2['default'])(subject);
// console.log(`plainSubject`, plainSubject);
ANSIEscapeCodeMap = (0, _mapANSIEscapeCodes2['default'])(subject);
// console.log(`ANSIEscapeCodeMap`, ANSIEscapeCodeMap);
ReverseANSIEscapeCodeMap = ANSIEscapeCodeMap.reverse();
// console.log(`\nReverseANSIEscapeCodeMap:\n\n`, ReverseANSIEscapeCodeMap, `\n`);
slicedSubject = plainSubject.slice(beginSlice, endSlice);
// console.log(`slicedSubject`, slicedSubject);
offsetSlicedSubjectLength = beginSlice + slicedSubject.length;
// console.log(`offsetSlicedSubjectLength`, offsetSlicedSubjectLength);
noNegative = true;
ReverseANSIEscapeCodeMap.forEach(function (escapeCode) {
var offsetIndex = undefined;
if (escapeCode.index > offsetSlicedSubjectLength) {
return;
}
mappedEscapeCodes = true;
offsetIndex = escapeCode.index - beginSlice;
if (offsetIndex < 0) {
// console.log(`offsetIndex`, offsetIndex);
if (!noNegative) {
return;
}
noNegative = false;
offsetIndex = 0;
}
/* escapeCode.code = escapeCode.code
.replace("\u001b[34m", '{blue}')
.replace("\u001b[39m", '{reset}')
.replace("\u001b[31m", '{red}'); */
// console.log(`escapeCode`, JSON.stringify(escapeCode));
slicedSubject = (0, _spliceString2['default'])(slicedSubject, offsetIndex, 0, escapeCode.code);
});
if (mappedEscapeCodes) {
slicedSubject = (0, _trim2['default'])(slicedSubject, new RegExp(ANSIRegex.source + '$'));
slicedSubject += (0, _close2['default'])();
// slicedSubject += `\u001b[39m`;
}
return slicedSubject;
};
module.exports = exports['default'];
//# sourceMappingURL=slice.js.map