| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- var sys = require('sys'),
- fs = require('fs'),
- ometa = require('ometa'),
- creatingParser = false;
- var fixReadFile = function(rawFile) {
- return rawFile.slice(1).replace(/\\n/g, '\n');
- };
- var createParser = function(parserInitializer) {
- if(!creatingParser) {
- creatingParser = true;
- //fs.readFile(__dirname + '/../src/cssSelector.ometa', 'utf8', function(err, contents) {
- fs.readFile(__dirname + '/../../ometa-js/newLineGrammar.ometa', 'utf8', function(err, contents) {
- if(err) {
- parserInitializer.setParser(err);
- } else {
- ometa.createParser(fixReadFile(contents), parserInitializer.setParser);
- }
- creatingParser = false;
- });
- }
- };
- var parserInitializer = (function() {
- var createdParser,
- parserErr,
- queuedCallbacks = [],
- that = {};
- that.setParser = function(err, parser) {
- parserErr = err;
- createdParser = parser;
- queuedCallbacks.forEach(function(callback) {
- callback(parserErr, createdParser);
- });
- queuedCallbacks = [];
- };
- that.addCallback = function(callback) {
- if(parserErr || createdParser) {
- callback(parserErr, createdParser);
- } else {
- queuedCallbacks.push(callback);
- createParser(that);
- }
- };
- that.reset = function() {
- createdParser = null;
- };
- return that;
- })();
- var parse = function(selector, callback) {
- parserInitializer.addCallback(function(err, parser) {
- if(err) {
- callback(err);
- } else {
- parser.parse(selector, 'selectors_group', function(err, css) {
- if(err) {
- callback(err);
- } else {
- //callback(null, css.toString());
- callback(null, css.join(''));
- }
- });
- }
- });
- };
- module.exports.parse = parse;
- module.exports.reset = parserInitializer.reset;
- var ssss = 'a,\nb';
- console.log(ssss);
- parse(ssss, function(err, shiznit) {
- if(err) {
- console.log(err);
- }
- console.log(shiznit);
- });
|