peg.generate: Implement { format: "amd" }

redux
David Majda 8 years ago
parent f633f697c9
commit 61c11ee1b4

@ -140,13 +140,13 @@ object to `peg.generate`. The following options are supported:
`false`) `false`)
* `dependencies` — parser dependencies, the value is an object which maps * `dependencies` — parser dependencies, the value is an object which maps
variables used to access the dependencies in the parser to module IDs used variables used to access the dependencies in the parser to module IDs used
to load them; valid only when `format` is set to `"node"` or `"umd"` to load them; valid only when `format` is set to `"amd"`, `"node"`, or
(default: `{}`) `"umd"` (default: `{}`)
* `exportVar` — name of a global variable into which the parser object is * `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 assigned to when no module loader is detected; valid only when `format` is
set to `"umd"` (default: `null`) set to `"umd"` (default: `null`)
* `format` — format of the genreated parser (`"bare"`, `"node"`, or `"umd"`); * `format` — format of the genreated parser (`"amd"`, `"bare"`, `"node"`, or
valid only when `output` is set to `"source"` (default: `"bare"`) `"umd"`); valid only when `output` is set to `"source"` (default: `"bare"`)
* `optimize`— selects between optimizing the generated parser for parsing * `optimize`— selects between optimizing the generated parser for parsing
speed (`"speed"`) or code size (`"size"`) (default: `"speed"`) speed (`"speed"`) or code size (`"size"`) (default: `"speed"`)
* `output` — if set to `"parser"`, the method will return generated parser * `output` — if set to `"parser"`, the method will return generated parser

@ -1302,6 +1302,30 @@ function generateJS(ast, options) {
return parts.join('\n'); return parts.join('\n');
}, },
amd: function() {
var dependencyIds = objects.values(options.dependencies),
dependencyVars = objects.keys(options.dependencies),
dependencies = '['
+ arrays.map(
dependencyIds,
function(id) { return '"' + js.stringEscape(id) + '"'; }
).join(', ')
+ ']',
params = dependencyVars.join(', ');
return [
generateGeneratedByComment(),
'define(' + dependencies + ', function(' + params + ') {',
' "use strict";',
'',
indent2(toplevelCode),
'',
indent2('return ' + generateParserObject() + ';'),
'});',
''
].join('\n');
},
umd: function() { umd: function() {
var parts = [], var parts = [],
dependencyIds = objects.values(options.dependencies), dependencyIds = objects.values(options.dependencies),

Loading…
Cancel
Save