diff --git a/lib/colors.js b/lib/colors.js index 77918a9..43f83ab 100644 --- a/lib/colors.js +++ b/lib/colors.js @@ -42,14 +42,14 @@ if (typeof colors.enabled === "undefined") { colors.enabled = colors.supportsColor() !== false; } -colors.stripColors = colors.strip = function (str) { +colors.stripColors = colors.strip = function(str){ return ("" + str).replace(/\x1B\[\d+m/g, ''); }; -var stylize = colors.stylize = function stylize(str, style) { +var stylize = colors.stylize = function stylize (str, style) { if (!colors.enabled) { - return str + ''; + return str+''; } return ansiStyles[style].open + str + ansiStyles[style].close; @@ -60,7 +60,7 @@ var escapeStringRegexp = function (str) { if (typeof str !== 'string') { throw new TypeError('Expected a string'); } - return str.replace(matchOperatorsRe, '\\$&'); + return str.replace(matchOperatorsRe, '\\$&'); } function build(_styles) { @@ -88,7 +88,7 @@ var styles = (function () { return ret; })(); -var proto = defineProps(function colors() { }, styles); +var proto = defineProps(function colors() {}, styles); function applyStyle() { var args = arguments; @@ -107,26 +107,14 @@ function applyStyle() { var nestedStyles = this._styles; var i = nestedStyles.length; - - var rebuiltString = ''; - while (i--) { var code = ansiStyles[nestedStyles[i]]; - - // multiline handling functionality - var lines = str.split(/[\r\n]+/) - if (lines == 1) { - rebuiltString += code.open + line.replace(code.closeRe, code.open) + code.close - } else { - lines.forEach(line => { - rebuiltString += code.open + line.replace(code.closeRe, code.open) + code.close + '\n' - }) - } - + str = code.open + str.replace(code.closeRe, code.open) + code.close; + str = str.replace(new RegExp(/[\r\n]+/, 'g'), code.close + '\n' + code.open); } - return rebuiltString; - + return str; + } colors.setTheme = function (theme) { @@ -138,11 +126,11 @@ colors.setTheme = function (theme) { return; } for (var style in theme) { - (function (style) { - colors[style] = function (str) { - if (typeof theme[style] === 'object') { + (function(style){ + colors[style] = function(str){ + if (typeof theme[style] === 'object'){ var out = str; - for (var i in theme[style]) { + for (var i in theme[style]){ out = colors[theme[style][i]](out); } return out; @@ -165,7 +153,7 @@ function init() { return ret; } -var sequencer = function sequencer(map, str) { +var sequencer = function sequencer (map, str) { var exploded = str.split(""), i = 0; exploded = exploded.map(map); return exploded.join(""); @@ -183,11 +171,11 @@ colors.maps.rainbow = require('./maps/rainbow'); colors.maps.random = require('./maps/random') for (var map in colors.maps) { - (function (map) { + (function(map){ colors[map] = function (str) { return sequencer(colors.maps[map], str); } })(map) } -defineProps(colors, init()); +defineProps(colors, init()); \ No newline at end of file