148 lines
2.7 KiB
JavaScript
148 lines
2.7 KiB
JavaScript
|
'use strict';
|
|||
|
const escapeStringRegexp = require('escape-string-regexp');
|
|||
|
|
|||
|
const platform = process.platform;
|
|||
|
|
|||
|
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: '♥',
|
|||
|
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 win = {
|
|||
|
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,
|
|||
|
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' ? win : main;
|
|||
|
|
|||
|
const fn = str => {
|
|||
|
if (figures === main) {
|
|||
|
return str;
|
|||
|
}
|
|||
|
|
|||
|
Object.keys(main).forEach(key => {
|
|||
|
if (main[key] === figures[key]) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
str = str.replace(new RegExp(escapeStringRegexp(main[key]), 'g'), figures[key]);
|
|||
|
});
|
|||
|
|
|||
|
return str;
|
|||
|
};
|
|||
|
|
|||
|
module.exports = Object.assign(fn, figures);
|