You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'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;
|
|
|
|