Blame view

node_modules/stylus/lib/functions/component.js 1.02 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  var utils = require('../utils')
    , nodes = require('../nodes');
  
  /**
   * Color component name map.
   */
  
  var componentMap = {
      red: 'r'
    , green: 'g'
    , blue: 'b'
    , alpha: 'a'
    , hue: 'h'
    , saturation: 's'
    , lightness: 'l'
  };
  
  /**
   * Color component unit type map.
   */
  
  var unitMap = {
      hue: 'deg'
    , saturation: '%'
    , lightness: '%'
  };
  
  /**
   * Color type map.
   */
  
  var typeMap = {
      red: 'rgba'
    , blue: 'rgba'
    , green: 'rgba'
    , alpha: 'rgba'
    , hue: 'hsla'
    , saturation: 'hsla'
    , lightness: 'hsla'
  };
  
  /**
   * Return component `name` for the given `color`.
   *
   * @param {RGBA|HSLA} color
   * @param {String} name
   * @return {Unit}
   * @api public
   */
  
  module.exports = function component(color, name) {
    utils.assertColor(color, 'color');
    utils.assertString(name, 'name');
    var name = name.string
      , unit = unitMap[name]
      , type = typeMap[name]
      , name = componentMap[name];
    if (!name) throw new Error('invalid color component "' + name + '"');
    return new nodes.Unit(color[type][name], unit);
  };