Archived
lastest
This commit is contained in:
1 parent
620fc5bda1
commit
bd3ef9f279
779 files changed
+202868
No files matched your search
+83
@@ -0,0 +1,83 @@
|
||||
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);
|
||||
});
|
||||
Reference in new issue
Block a user