mirror of
https://github.com/flynx/colors.js.git
synced 2025-10-29 19:10:10 +00:00
[dist] First pass at JSHINT of codebase
This commit is contained in:
parent
891da6434c
commit
4b2ae6c5ec
238
colors.js
238
colors.js
@ -49,69 +49,58 @@ var addProperty = function (color, func) {
|
||||
return func.apply(str);
|
||||
};
|
||||
String.prototype.__defineGetter__(color, func);
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Iterate through all default styles and colors
|
||||
//
|
||||
|
||||
var x = ['bold', 'underline', 'italic', 'inverse', 'grey', 'black', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
|
||||
x.forEach(function (style) {
|
||||
|
||||
// __defineGetter__ at the least works in more browsers
|
||||
// http://robertnyman.com/javascript/javascript-getters-setters.html
|
||||
// Object.defineProperty only works in Chrome
|
||||
addProperty(style, function () {
|
||||
return stylize(this, style);
|
||||
});
|
||||
});
|
||||
function stylize(str, style) {
|
||||
|
||||
function sequencer(map) {
|
||||
return function () {
|
||||
if (!isHeadless) {
|
||||
return this.replace(/( )/, '$1');
|
||||
}
|
||||
var exploded = this.split("");
|
||||
var i = 0;
|
||||
exploded = exploded.map(map);
|
||||
return exploded.join("");
|
||||
}
|
||||
}
|
||||
var styles;
|
||||
|
||||
var rainbowMap = (function () {
|
||||
var rainbowColors = ['red','yellow','green','blue','magenta']; //RoY G BiV
|
||||
return function (letter, i, exploded) {
|
||||
if (letter == " ") {
|
||||
return letter;
|
||||
if (exports.mode === 'console') {
|
||||
styles = {
|
||||
//styles
|
||||
'bold' : ['\033[1m', '\033[22m'],
|
||||
'italic' : ['\033[3m', '\033[23m'],
|
||||
'underline' : ['\033[4m', '\033[24m'],
|
||||
'inverse' : ['\033[7m', '\033[27m'],
|
||||
//grayscale
|
||||
'white' : ['\033[37m', '\033[39m'],
|
||||
'grey' : ['\033[90m', '\033[39m'],
|
||||
'black' : ['\033[30m', '\033[39m'],
|
||||
//colors
|
||||
'blue' : ['\033[34m', '\033[39m'],
|
||||
'cyan' : ['\033[36m', '\033[39m'],
|
||||
'green' : ['\033[32m', '\033[39m'],
|
||||
'magenta' : ['\033[35m', '\033[39m'],
|
||||
'red' : ['\033[31m', '\033[39m'],
|
||||
'yellow' : ['\033[33m', '\033[39m']
|
||||
};
|
||||
} else if (exports.mode === 'browser') {
|
||||
styles = {
|
||||
//styles
|
||||
'bold' : ['<b>', '</b>'],
|
||||
'italic' : ['<i>', '</i>'],
|
||||
'underline' : ['<u>', '</u>'],
|
||||
'inverse' : ['<span style="background-color:black;color:white;">', '</span>'],
|
||||
//grayscale
|
||||
'white' : ['<span style="color:white;">', '</span>'],
|
||||
'grey' : ['<span style="color:grey;">', '</span>'],
|
||||
'black' : ['<span style="color:black;">', '</span>'],
|
||||
//colors
|
||||
'blue' : ['<span style="color:blue;">', '</span>'],
|
||||
'cyan' : ['<span style="color:cyan;">', '</span>'],
|
||||
'green' : ['<span style="color:green;">', '</span>'],
|
||||
'magenta' : ['<span style="color:magenta;">', '</span>'],
|
||||
'red' : ['<span style="color:red;">', '</span>'],
|
||||
'yellow' : ['<span style="color:yellow;">', '</span>']
|
||||
};
|
||||
} else if (exports.mode === 'none') {
|
||||
return str;
|
||||
} else {
|
||||
return stylize(letter, rainbowColors[i++ % rainbowColors.length]);
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
exports.themes = {};
|
||||
|
||||
exports.addSequencer = function (name, map) {
|
||||
addProperty(name, sequencer(map));
|
||||
}
|
||||
|
||||
exports.addSequencer('rainbow', rainbowMap);
|
||||
exports.addSequencer('zebra', function (letter, i, exploded) {
|
||||
return i % 2 === 0 ? letter : letter.inverse;
|
||||
});
|
||||
|
||||
exports.setTheme = function (theme) {
|
||||
if (typeof theme === 'string') {
|
||||
try {
|
||||
exports.themes[theme] = require(theme);
|
||||
applyTheme(exports.themes[theme]);
|
||||
return exports.themes[theme];
|
||||
} catch (err) {
|
||||
return err;
|
||||
}
|
||||
} else {
|
||||
applyTheme(theme);
|
||||
console.log('unsupported mode, try "browser", "console" or "none"');
|
||||
}
|
||||
return styles[style][0] + str + styles[style][1];
|
||||
}
|
||||
|
||||
function applyTheme(theme) {
|
||||
@ -138,57 +127,72 @@ function applyTheme (theme) {
|
||||
});
|
||||
}
|
||||
|
||||
function stylize(str, style) {
|
||||
|
||||
if (exports.mode == 'console') {
|
||||
var styles = {
|
||||
//styles
|
||||
'bold' : ['\033[1m', '\033[22m'],
|
||||
'italic' : ['\033[3m', '\033[23m'],
|
||||
'underline' : ['\033[4m', '\033[24m'],
|
||||
'inverse' : ['\033[7m', '\033[27m'],
|
||||
//grayscale
|
||||
'white' : ['\033[37m', '\033[39m'],
|
||||
'grey' : ['\033[90m', '\033[39m'],
|
||||
'black' : ['\033[30m', '\033[39m'],
|
||||
//colors
|
||||
'blue' : ['\033[34m', '\033[39m'],
|
||||
'cyan' : ['\033[36m', '\033[39m'],
|
||||
'green' : ['\033[32m', '\033[39m'],
|
||||
'magenta' : ['\033[35m', '\033[39m'],
|
||||
'red' : ['\033[31m', '\033[39m'],
|
||||
'yellow' : ['\033[33m', '\033[39m']
|
||||
};
|
||||
} else if (exports.mode == 'browser') {
|
||||
var styles = {
|
||||
//styles
|
||||
'bold' : ['<b>', '</b>'],
|
||||
'italic' : ['<i>', '</i>'],
|
||||
'underline' : ['<u>', '</u>'],
|
||||
'inverse' : ['<span style="background-color:black;color:white;">', '</span>'],
|
||||
//grayscale
|
||||
'white' : ['<span style="color:white;">', '</span>'],
|
||||
'grey' : ['<span style="color:grey;">', '</span>'],
|
||||
'black' : ['<span style="color:black;">', '</span>'],
|
||||
//colors
|
||||
'blue' : ['<span style="color:blue;">', '</span>'],
|
||||
'cyan' : ['<span style="color:cyan;">', '</span>'],
|
||||
'green' : ['<span style="color:green;">', '</span>'],
|
||||
'magenta' : ['<span style="color:magenta;">', '</span>'],
|
||||
'red' : ['<span style="color:red;">', '</span>'],
|
||||
'yellow' : ['<span style="color:yellow;">', '</span>']
|
||||
};
|
||||
} else if (exports.mode == 'none') {
|
||||
return str;
|
||||
} else {
|
||||
console.log('unsupported mode, try "browser", "console" or "none"');
|
||||
//
|
||||
// Iterate through all default styles and colors
|
||||
//
|
||||
var x = ['bold', 'underline', 'italic', 'inverse', 'grey', 'black', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
|
||||
x.forEach(function (style) {
|
||||
|
||||
// __defineGetter__ at the least works in more browsers
|
||||
// http://robertnyman.com/javascript/javascript-getters-setters.html
|
||||
// Object.defineProperty only works in Chrome
|
||||
addProperty(style, function () {
|
||||
return stylize(this, style);
|
||||
});
|
||||
});
|
||||
|
||||
function sequencer(map) {
|
||||
return function () {
|
||||
if (!isHeadless) {
|
||||
return this.replace(/( )/, '$1');
|
||||
}
|
||||
return styles[style][0] + str + styles[style][1];
|
||||
var exploded = this.split(""), i = 0;
|
||||
exploded = exploded.map(map);
|
||||
return exploded.join("");
|
||||
};
|
||||
}
|
||||
|
||||
var rainbowMap = (function () {
|
||||
var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV
|
||||
return function (letter, i, exploded) {
|
||||
if (letter === " ") {
|
||||
return letter;
|
||||
} else {
|
||||
return stylize(letter, rainbowColors[i++ % rainbowColors.length]);
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
exports.themes = {};
|
||||
|
||||
exports.addSequencer = function (name, map) {
|
||||
addProperty(name, sequencer(map));
|
||||
};
|
||||
|
||||
// don't summon zalgo
|
||||
addProperty('zalgo', function () {
|
||||
return zalgo(this);
|
||||
exports.addSequencer('rainbow', rainbowMap);
|
||||
exports.addSequencer('zebra', function (letter, i, exploded) {
|
||||
return i % 2 === 0 ? letter : letter.inverse;
|
||||
});
|
||||
|
||||
exports.setTheme = function (theme) {
|
||||
if (typeof theme === 'string') {
|
||||
try {
|
||||
exports.themes[theme] = require(theme);
|
||||
applyTheme(exports.themes[theme]);
|
||||
return exports.themes[theme];
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
return err;
|
||||
}
|
||||
} else {
|
||||
applyTheme(theme);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
addProperty('stripColors', function () {
|
||||
return ("" + this).replace(/\u001b\[\d+m/g, '');
|
||||
});
|
||||
|
||||
// please no
|
||||
@ -234,33 +238,32 @@ function zalgo(text, options) {
|
||||
zalgo = {};
|
||||
|
||||
function randomNumber(range) {
|
||||
r = Math.floor(Math.random()*range);
|
||||
var r = Math.floor(Math.random() * range);
|
||||
return r;
|
||||
};
|
||||
}
|
||||
|
||||
function is_char(character) {
|
||||
var bool = false;
|
||||
all.filter(function (i) {
|
||||
bool = (i == character);
|
||||
bool = (i === character);
|
||||
});
|
||||
return bool;
|
||||
}
|
||||
|
||||
function heComes(text, options) {
|
||||
result = '';
|
||||
var result = '', counts, l;
|
||||
options = options || {};
|
||||
options["up"] = options["up"] || true;
|
||||
options["mid"] = options["mid"] || true;
|
||||
options["down"] = options["down"] || true;
|
||||
options["size"] = options["size"] || "maxi";
|
||||
var counts;
|
||||
text = text.split('');
|
||||
for(var l in text){
|
||||
if(is_char(l)) { continue; }
|
||||
for (l in text) {
|
||||
if (is_char(l)) {
|
||||
continue;
|
||||
}
|
||||
result = result + text[l];
|
||||
|
||||
counts = {"up" : 0, "down" : 0, "mid" : 0};
|
||||
|
||||
switch (options.size) {
|
||||
case 'mini':
|
||||
counts.up = randomNumber(8);
|
||||
@ -282,8 +285,7 @@ function zalgo(text, options) {
|
||||
var arr = ["up", "mid", "down"];
|
||||
for (var d in arr) {
|
||||
var index = arr[d];
|
||||
for (var i = 0 ; i <= counts[index]; i++)
|
||||
{
|
||||
for (var i = 0 ; i <= counts[index]; i++) {
|
||||
if (options[index]) {
|
||||
result = result + soul[index][randomNumber(soul[index].length)];
|
||||
}
|
||||
@ -291,10 +293,12 @@ function zalgo(text, options) {
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
}
|
||||
return heComes(text);
|
||||
}
|
||||
|
||||
addProperty('stripColors', function() {
|
||||
return ("" + this).replace(/\u001b\[\d+m/g,'');
|
||||
|
||||
// don't summon zalgo
|
||||
addProperty('zalgo', function () {
|
||||
return zalgo(this);
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user