| '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); |