51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
var Stringifier = require('postcss/lib/stringifier');
|
|
|
|
var SassStringifier = function (builder) {
|
|
Stringifier.call(this, builder);
|
|
};
|
|
|
|
const DEFAULT_RAW = {
|
|
colon: ': ',
|
|
commentLeft: ' ',
|
|
commentRight: ' '
|
|
};
|
|
|
|
SassStringifier.prototype = Object.create(Stringifier.prototype);
|
|
SassStringifier.prototype.constructor = Stringifier;
|
|
|
|
SassStringifier.prototype.has = function has(value) {
|
|
return typeof value !== 'undefined';
|
|
};
|
|
|
|
SassStringifier.prototype.block = function (node, start) {
|
|
var between = node.raws.sssBetween || '';
|
|
this.builder(start + between, node, 'start');
|
|
if (this.has(node.nodes)) {
|
|
this.body(node);
|
|
}
|
|
};
|
|
|
|
SassStringifier.prototype.decl = function (node) {
|
|
var between = node.raws.between || DEFAULT_RAW.colon;
|
|
var string = node.prop + between + this.rawValue(node, 'value');
|
|
if (node.important) {
|
|
string += '!important';
|
|
}
|
|
this.builder(string, node);
|
|
};
|
|
|
|
SassStringifier.prototype.comment = function (node) {
|
|
var left = this.has(node.raws.left) ?
|
|
node.raws.left : DEFAULT_RAW.commentLeft;
|
|
var right = this.has(node.raws.right) ?
|
|
node.raws.right : DEFAULT_RAW.commentRight;
|
|
|
|
if (node.raws.commentType === 'single') {
|
|
this.builder('//' + left + node.text + right, node);
|
|
} else if (node.raws.commentType === 'multi') {
|
|
this.builder('/*' + left + node.text + right + '*/', node);
|
|
}
|
|
};
|
|
|
|
|
|
module.exports = SassStringifier;
|