From 24e6a26bbb211d790131ab2e30edc4f4b5b314a7 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Sat, 31 Aug 2013 19:18:58 -0500 Subject: [PATCH] Added rainbow styling --- chalk.js | 17 +++++++++++++++++ test.js | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/chalk.js b/chalk.js index 17c6dba..3fbb386 100644 --- a/chalk.js +++ b/chalk.js @@ -60,3 +60,20 @@ chalk.supportsColor = require('has-color'); if (chalk.enabled === undefined) { chalk.enabled = chalk.supportsColor; } + +// rainbow style +var rainbowColors = [ + chalk.red, + chalk.yellow, + chalk.green, + chalk.blue, + chalk.magenta +]; +chalk.rainbow = function(str) { + var arStr = str.split(''), + out = ''; + for (var i in arStr) { + out += rainbowColors[i % rainbowColors.length](arStr[i]); + } + return out; +}; diff --git a/test.js b/test.js index 93256e3..924a984 100644 --- a/test.js +++ b/test.js @@ -29,6 +29,10 @@ describe('chalk', function () { it('should alias gray to grey', function () { assert.equal(chalk.grey('foo'), '\x1b[90mfoo\x1b[39m'); }); + + it('should style a string in rainbow colors', function () { + assert.equal(chalk.rainbow('rygbmr g\tm\ny'), '\x1b[31mr\x1b[39m\x1b[33my\x1b[39m\x1b[32mg\x1b[39m\x1b[34mb\x1b[39m\x1b[35mm\x1b[39m\x1b[31mr\x1b[39m\x1b[33m \x1b[39m\x1b[32mg\x1b[39m\x1b[34m\t\x1b[39m\x1b[35mm\x1b[39m\x1b[31m\n\x1b[39m\x1b[33my\x1b[39m'); + }); }); describe('chalk.enabled', function () {