.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / sugarss / stringifier.js
1 'use strict';
2
3 exports.__esModule = true;
4
5 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
7 var defaultRaw = {
8     colon: ': ',
9     indent: '  ',
10     commentLeft: ' ',
11     commentRight: ' '
12 };
13
14 var Stringifier = function () {
15     function Stringifier(builder) {
16         _classCallCheck(this, Stringifier);
17
18         this.builder = builder;
19     }
20
21     Stringifier.prototype.stringify = function stringify(node, semicolon) {
22         this[node.type](node, semicolon);
23     };
24
25     Stringifier.prototype.root = function root(node) {
26         this.body(node);
27         if (node.raws.after) this.builder(node.raws.after);
28     };
29
30     Stringifier.prototype.comment = function comment(node) {
31         var left = defaultRaw.commentLeft;
32         var right = defaultRaw.commentRight;
33         if (this.has(node.raws.left)) left = node.raws.left;
34
35         if (node.raws.inline) {
36             if (this.has(node.raws.inlineRight)) {
37                 right = node.raws.inlineRight;
38             } else {
39                 right = '';
40             }
41             if (node.raws.extraIndent) {
42                 this.builder(node.raws.extraIndent);
43             }
44             this.builder('//' + left + node.text + right, node);
45         } else {
46             if (this.has(node.raws.right)) right = node.raws.right;
47             this.builder('/*' + left + node.text + right + '*/', node);
48         }
49     };
50
51     Stringifier.prototype.decl = function decl(node) {
52         var between = node.raws.between || defaultRaw.colon;
53         var string = node.prop + between + this.rawValue(node, 'value');
54
55         if (node.important) {
56             string += node.raws.important || ' !important';
57         }
58
59         this.builder(string, node);
60     };
61
62     Stringifier.prototype.rule = function rule(node) {
63         this.block(node, this.rawValue(node, 'selector'));
64     };
65
66     Stringifier.prototype.atrule = function atrule(node) {
67         var name = '@' + node.name;
68         var params = node.params ? this.rawValue(node, 'params') : '';
69
70         if (this.has(node.raws.afterName)) {
71             name += node.raws.afterName;
72         } else if (params) {
73             name += ' ';
74         }
75
76         this.block(node, name + params);
77     };
78
79     Stringifier.prototype.body = function body(node) {
80         var indent = node.root().raws.indent || defaultRaw.indent;
81
82         for (var i = 0; i < node.nodes.length; i++) {
83             var child = node.nodes[i];
84             var before = child.raws.before.replace(/[^\n]*$/, '') + this.indent(node, indent);
85             if (child.type === 'comment' && child.raws.before.indexOf('\n') === -1) {
86                 before = child.raws.before;
87             }
88             if (before) this.builder(before);
89             this.stringify(child);
90         }
91     };
92
93     Stringifier.prototype.block = function block(node, start) {
94         var between = node.raws.sssBetween || '';
95         this.builder(start + between, node, 'start');
96         if (this.has(node.nodes)) this.body(node);
97     };
98
99     Stringifier.prototype.indent = function indent(node, step) {
100         var result = '';
101         while (node.parent) {
102             result += step;
103             node = node.parent;
104         }
105         return result;
106     };
107
108     Stringifier.prototype.has = function has(value) {
109         return typeof value !== 'undefined';
110     };
111
112     Stringifier.prototype.rawValue = function rawValue(node, prop) {
113         var value = node[prop];
114         var raw = node.raws[prop];
115         if (raw && raw.value === value) {
116             return raw.sss || raw.raw;
117         } else {
118             return value;
119         }
120     };
121
122     return Stringifier;
123 }();
124
125 exports.default = Stringifier;
126 module.exports = exports['default'];
127 //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJkZWZhdWx0UmF3IiwiY29sb24iLCJpbmRlbnQiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsIlN0cmluZ2lmaWVyIiwiYnVpbGRlciIsInN0cmluZ2lmeSIsIm5vZGUiLCJzZW1pY29sb24iLCJ0eXBlIiwicm9vdCIsImJvZHkiLCJyYXdzIiwiYWZ0ZXIiLCJjb21tZW50IiwibGVmdCIsInJpZ2h0IiwiaGFzIiwiaW5saW5lIiwiaW5saW5lUmlnaHQiLCJleHRyYUluZGVudCIsInRleHQiLCJkZWNsIiwiYmV0d2VlbiIsInN0cmluZyIsInByb3AiLCJyYXdWYWx1ZSIsImltcG9ydGFudCIsInJ1bGUiLCJibG9jayIsImF0cnVsZSIsIm5hbWUiLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJpIiwibm9kZXMiLCJsZW5ndGgiLCJjaGlsZCIsImJlZm9yZSIsInJlcGxhY2UiLCJpbmRleE9mIiwic3RhcnQiLCJzc3NCZXR3ZWVuIiwic3RlcCIsInJlc3VsdCIsInBhcmVudCIsInZhbHVlIiwicmF3Iiwic3NzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFNQSxhQUFhO0FBQ2ZDLFdBQWMsSUFEQztBQUVmQyxZQUFjLElBRkM7QUFHZkMsaUJBQWMsR0FIQztBQUlmQyxrQkFBYztBQUpDLENBQW5COztJQU9xQkMsVztBQUVqQix5QkFBWUMsT0FBWixFQUFxQjtBQUFBOztBQUNqQixhQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDSDs7MEJBRURDLFMsc0JBQVVDLEksRUFBTUMsUyxFQUFXO0FBQ3ZCLGFBQUtELEtBQUtFLElBQVYsRUFBZ0JGLElBQWhCLEVBQXNCQyxTQUF0QjtBQUNILEs7OzBCQUVERSxJLGlCQUFLSCxJLEVBQU07QUFDUCxhQUFLSSxJQUFMLENBQVVKLElBQVY7QUFDQSxZQUFLQSxLQUFLSyxJQUFMLENBQVVDLEtBQWYsRUFBdUIsS0FBS1IsT0FBTCxDQUFhRSxLQUFLSyxJQUFMLENBQVVD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QUFDQSxZQUFLc0IsT0FBT0EsSUFBSUQsS0FBSixLQUFjQSxLQUExQixFQUFrQztBQUM5QixtQkFBT0MsSUFBSUMsR0FBSixJQUFXRCxJQUFJQSxHQUF0QjtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPRCxLQUFQO0FBQ0g7QUFDSixLOzs7OztrQkEzR2dCMUMsVyIsImZpbGUiOiJzdHJpbmdpZmllci5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlZmF1bHRSYXcgPSB7XG4gICAgY29sb246ICAgICAgICAnOiAnLFxuICAgIGluZGVudDogICAgICAgJyAgJyxcbiAgICBjb21tZW50TGVmdDogICcgJyxcbiAgICBjb21tZW50UmlnaHQ6ICcgJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5naWZpZXIge1xuXG4gICAgY29uc3RydWN0b3IoYnVpbGRlcikge1xuICAgICAgICB0aGlzLmJ1aWxkZXIgPSBidWlsZGVyO1xuICAgIH1cblxuICAgIHN0cmluZ2lmeShub2RlLCBzZW1pY29sb24pIHtcbiAgICAgICAgdGhpc1tub2RlLnR5cGVdKG5vZGUsIHNlbWljb2xvbik7XG4gICAgfVxuXG4gICAgcm9vdChub2RlKSB7XG4gICAgICAgIHRoaXMuYm9keShub2RlKTtcbiAgICAgICAgaWYgKCBub2RlLnJhd3MuYWZ0ZXIgKSB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLmFmdGVyKTtcbiAgICB9XG5cbiAgICBjb21tZW50KG5vZGUpIHtcbiAgICAgICAgbGV0IGxlZnQgID0gZGVmYXVsdFJhdy5jb21tZW50TGVmdDtcbiAgICAgICAgbGV0IHJpZ2h0ID0gZGVmYXVsdFJhdy5jb21tZW50UmlnaHQ7XG4gICAgICAgIGlmICggdGhpcy5oYXMobm9kZS5yYXdzLmxlZnQpICkgbGVmdCA9IG5vZGUucmF3cy5sZWZ0O1xuXG4gICAgICAgIGlmICggbm9kZS5yYXdzLmlubGluZSApIHtcbiAgICAgICAgICAgIGlmICggdGhpcy5oYXMobm9kZS5yYXdzLmlubGluZVJpZ2h0KSApIHtcbiAgICAgICAgICAgICAgICByaWdodCA9IG5vZGUucmF3cy5pbmxpbmVSaWdodDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICggbm9kZS5yYXdzLmV4dHJhSW5kZW50ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlcihub2RlLnJhd3MuZXh0cmFJbmRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5idWlsZGVyKCcvLycgKyBsZWZ0ICsgbm9kZS50ZXh0ICsgcmlnaHQsIG5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MucmlnaHQpICkgcmlnaHQgPSBub2RlLnJhd3MucmlnaHQ7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXIoJy8qJyArIGxlZnQgKyBub2RlLnRleHQgKyByaWdodCArICcqLycsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVjbChub2RlKSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gbm9kZS5yYXdzLmJldHdlZW4gfHwgZGVmYXVsdFJhdy5jb2xvbjtcbiAgICAgICAgbGV0IHN0cmluZyAgPSBub2RlLnByb3AgKyBiZXR3ZWVuICsgdGhpcy5yYXdWYWx1ZShub2RlLCAndmFsdWUnKTtcblxuICAgICAgICBpZiAoIG5vZGUuaW1wb3J0YW50ICkge1xuICAgICAgICAgICAgc3RyaW5nICs9IG5vZGUucmF3cy5pbXBvcnRhbnQgfHwgJyAhaW1wb3J0YW50JztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRlcihzdHJpbmcsIG5vZGUpO1xuICAgIH1cblxuICAgIHJ1bGUobm9kZSkge1xuICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIHRoaXMucmF3VmFsdWUobm9kZSwgJ3NlbGVjdG9yJykpO1xuICAgIH1cblxuICAgIGF0cnVsZShub2RlKSB7XG4gICAgICAgIGxldCBuYW1lICAgPSAnQCcgKyBub2RlLm5hbWU7XG4gICAgICAgIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IHRoaXMucmF3VmFsdWUobm9kZSwgJ3BhcmFtcycpIDogJyc7XG5cbiAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MuYWZ0ZXJOYW1lKSApIHtcbiAgICAgICAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICggcGFyYW1zICkge1xuICAgICAgICAgICAgbmFtZSArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpO1xuICAgIH1cblxuICAgIGJvZHkobm9kZSkge1xuICAgICAgICBsZXQgaW5kZW50ID0gbm9kZS5yb290KCkucmF3cy5pbmRlbnQgfHwgZGVmYXVsdFJhdy5pbmRlbnQ7XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCAgPSBub2RlLm5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IGNoaWxkLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxuXSokLywgJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudChub2RlLCBpbmRlbnQpO1xuICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAnY29tbWVudCcgJiZcbiAgICAgICAgICAgICAgICAgY2hpbGQucmF3cy5iZWZvcmUuaW5kZXhPZignXFxuJykgPT09IC0xICkge1xuICAgICAgICAgICAgICAgIGJlZm9yZSA9IGNoaWxkLnJhd3MuYmVmb3JlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCBiZWZvcmUgKSB0aGlzLmJ1aWxkZXIoYmVmb3JlKTtcbiAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKG5vZGUsIHN0YXJ0KSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gbm9kZS5yYXdzLnNzc0JldHdlZW4gfHwgJyc7XG4gICAgICAgIHRoaXMuYnVpbGRlcihzdGFydCArIGJldHdlZW4sIG5vZGUsICdzdGFydCcpO1xuICAgICAgICBpZiAoIHRoaXMuaGFzKG5vZGUubm9kZXMpICkgdGhpcy5ib2R5KG5vZGUpO1xuICAgIH1cblxuICAgIGluZGVudChub2RlLCBzdGVwKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgd2hpbGUgKCBub2RlLnBhcmVudCApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBzdGVwO1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaGFzKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnO1xuICAgIH1cblxuICAgIHJhd1ZhbHVlKG5vZGUsIHByb3ApIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVtwcm9wXTtcbiAgICAgICAgbGV0IHJhdyAgID0gbm9kZS5yYXdzW3Byb3BdO1xuICAgICAgICBpZiAoIHJhdyAmJiByYXcudmFsdWUgPT09IHZhbHVlICkge1xuICAgICAgICAgICAgcmV0dXJuIHJhdy5zc3MgfHwgcmF3LnJhdztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19