| let Stringifier = require('postcss/lib/stringifier') |
| |
| class ScssStringifier extends Stringifier { |
| comment (node) { |
| let left = this.raw(node, 'left', 'commentLeft') |
| let right = this.raw(node, 'right', 'commentRight') |
| |
| if (node.raws.inline) { |
| let text = node.raws.text || node.text |
| this.builder('//' + left + text + right, node) |
| } else { |
| this.builder('/*' + left + node.text + right + '*/', node) |
| } |
| } |
| |
| decl (node, semicolon) { |
| if (!node.isNested) { |
| super.decl(node, semicolon) |
| } else { |
| let between = this.raw(node, 'between', 'colon') |
| let string = node.prop + between + this.rawValue(node, 'value') |
| if (node.important) { |
| string += node.raws.important || ' !important' |
| } |
| |
| this.builder(string + '{', node, 'start') |
| |
| let after |
| if (node.nodes && node.nodes.length) { |
| this.body(node) |
| after = this.raw(node, 'after') |
| } else { |
| after = this.raw(node, 'after', 'emptyBody') |
| } |
| if (after) this.builder(after) |
| this.builder('}', node, 'end') |
| } |
| } |
| |
| rawValue (node, prop) { |
| let value = node[prop] |
| let raw = node.raws[prop] |
| if (raw && raw.value === value) { |
| return raw.scss ? raw.scss : raw.raw |
| } else { |
| return value |
| } |
| } |
| } |
| |
| module.exports = ScssStringifier |