install gulp
This commit is contained in:
+42
@@ -0,0 +1,42 @@
|
||||
var fs = require('fs');
|
||||
var ParsingError = require('./parsing-error');
|
||||
|
||||
var Defaults = {
|
||||
SYNTAX: 'css',
|
||||
NEED_INFO: false,
|
||||
CSS_RULE: 'stylesheet',
|
||||
JS_RULE: 'program'
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} css
|
||||
* @param {Object} options
|
||||
* @return {Object} AST
|
||||
*/
|
||||
function parse(css, options) {
|
||||
if (!css || typeof css !== 'string')
|
||||
throw new Error('Please, pass a string to parse');
|
||||
|
||||
var syntax = options && options.syntax || Defaults.SYNTAX;
|
||||
var needInfo = options && options.needInfo || Defaults.NEED_INFO;
|
||||
var rule = options && options.rule ||
|
||||
(syntax === 'js' ? Defaults.JS_RULE : Defaults.CSS_RULE);
|
||||
|
||||
if (!fs.existsSync(__dirname + '/' + syntax))
|
||||
return console.error('Syntax "' + syntax + '" is not supported yet, sorry');
|
||||
|
||||
var getTokens = require('./' + syntax + '/tokenizer');
|
||||
var mark = require('./' + syntax + '/mark');
|
||||
var parse = require('./' + syntax + '/parse');
|
||||
|
||||
var tokens = getTokens(css);
|
||||
mark(tokens);
|
||||
|
||||
try {
|
||||
return parse(tokens, rule, needInfo);
|
||||
} catch (e) {
|
||||
throw new ParsingError(e, css);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = parse;
|
||||
Reference in New Issue
Block a user