first commit
This commit is contained in:
87
build/node_modules/postcss-csso/lib/postcssToCsso.js
generated
vendored
Normal file
87
build/node_modules/postcss-csso/lib/postcssToCsso.js
generated
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
var parse = require('csso').syntax.parse;
|
||||
|
||||
function getInfo(postcssNode) {
|
||||
return {
|
||||
postcssNode: postcssNode
|
||||
};
|
||||
}
|
||||
|
||||
function appendChildren(cssoNode, nodes) {
|
||||
cssoNode.children.fromArray(nodes.map(postcssToCsso));
|
||||
return cssoNode;
|
||||
}
|
||||
|
||||
function parseToCsso(css, config, postcssNode) {
|
||||
var cssoNode;
|
||||
|
||||
try {
|
||||
cssoNode = parse(css || '', config);
|
||||
} catch (e) {
|
||||
if (e.name === 'CssSyntaxError') {
|
||||
throw postcssNode.error(e.message, { index: e.offset });
|
||||
}
|
||||
|
||||
throw e;
|
||||
}
|
||||
|
||||
cssoNode.loc = getInfo(postcssNode);
|
||||
|
||||
return cssoNode;
|
||||
}
|
||||
|
||||
function postcssToCsso(node) {
|
||||
switch (node.type) {
|
||||
case 'root':
|
||||
return appendChildren(
|
||||
parseToCsso('', { context: 'stylesheet' }, node),
|
||||
node.nodes
|
||||
);
|
||||
|
||||
case 'rule':
|
||||
return {
|
||||
type: 'Rule',
|
||||
loc: getInfo(node),
|
||||
prelude: parseToCsso(node.selector, { context: 'selectorList' }, node),
|
||||
block: appendChildren(
|
||||
parseToCsso('{}', { context: 'block' }, node),
|
||||
node.nodes
|
||||
)
|
||||
};
|
||||
|
||||
case 'atrule':
|
||||
var cssoNode = {
|
||||
type: 'Atrule',
|
||||
loc: getInfo(node),
|
||||
name: node.name,
|
||||
prelude: node.params
|
||||
? parseToCsso(node.params, { context: 'atrulePrelude', atrule: node.name }, node)
|
||||
: null,
|
||||
block: null
|
||||
};
|
||||
|
||||
if (node.nodes) {
|
||||
cssoNode.block = appendChildren(
|
||||
parseToCsso('{}', { context: 'block' }, node),
|
||||
node.nodes
|
||||
);
|
||||
}
|
||||
|
||||
return cssoNode;
|
||||
|
||||
case 'decl':
|
||||
return parseToCsso(
|
||||
(node.raws.before || '').trimLeft() + node.toString(),
|
||||
{ context: 'declaration' },
|
||||
node
|
||||
);
|
||||
|
||||
case 'comment':
|
||||
return {
|
||||
type: 'Comment',
|
||||
loc: getInfo(node),
|
||||
value: node.raws.left + node.text + node.raws.right
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = postcssToCsso;
|
||||
Reference in New Issue
Block a user