123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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;
|