UNPKG

1.83 kBJavaScriptView Raw
1/*
2** pegjs-otf -- On-The-Fly Compilation for PEG.js
3** Copyright (c) 2014-2017 Ralf S. Engelschall <rse@engelschall.com>
4**
5** Permission is hereby granted, free of charge, to any person obtaining
6** a copy of this software and associated documentation files (the
7** "Software"), to deal in the Software without restriction, including
8** without limitation the rights to use, copy, modify, merge, publish,
9** distribute, sublicense, and/or sell copies of the Software, and to
10** permit persons to whom the Software is furnished to do so, subject to
11** the following conditions:
12**
13** The above copyright notice and this permission notice shall be included
14** in all copies or substantial portions of the Software.
15**
16** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23*/
24
25/* global module: false */
26/* global require: false */
27
28/* built-in requirements */
29var fs = require("fs");
30
31/* external requirements */
32var _ = require("lodash");
33var pegjs = require("pegjs");
34
35/* provide a minimum wrapper class around PEG.js API */
36module.exports = _.extend({
37 /* provide an additional method which is like "generate",
38 but gets a grammar filename instead of the grammar text */
39 generateFromFile: function (filename, options) {
40 var source = fs.readFileSync(filename, { encoding: "utf8" });
41 return pegjs.generate(source, options);
42 }
43}, pegjs);
44