Upgrade Ava to v4
This commit is contained in:
parent
9a40cc5274
commit
ce89f1b611
1153 changed files with 27264 additions and 95308 deletions
50
node_modules/slice-ansi/index.js
generated
vendored
50
node_modules/slice-ansi/index.js
generated
vendored
|
|
@ -1,7 +1,7 @@
|
|||
'use strict';
|
||||
const isFullwidthCodePoint = require('is-fullwidth-code-point');
|
||||
const astralRegex = require('astral-regex');
|
||||
const ansiStyles = require('ansi-styles');
|
||||
import isFullwidthCodePoint from 'is-fullwidth-code-point';
|
||||
import ansiStyles from 'ansi-styles';
|
||||
|
||||
const astralRegex = /^[\uD800-\uDBFF][\uDC00-\uDFFF]$/;
|
||||
|
||||
const ESCAPES = [
|
||||
'\u001B',
|
||||
|
|
@ -16,17 +16,17 @@ const checkAnsi = (ansiCodes, isEscapes, endAnsiCode) => {
|
|||
|
||||
for (let ansiCode of ansiCodes) {
|
||||
const ansiCodeOrigin = ansiCode;
|
||||
if (ansiCode.match(';')) {
|
||||
if (ansiCode.includes(';')) {
|
||||
ansiCode = ansiCode.split(';')[0][0] + '0';
|
||||
}
|
||||
|
||||
const item = ansiStyles.codes.get(parseInt(ansiCode, 10));
|
||||
const item = ansiStyles.codes.get(Number.parseInt(ansiCode, 10));
|
||||
if (item) {
|
||||
const indexEscape = ansiCodes.indexOf(item.toString());
|
||||
if (indexEscape >= 0) {
|
||||
ansiCodes.splice(indexEscape, 1);
|
||||
} else {
|
||||
if (indexEscape === -1) {
|
||||
output.push(wrapAnsi(isEscapes ? item : ansiCodeOrigin));
|
||||
} else {
|
||||
ansiCodes.splice(indexEscape, 1);
|
||||
}
|
||||
} else if (isEscapes) {
|
||||
output.push(wrapAnsi(0));
|
||||
|
|
@ -38,8 +38,11 @@ const checkAnsi = (ansiCodes, isEscapes, endAnsiCode) => {
|
|||
|
||||
if (isEscapes) {
|
||||
output = output.filter((element, index) => output.indexOf(element) === index);
|
||||
|
||||
if (endAnsiCode !== undefined) {
|
||||
const fistEscapeCode = wrapAnsi(ansiStyles.codes.get(parseInt(endAnsiCode, 10)));
|
||||
const fistEscapeCode = wrapAnsi(ansiStyles.codes.get(Number.parseInt(endAnsiCode, 10)));
|
||||
// TODO: Remove the use of `.reduce` here.
|
||||
// eslint-disable-next-line unicorn/no-array-reduce
|
||||
output = output.reduce((current, next) => next === fistEscapeCode ? [next, ...current] : [...current, next], []);
|
||||
}
|
||||
}
|
||||
|
|
@ -47,12 +50,11 @@ const checkAnsi = (ansiCodes, isEscapes, endAnsiCode) => {
|
|||
return output.join('');
|
||||
};
|
||||
|
||||
module.exports = (string, begin, end) => {
|
||||
const characters = [...string.normalize()];
|
||||
export default function sliceAnsi(string, begin, end) {
|
||||
const characters = [...string];
|
||||
const ansiCodes = [];
|
||||
|
||||
end = typeof end === 'number' ? end : characters.length;
|
||||
|
||||
let stringEnd = typeof end === 'number' ? end : characters.length;
|
||||
let isInsideEscape = false;
|
||||
let ansiCode;
|
||||
let visible = 0;
|
||||
|
|
@ -64,8 +66,10 @@ module.exports = (string, begin, end) => {
|
|||
if (ESCAPES.includes(character)) {
|
||||
const code = /\d[^m]*/.exec(string.slice(index, index + 18));
|
||||
ansiCode = code && code.length > 0 ? code[0] : undefined;
|
||||
if (visible < end) {
|
||||
|
||||
if (visible < stringEnd) {
|
||||
isInsideEscape = true;
|
||||
|
||||
if (ansiCode !== undefined) {
|
||||
ansiCodes.push(ansiCode);
|
||||
}
|
||||
|
|
@ -76,22 +80,26 @@ module.exports = (string, begin, end) => {
|
|||
}
|
||||
|
||||
if (!isInsideEscape && !leftEscape) {
|
||||
++visible;
|
||||
visible++;
|
||||
}
|
||||
|
||||
if (!astralRegex({exact: true}).test(character) && isFullwidthCodePoint(character.codePointAt())) {
|
||||
++visible;
|
||||
if (!astralRegex.test(character) && isFullwidthCodePoint(character.codePointAt())) {
|
||||
visible++;
|
||||
|
||||
if (typeof end !== 'number') {
|
||||
stringEnd++;
|
||||
}
|
||||
}
|
||||
|
||||
if (visible > begin && visible <= end) {
|
||||
if (visible > begin && visible <= stringEnd) {
|
||||
output += character;
|
||||
} else if (visible === begin && !isInsideEscape && ansiCode !== undefined) {
|
||||
output = checkAnsi(ansiCodes);
|
||||
} else if (visible >= end) {
|
||||
} else if (visible >= stringEnd) {
|
||||
output += checkAnsi(ansiCodes, true, ansiCode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return output;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue