summaryrefslogtreecommitdiff
path: root/node_modules/postcss-alias/index.js
blob: fdc02f6a56484e0c7697a94bcdda55d6b316f673 (plain)
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
'use strict';

var postcss = require('postcss');

module.exports = postcss.plugin('postcss-alias', function () {
  return function (css) {

    var aliases = [];
    css.walkAtRules('alias', function(rule){

      rule.walkDecls(function(decl){
        aliases.push({ name: decl.prop, property: decl.value });
      });

      rule.remove();

    });

    /**
     * Alias expander, takes an alias and expands to the relevant decleration/value
     * @param  {string} alias The alias to expand
     */
    var expander = function(alias){

      css.walkDecls(function(decl){

        if (decl.prop === alias.name) {
          decl.replaceWith({ prop: alias.property, value: decl.value, important: decl.important });
        }

      });

    };

    // Loop over and expand every alias
    aliases.forEach(expander);

  };
});