summaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/node_modules/cli-table3/src/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/node_modules/cli-table3/src/utils.js')
-rw-r--r--deps/node/deps/npm/node_modules/cli-table3/src/utils.js303
1 files changed, 0 insertions, 303 deletions
diff --git a/deps/node/deps/npm/node_modules/cli-table3/src/utils.js b/deps/node/deps/npm/node_modules/cli-table3/src/utils.js
deleted file mode 100644
index c9149558..00000000
--- a/deps/node/deps/npm/node_modules/cli-table3/src/utils.js
+++ /dev/null
@@ -1,303 +0,0 @@
-const objectAssign = require('object-assign');
-const stringWidth = require('string-width');
-
-function codeRegex(capture) {
- return capture ? /\u001b\[((?:\d*;){0,5}\d*)m/g : /\u001b\[(?:\d*;){0,5}\d*m/g;
-}
-
-function strlen(str) {
- let code = codeRegex();
- let stripped = ('' + str).replace(code, '');
- let split = stripped.split('\n');
- return split.reduce(function(memo, s) {
- return stringWidth(s) > memo ? stringWidth(s) : memo;
- }, 0);
-}
-
-function repeat(str, times) {
- return Array(times + 1).join(str);
-}
-
-function pad(str, len, pad, dir) {
- let length = strlen(str);
- if (len + 1 >= length) {
- let padlen = len - length;
- switch (dir) {
- case 'right': {
- str = repeat(pad, padlen) + str;
- break;
- }
- case 'center': {
- let right = Math.ceil(padlen / 2);
- let left = padlen - right;
- str = repeat(pad, left) + str + repeat(pad, right);
- break;
- }
- default: {
- str = str + repeat(pad, padlen);
- break;
- }
- }
- }
- return str;
-}
-
-let codeCache = {};
-
-function addToCodeCache(name, on, off) {
- on = '\u001b[' + on + 'm';
- off = '\u001b[' + off + 'm';
- codeCache[on] = { set: name, to: true };
- codeCache[off] = { set: name, to: false };
- codeCache[name] = { on: on, off: off };
-}
-
-//https://github.com/Marak/colors.js/blob/master/lib/styles.js
-addToCodeCache('bold', 1, 22);
-addToCodeCache('italics', 3, 23);
-addToCodeCache('underline', 4, 24);
-addToCodeCache('inverse', 7, 27);
-addToCodeCache('strikethrough', 9, 29);
-
-function updateState(state, controlChars) {
- let controlCode = controlChars[1] ? parseInt(controlChars[1].split(';')[0]) : 0;
- if ((controlCode >= 30 && controlCode <= 39) || (controlCode >= 90 && controlCode <= 97)) {
- state.lastForegroundAdded = controlChars[0];
- return;
- }
- if ((controlCode >= 40 && controlCode <= 49) || (controlCode >= 100 && controlCode <= 107)) {
- state.lastBackgroundAdded = controlChars[0];
- return;
- }
- if (controlCode === 0) {
- for (let i in state) {
- /* istanbul ignore else */
- if (state.hasOwnProperty(i)) {
- delete state[i];
- }
- }
- return;
- }
- let info = codeCache[controlChars[0]];
- if (info) {
- state[info.set] = info.to;
- }
-}
-
-function readState(line) {
- let code = codeRegex(true);
- let controlChars = code.exec(line);
- let state = {};
- while (controlChars !== null) {
- updateState(state, controlChars);
- controlChars = code.exec(line);
- }
- return state;
-}
-
-function unwindState(state, ret) {
- let lastBackgroundAdded = state.lastBackgroundAdded;
- let lastForegroundAdded = state.lastForegroundAdded;
-
- delete state.lastBackgroundAdded;
- delete state.lastForegroundAdded;
-
- Object.keys(state).forEach(function(key) {
- if (state[key]) {
- ret += codeCache[key].off;
- }
- });
-
- if (lastBackgroundAdded && lastBackgroundAdded != '\u001b[49m') {
- ret += '\u001b[49m';
- }
- if (lastForegroundAdded && lastForegroundAdded != '\u001b[39m') {
- ret += '\u001b[39m';
- }
-
- return ret;
-}
-
-function rewindState(state, ret) {
- let lastBackgroundAdded = state.lastBackgroundAdded;
- let lastForegroundAdded = state.lastForegroundAdded;
-
- delete state.lastBackgroundAdded;
- delete state.lastForegroundAdded;
-
- Object.keys(state).forEach(function(key) {
- if (state[key]) {
- ret = codeCache[key].on + ret;
- }
- });
-
- if (lastBackgroundAdded && lastBackgroundAdded != '\u001b[49m') {
- ret = lastBackgroundAdded + ret;
- }
- if (lastForegroundAdded && lastForegroundAdded != '\u001b[39m') {
- ret = lastForegroundAdded + ret;
- }
-
- return ret;
-}
-
-function truncateWidth(str, desiredLength) {
- if (str.length === strlen(str)) {
- return str.substr(0, desiredLength);
- }
-
- while (strlen(str) > desiredLength) {
- str = str.slice(0, -1);
- }
-
- return str;
-}
-
-function truncateWidthWithAnsi(str, desiredLength) {
- let code = codeRegex(true);
- let split = str.split(codeRegex());
- let splitIndex = 0;
- let retLen = 0;
- let ret = '';
- let myArray;
- let state = {};
-
- while (retLen < desiredLength) {
- myArray = code.exec(str);
- let toAdd = split[splitIndex];
- splitIndex++;
- if (retLen + strlen(toAdd) > desiredLength) {
- toAdd = truncateWidth(toAdd, desiredLength - retLen);
- }
- ret += toAdd;
- retLen += strlen(toAdd);
-
- if (retLen < desiredLength) {
- if (!myArray) {
- break;
- } // full-width chars may cause a whitespace which cannot be filled
- ret += myArray[0];
- updateState(state, myArray);
- }
- }
-
- return unwindState(state, ret);
-}
-
-function truncate(str, desiredLength, truncateChar) {
- truncateChar = truncateChar || '…';
- let lengthOfStr = strlen(str);
- if (lengthOfStr <= desiredLength) {
- return str;
- }
- desiredLength -= strlen(truncateChar);
-
- let ret = truncateWidthWithAnsi(str, desiredLength);
-
- return ret + truncateChar;
-}
-
-function defaultOptions() {
- return {
- chars: {
- top: '─',
- 'top-mid': '┬',
- 'top-left': '┌',
- 'top-right': '┐',
- bottom: '─',
- 'bottom-mid': '┴',
- 'bottom-left': '└',
- 'bottom-right': '┘',
- left: '│',
- 'left-mid': '├',
- mid: '─',
- 'mid-mid': '┼',
- right: '│',
- 'right-mid': '┤',
- middle: '│',
- },
- truncate: '…',
- colWidths: [],
- rowHeights: [],
- colAligns: [],
- rowAligns: [],
- style: {
- 'padding-left': 1,
- 'padding-right': 1,
- head: ['red'],
- border: ['grey'],
- compact: false,
- },
- head: [],
- };
-}
-
-function mergeOptions(options, defaults) {
- options = options || {};
- defaults = defaults || defaultOptions();
- let ret = objectAssign({}, defaults, options);
- ret.chars = objectAssign({}, defaults.chars, options.chars);
- ret.style = objectAssign({}, defaults.style, options.style);
- return ret;
-}
-
-function wordWrap(maxLength, input) {
- let lines = [];
- let split = input.split(/(\s+)/g);
- let line = [];
- let lineLength = 0;
- let whitespace;
- for (let i = 0; i < split.length; i += 2) {
- let word = split[i];
- let newLength = lineLength + strlen(word);
- if (lineLength > 0 && whitespace) {
- newLength += whitespace.length;
- }
- if (newLength > maxLength) {
- if (lineLength !== 0) {
- lines.push(line.join(''));
- }
- line = [word];
- lineLength = strlen(word);
- } else {
- line.push(whitespace || '', word);
- lineLength = newLength;
- }
- whitespace = split[i + 1];
- }
- if (lineLength) {
- lines.push(line.join(''));
- }
- return lines;
-}
-
-function multiLineWordWrap(maxLength, input) {
- let output = [];
- input = input.split('\n');
- for (let i = 0; i < input.length; i++) {
- output.push.apply(output, wordWrap(maxLength, input[i]));
- }
- return output;
-}
-
-function colorizeLines(input) {
- let state = {};
- let output = [];
- for (let i = 0; i < input.length; i++) {
- let line = rewindState(state, input[i]);
- state = readState(line);
- let temp = objectAssign({}, state);
- output.push(unwindState(temp, line));
- }
- return output;
-}
-
-module.exports = {
- strlen: strlen,
- repeat: repeat,
- pad: pad,
- truncate: truncate,
- mergeOptions: mergeOptions,
- wordWrap: multiLineWordWrap,
- colorizeLines: colorizeLines,
-};