This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.5 KiB
58 lines
1.5 KiB
"use strict"; |
|
|
|
var arrays = require("./utils/arrays"), |
|
objects = require("./utils/objects"); |
|
|
|
var peg = { |
|
/* PEG.js version (uses semantic versioning). */ |
|
VERSION: "0.10.0", |
|
|
|
GrammarError: require("./grammar-error"), |
|
parser: require("./parser"), |
|
compiler: require("./compiler"), |
|
|
|
/* |
|
* Generates a parser from a specified grammar and returns it. |
|
* |
|
* The grammar must be a string in the format described by the metagramar in |
|
* the parser.pegjs file. |
|
* |
|
* Throws |peg.parser.SyntaxError| if the grammar contains a syntax error or |
|
* |peg.GrammarError| if it contains a semantic error. Note that not all |
|
* errors are detected during the generation and some may protrude to the |
|
* generated parser and cause its malfunction. |
|
*/ |
|
generate: function(grammar, options) { |
|
options = options !== void 0 ? options : {}; |
|
|
|
function convertPasses(passes) { |
|
var converted = {}, stage; |
|
|
|
for (stage in passes) { |
|
if (passes.hasOwnProperty(stage)) { |
|
converted[stage] = objects.values(passes[stage]); |
|
} |
|
} |
|
|
|
return converted; |
|
} |
|
|
|
options = objects.clone(options); |
|
|
|
var plugins = "plugins" in options ? options.plugins : [], |
|
config = { |
|
parser: peg.parser, |
|
passes: convertPasses(peg.compiler.passes) |
|
}; |
|
|
|
arrays.each(plugins, function(p) { p.use(config, options); }); |
|
|
|
return peg.compiler.compile( |
|
config.parser.parse(grammar), |
|
config.passes, |
|
options |
|
); |
|
} |
|
}; |
|
|
|
module.exports = peg;
|
|
|