diff options
Diffstat (limited to 'tools/node_modules/eslint/node_modules/slice-ansi/index.js')
-rwxr-xr-x | tools/node_modules/eslint/node_modules/slice-ansi/index.js | 50 |
1 files changed, 10 insertions, 40 deletions
diff --git a/tools/node_modules/eslint/node_modules/slice-ansi/index.js b/tools/node_modules/eslint/node_modules/slice-ansi/index.js index 634ee9c7be..65a1aef5c8 100755 --- a/tools/node_modules/eslint/node_modules/slice-ansi/index.js +++ b/tools/node_modules/eslint/node_modules/slice-ansi/index.js @@ -1,5 +1,7 @@ 'use strict'; const isFullwidthCodePoint = require('is-fullwidth-code-point'); +const astralRegex = require('astral-regex'); +const ansiStyles = require('ansi-styles'); const ESCAPES = [ '\u001B', @@ -7,55 +9,23 @@ const ESCAPES = [ ]; const END_CODE = 39; -const ASTRAL_REGEX = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; - -const ESCAPE_CODES = new Map([ - [0, 0], - [1, 22], - [2, 22], - [3, 23], - [4, 24], - [7, 27], - [8, 28], - [9, 29], - [30, 39], - [31, 39], - [32, 39], - [33, 39], - [34, 39], - [35, 39], - [36, 39], - [37, 39], - [90, 39], - [40, 49], - [41, 49], - [42, 49], - [43, 49], - [44, 49], - [45, 49], - [46, 49], - [47, 49] -]); const wrapAnsi = code => `${ESCAPES[0]}[${code}m`; module.exports = (str, begin, end) => { - const arr = Array.from(str.normalize()); + const arr = [...str.normalize()]; end = typeof end === 'number' ? end : arr.length; let insideEscape = false; - let escapeCode; + let escapeCode = null; let visible = 0; let output = ''; - for (const item of arr.entries()) { - const i = item[0]; - const x = item[1]; - + for (const [i, x] of arr.entries()) { let leftEscape = false; - if (ESCAPES.indexOf(x) !== -1) { + if (ESCAPES.includes(x)) { insideEscape = true; const code = /\d[^m]*/.exec(str.slice(i, i + 4)); escapeCode = code === END_CODE ? null : code; @@ -68,17 +38,17 @@ module.exports = (str, begin, end) => { ++visible; } - if (!ASTRAL_REGEX.test(x) && isFullwidthCodePoint(x.codePointAt())) { + if (!astralRegex({exact: true}).test(x) && isFullwidthCodePoint(x.codePointAt())) { ++visible; } if (visible > begin && visible <= end) { output += x; - } else if (visible === begin && !insideEscape && escapeCode !== undefined && escapeCode !== END_CODE) { + } else if (visible === begin && !insideEscape && escapeCode !== null && escapeCode !== END_CODE) { output += wrapAnsi(escapeCode); } else if (visible >= end) { - if (escapeCode !== undefined) { - output += wrapAnsi(ESCAPE_CODES.get(parseInt(escapeCode, 10)) || END_CODE); + if (escapeCode !== null) { + output += wrapAnsi(ansiStyles.codes.get(parseInt(escapeCode, 10)) || END_CODE); } break; } |