Files
anissah/user/themes/anissabensalah/node_modules/gonzales-pe/lib/parse.js
T
2018-05-28 13:26:25 +02:00

43 lines
1.1 KiB
JavaScript

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;