With the help of this sample, you can check if Gonzales is installed correctly and if its (three) functions are working properly.
It is assumed that in the production code you will change AST in a more intelligent way.
Sample code:
var gonzales = require('gonzales-pe'),
src = 'a { color: red }',
ast = gonzales.cssToAST(src);
console.log('== CSS:');
console.log(src);
console.log('\n== CSS -> AST:');
console.log(gonzales.astToTree(ast));
ast[1][1][1][1][1] = 'b';
console.log('\n== AST\':');
console.log(gonzales.astToTree(ast));
console.log('\n== AST\' -> CSS:');
console.log(gonzales.astToCSS(ast));
Result:
== CSS:
a { color: red }
== CSS -> AST:
['stylesheet',
['ruleset',
['selector',
['simpleselector',
['ident', 'a'],
['s', ' ']]],
['block',
['s', ' '],
['declaration',
['property',
['ident', 'color']],
['propertyDelim'],
['value',
['s', ' '],
['ident', 'red'],
['s', ' ']]]]]]
== AST':
['stylesheet',
['ruleset',
['selector',
['simpleselector',
['ident', 'b'],
['s', ' ']]],
['block',
['s', ' '],
['declaration',
['property',
['ident', 'color']],
['propertyDelim'],
['value',
['s', ' '],
['ident', 'red'],
['s', ' ']]]]]]
== AST' -> CSS:
b { color: red }
In Node.js you can use Gonzales module this way:
gonzales = require('gonzales-pe');
You can use AST through the next functions.
It parses source style to AST:
gonzales.cssToAST({
css: css,
rule: rule,
needInfo: true,
syntax: 'scss'
});
where:
css
— a string with the CSS style;rule
— a string with the token type in case the style is not complete
('stylesheet'
is default);needInfo
— whether to include info object into AST (false
is default);syntax
— a string with syntax name (css
is default, other supported
syntaxes are: scss
, sass
and less
).Example 1: if you want to parse only declaration, you have to call:
gonzales.cssToAST({
css: 'color: red',
rule: 'declaration'
});
Example 2: in case the style is complete and you don't need an info object, the call is shortned to:
gonzales.cssToAST(css);
Example 3: if you want to parse a sass file:
gonzales.cssToAST({
css: css,
syntax: 'sass'
});
Translates AST to style:
gonzales.astToCSS({
ast: ast,
syntax: 'scss'
})
where:
ast
— AST to be translated;syntax
— a string with syntax name (css
is default).Translates AST to the string representation of the tree:
gonzales.astToTree(ast);
where:
ast
— AST to be translated.This function is useful for debugging or learning purposes.