UNPKG

rrggbbaa

Version:

Color code utility and converter library for NodeJS.

90 lines (75 loc) 2.77 kB
"use strict"; 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;