| var COLORS = { |
| aliceblue: '#f0f8ff', |
| antiquewhite: '#faebd7', |
| aqua: '#0ff', |
| aquamarine: '#7fffd4', |
| azure: '#f0ffff', |
| beige: '#f5f5dc', |
| bisque: '#ffe4c4', |
| black: '#000', |
| blanchedalmond: '#ffebcd', |
| blue: '#00f', |
| blueviolet: '#8a2be2', |
| brown: '#a52a2a', |
| burlywood: '#deb887', |
| cadetblue: '#5f9ea0', |
| chartreuse: '#7fff00', |
| chocolate: '#d2691e', |
| coral: '#ff7f50', |
| cornflowerblue: '#6495ed', |
| cornsilk: '#fff8dc', |
| crimson: '#dc143c', |
| cyan: '#0ff', |
| darkblue: '#00008b', |
| darkcyan: '#008b8b', |
| darkgoldenrod: '#b8860b', |
| darkgray: '#a9a9a9', |
| darkgreen: '#006400', |
| darkgrey: '#a9a9a9', |
| darkkhaki: '#bdb76b', |
| darkmagenta: '#8b008b', |
| darkolivegreen: '#556b2f', |
| darkorange: '#ff8c00', |
| darkorchid: '#9932cc', |
| darkred: '#8b0000', |
| darksalmon: '#e9967a', |
| darkseagreen: '#8fbc8f', |
| darkslateblue: '#483d8b', |
| darkslategray: '#2f4f4f', |
| darkslategrey: '#2f4f4f', |
| darkturquoise: '#00ced1', |
| darkviolet: '#9400d3', |
| deeppink: '#ff1493', |
| deepskyblue: '#00bfff', |
| dimgray: '#696969', |
| dimgrey: '#696969', |
| dodgerblue: '#1e90ff', |
| firebrick: '#b22222', |
| floralwhite: '#fffaf0', |
| forestgreen: '#228b22', |
| fuchsia: '#f0f', |
| gainsboro: '#dcdcdc', |
| ghostwhite: '#f8f8ff', |
| gold: '#ffd700', |
| goldenrod: '#daa520', |
| gray: '#808080', |
| green: '#008000', |
| greenyellow: '#adff2f', |
| grey: '#808080', |
| honeydew: '#f0fff0', |
| hotpink: '#ff69b4', |
| indianred: '#cd5c5c', |
| indigo: '#4b0082', |
| ivory: '#fffff0', |
| khaki: '#f0e68c', |
| lavender: '#e6e6fa', |
| lavenderblush: '#fff0f5', |
| lawngreen: '#7cfc00', |
| lemonchiffon: '#fffacd', |
| lightblue: '#add8e6', |
| lightcoral: '#f08080', |
| lightcyan: '#e0ffff', |
| lightgoldenrodyellow: '#fafad2', |
| lightgray: '#d3d3d3', |
| lightgreen: '#90ee90', |
| lightgrey: '#d3d3d3', |
| lightpink: '#ffb6c1', |
| lightsalmon: '#ffa07a', |
| lightseagreen: '#20b2aa', |
| lightskyblue: '#87cefa', |
| lightslategray: '#778899', |
| lightslategrey: '#778899', |
| lightsteelblue: '#b0c4de', |
| lightyellow: '#ffffe0', |
| lime: '#0f0', |
| limegreen: '#32cd32', |
| linen: '#faf0e6', |
| magenta: '#ff00ff', |
| maroon: '#800000', |
| mediumaquamarine: '#66cdaa', |
| mediumblue: '#0000cd', |
| mediumorchid: '#ba55d3', |
| mediumpurple: '#9370db', |
| mediumseagreen: '#3cb371', |
| mediumslateblue: '#7b68ee', |
| mediumspringgreen: '#00fa9a', |
| mediumturquoise: '#48d1cc', |
| mediumvioletred: '#c71585', |
| midnightblue: '#191970', |
| mintcream: '#f5fffa', |
| mistyrose: '#ffe4e1', |
| moccasin: '#ffe4b5', |
| navajowhite: '#ffdead', |
| navy: '#000080', |
| oldlace: '#fdf5e6', |
| olive: '#808000', |
| olivedrab: '#6b8e23', |
| orange: '#ffa500', |
| orangered: '#ff4500', |
| orchid: '#da70d6', |
| palegoldenrod: '#eee8aa', |
| palegreen: '#98fb98', |
| paleturquoise: '#afeeee', |
| palevioletred: '#db7093', |
| papayawhip: '#ffefd5', |
| peachpuff: '#ffdab9', |
| peru: '#cd853f', |
| pink: '#ffc0cb', |
| plum: '#dda0dd', |
| powderblue: '#b0e0e6', |
| purple: '#800080', |
| rebeccapurple: '#663399', |
| red: '#f00', |
| rosybrown: '#bc8f8f', |
| royalblue: '#4169e1', |
| saddlebrown: '#8b4513', |
| salmon: '#fa8072', |
| sandybrown: '#f4a460', |
| seagreen: '#2e8b57', |
| seashell: '#fff5ee', |
| sienna: '#a0522d', |
| silver: '#c0c0c0', |
| skyblue: '#87ceeb', |
| slateblue: '#6a5acd', |
| slategray: '#708090', |
| slategrey: '#708090', |
| snow: '#fffafa', |
| springgreen: '#00ff7f', |
| steelblue: '#4682b4', |
| tan: '#d2b48c', |
| teal: '#008080', |
| thistle: '#d8bfd8', |
| tomato: '#ff6347', |
| turquoise: '#40e0d0', |
| violet: '#ee82ee', |
| wheat: '#f5deb3', |
| white: '#fff', |
| whitesmoke: '#f5f5f5', |
| yellow: '#ff0', |
| yellowgreen: '#9acd32' |
| }; |
| |
| var toHex = {}; |
| var toName = {}; |
| |
| for (var name in COLORS) { |
| var hex = COLORS[name]; |
| |
| if (name.length < hex.length) { |
| toName[hex] = name; |
| } else { |
| toHex[name] = hex; |
| } |
| } |
| |
| var toHexPattern = new RegExp('(^| |,|\\))(' + Object.keys(toHex).join('|') + ')( |,|\\)|$)', 'ig'); |
| var toNamePattern = new RegExp('(' + Object.keys(toName).join('|') + ')([^a-f0-9]|$)', 'ig'); |
| |
| function hexConverter(match, prefix, colorValue, suffix) { |
| return prefix + toHex[colorValue.toLowerCase()] + suffix; |
| } |
| |
| function nameConverter(match, colorValue, suffix) { |
| return toName[colorValue.toLowerCase()] + suffix; |
| } |
| |
| function shortenHex(value) { |
| var hasHex = value.indexOf('#') > -1; |
| var shortened = value.replace(toHexPattern, hexConverter); |
| |
| if (shortened != value) { |
| shortened = shortened.replace(toHexPattern, hexConverter); |
| } |
| |
| return hasHex ? |
| shortened.replace(toNamePattern, nameConverter) : |
| shortened; |
| } |
| |
| module.exports = shortenHex; |