Browse Source

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

redux
David Majda 5 years ago
parent
commit
61c11ee1b4
  1. 8
      README.md
  2. 24
      lib/compiler/passes/generate-js.js

8
README.md

@ -140,13 +140,13 @@ object to `peg.generate`. The following options are supported:
`false`)
* `dependencies` — parser dependencies, the value is an object which maps
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"`
(default: `{}`)
to load them; valid only when `format` is set to `"amd"`, `"node"`, or
`"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 (`"bare"`, `"node"`, or `"umd"`);
valid only when `output` is set to `"source"` (default: `"bare"`)
* `format` — format of the genreated parser (`"amd"`, `"bare"`, `"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

24
lib/compiler/passes/generate-js.js

@ -1302,6 +1302,30 @@ function generateJS(ast, options) {
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() {
var parts = [],
dependencyIds = objects.values(options.dependencies),

Loading…
Cancel
Save