From db9920e3ca101a0b01ed87f30a8677b04dcede35 Mon Sep 17 00:00:00 2001 From: David Majda Date: Thu, 14 Jul 2016 15:08:14 +0200 Subject: [PATCH] peg.generate: Implement { format: "global" } --- README.md | 7 ++++--- lib/compiler/passes/generate-js.js | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 08e80fd..51e0304 100644 --- a/README.md +++ b/README.md @@ -144,9 +144,10 @@ object to `peg.generate`. The following options are supported: `"umd"` (default: `{}`) * `exportVar` — name of a global variable into which the parser object is assigned to when no module loader is detected; valid only when `format` is - set to `"umd"` (default: `null`) - * `format` — format of the genreated parser (`"amd"`, `"bare"`, `"node"`, or - `"umd"`); valid only when `output` is set to `"source"` (default: `"bare"`) + set to `"global"` or `"umd"` (default: `null`) + * `format` — format of the genreated parser (`"amd"`, `"bare"`, `"global"`, + `"node"`, or `"umd"`); valid only when `output` is set to `"source"` + (default: `"bare"`) * `optimize`— selects between optimizing the generated parser for parsing speed (`"speed"`) or code size (`"size"`) (default: `"speed"`) * `output` — if set to `"parser"`, the method will return generated parser diff --git a/lib/compiler/passes/generate-js.js b/lib/compiler/passes/generate-js.js index de35a34..3afb1f5 100644 --- a/lib/compiler/passes/generate-js.js +++ b/lib/compiler/passes/generate-js.js @@ -1326,6 +1326,20 @@ function generateJS(ast, options) { ].join('\n'); }, + global: function() { + return [ + generateGeneratedByComment(), + '(function(root) {', + ' "use strict";', + '', + indent2(toplevelCode), + '', + indent2('root.' + options.exportVar + ' = ' + generateParserObject() + ';'), + '})(this);', + '' + ].join('\n'); + }, + umd: function() { var parts = [], dependencyIds = objects.values(options.dependencies),