rrggbbaa
Version:
Color code utility and converter library for NodeJS.
90 lines (75 loc) • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.parse = undefined;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _regexp = require("./regexp");
var _rrggbbaa = require("./rrggbbaa");
var _rrggbbaa2 = _interopRequireDefault(_rrggbbaa);
var _converters = require("./converters");
var _webcolors = require("./webcolors");
var _webcolors2 = _interopRequireDefault(_webcolors);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var parse = function parse(input) {
// if not value, default to black
if (!input) {
return {
r: 0,
g: 0,
b: 0,
a: 100
};
}
// try to identify
if ((typeof input === "undefined" ? "undefined" : _typeof(input)) === "object" && input instanceof _rrggbbaa2.default) {
return {
r: input.red(),
g: input.green(),
b: input.blue(),
a: input.alpha()
};
} else if (typeof input === "string") {
// test for rgb
var rgbMatch = input.match(_regexp.RegExpForRGB);
if (rgbMatch) {
return {
r: parseInt(rgbMatch[1], 10),
g: parseInt(rgbMatch[2], 10),
b: parseInt(rgbMatch[3], 10),
a: rgbMatch[4] ? parseFloat(rgbMatch[4]) * 100 : 100
};
}
// test for hex(a) - both #FFF and #FFFFFF syntaxes
var hexMatch = input.match(_regexp.RegExpForHEX);
if (hexMatch && (hexMatch[1] || hexMatch[5])) {
if (hexMatch[1]) {
// short syntax
return {
r: (0, _converters.hexToInteger)(hexMatch[1]),
g: (0, _converters.hexToInteger)(hexMatch[2]),
b: (0, _converters.hexToInteger)(hexMatch[3]),
a: hexMatch[4] ? (0, _converters.scale255To100)((0, _converters.hexToInteger)(hexMatch[4])) : 100
};
} else {
// long syntax
return {
r: (0, _converters.hexToInteger)(hexMatch[5]),
g: (0, _converters.hexToInteger)(hexMatch[6]),
b: (0, _converters.hexToInteger)(hexMatch[7]),
a: hexMatch[8] ? (0, _converters.scale255To100)((0, _converters.hexToInteger)(hexMatch[8])) : 100
};
}
}
// test web colors
for (var i = 0; i < _webcolors2.default.length; i += 1) {
if (_webcolors2.default[i].name.toLowerCase() === input.toLowerCase()) {
return parse("#" + _webcolors2.default[i].hex);
}
}
}
// nothing matched, throw an error
throw new Error("input could not be parsed as a color");
};
exports.default = parse;
exports.parse = parse;