151 lines
2.9 KiB
JavaScript
151 lines
2.9 KiB
JavaScript
'use strict';
|
||
const escapeStringRegexp = require('escape-string-regexp');
|
||
|
||
const {platform} = process;
|
||
|
||
const main = {
|
||
tick: '✔',
|
||
cross: '✖',
|
||
star: '★',
|
||
square: '▇',
|
||
squareSmall: '◻',
|
||
squareSmallFilled: '◼',
|
||
play: '▶',
|
||
circle: '◯',
|
||
circleFilled: '◉',
|
||
circleDotted: '◌',
|
||
circleDouble: '◎',
|
||
circleCircle: 'ⓞ',
|
||
circleCross: 'ⓧ',
|
||
circlePipe: 'Ⓘ',
|
||
circleQuestionMark: '?⃝',
|
||
bullet: '●',
|
||
dot: '․',
|
||
line: '─',
|
||
ellipsis: '…',
|
||
pointer: '❯',
|
||
pointerSmall: '›',
|
||
info: 'ℹ',
|
||
warning: '⚠',
|
||
hamburger: '☰',
|
||
smiley: '㋡',
|
||
mustache: '෴',
|
||
heart: '♥',
|
||
nodejs: '⬢',
|
||
arrowUp: '↑',
|
||
arrowDown: '↓',
|
||
arrowLeft: '←',
|
||
arrowRight: '→',
|
||
radioOn: '◉',
|
||
radioOff: '◯',
|
||
checkboxOn: '☒',
|
||
checkboxOff: '☐',
|
||
checkboxCircleOn: 'ⓧ',
|
||
checkboxCircleOff: 'Ⓘ',
|
||
questionMarkPrefix: '?⃝',
|
||
oneHalf: '½',
|
||
oneThird: '⅓',
|
||
oneQuarter: '¼',
|
||
oneFifth: '⅕',
|
||
oneSixth: '⅙',
|
||
oneSeventh: '⅐',
|
||
oneEighth: '⅛',
|
||
oneNinth: '⅑',
|
||
oneTenth: '⅒',
|
||
twoThirds: '⅔',
|
||
twoFifths: '⅖',
|
||
threeQuarters: '¾',
|
||
threeFifths: '⅗',
|
||
threeEighths: '⅜',
|
||
fourFifths: '⅘',
|
||
fiveSixths: '⅚',
|
||
fiveEighths: '⅝',
|
||
sevenEighths: '⅞'
|
||
};
|
||
|
||
const windows = {
|
||
tick: '√',
|
||
cross: '×',
|
||
star: '*',
|
||
square: '█',
|
||
squareSmall: '[ ]',
|
||
squareSmallFilled: '[█]',
|
||
play: '►',
|
||
circle: '( )',
|
||
circleFilled: '(*)',
|
||
circleDotted: '( )',
|
||
circleDouble: '( )',
|
||
circleCircle: '(○)',
|
||
circleCross: '(×)',
|
||
circlePipe: '(│)',
|
||
circleQuestionMark: '(?)',
|
||
bullet: '*',
|
||
dot: '.',
|
||
line: '─',
|
||
ellipsis: '...',
|
||
pointer: '>',
|
||
pointerSmall: '»',
|
||
info: 'i',
|
||
warning: '‼',
|
||
hamburger: '≡',
|
||
smiley: '☺',
|
||
mustache: '┌─┐',
|
||
heart: main.heart,
|
||
nodejs: '♦',
|
||
arrowUp: main.arrowUp,
|
||
arrowDown: main.arrowDown,
|
||
arrowLeft: main.arrowLeft,
|
||
arrowRight: main.arrowRight,
|
||
radioOn: '(*)',
|
||
radioOff: '( )',
|
||
checkboxOn: '[×]',
|
||
checkboxOff: '[ ]',
|
||
checkboxCircleOn: '(×)',
|
||
checkboxCircleOff: '( )',
|
||
questionMarkPrefix: '?',
|
||
oneHalf: '1/2',
|
||
oneThird: '1/3',
|
||
oneQuarter: '1/4',
|
||
oneFifth: '1/5',
|
||
oneSixth: '1/6',
|
||
oneSeventh: '1/7',
|
||
oneEighth: '1/8',
|
||
oneNinth: '1/9',
|
||
oneTenth: '1/10',
|
||
twoThirds: '2/3',
|
||
twoFifths: '2/5',
|
||
threeQuarters: '3/4',
|
||
threeFifths: '3/5',
|
||
threeEighths: '3/8',
|
||
fourFifths: '4/5',
|
||
fiveSixths: '5/6',
|
||
fiveEighths: '5/8',
|
||
sevenEighths: '7/8'
|
||
};
|
||
|
||
if (platform === 'linux') {
|
||
// The main one doesn't look that good on Ubuntu.
|
||
main.questionMarkPrefix = '?';
|
||
}
|
||
|
||
const figures = platform === 'win32' ? windows : main;
|
||
|
||
const fn = string => {
|
||
if (figures === main) {
|
||
return string;
|
||
}
|
||
|
||
for (const [key, value] of Object.entries(main)) {
|
||
if (value === figures[key]) {
|
||
continue;
|
||
}
|
||
|
||
string = string.replace(new RegExp(escapeStringRegexp(value), 'g'), figures[key]);
|
||
}
|
||
|
||
return string;
|
||
};
|
||
|
||
module.exports = Object.assign(fn, figures);
|
||
module.exports.main = main;
|
||
module.exports.windows = windows;
|