From 478bf4dbdde27f1110e36a56a2f9be6c11847b68 Mon Sep 17 00:00:00 2001 From: Jake Harding Date: Thu, 28 Feb 2013 21:21:14 -0800 Subject: Add support for enclose option. Closes #139. --- lib/ast.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'lib') diff --git a/lib/ast.js b/lib/ast.js index 62bdd8db..a1301da8 100644 --- a/lib/ast.js +++ b/lib/ast.js @@ -285,6 +285,27 @@ var AST_Toplevel = DEFNODE("Toplevel", "globals", { $propdoc: { globals: "[Object/S] a map of name -> SymbolDef for all undeclared names", }, + wrap_enclose: function(arg_parameter_pairs) { + var self = this; + var args = []; + var parameters = []; + + arg_parameter_pairs.forEach(function(pair) { + var split = pair.split(":"); + + args.push(split[0]); + parameters.push(split[1]); + }); + + var wrapped_tl = "(function(" + parameters.join(",") + "){ '$ORIG'; })(" + args.join(",") + ")"; + wrapped_tl = parse(wrapped_tl); + wrapped_tl = wrapped_tl.transform(new TreeTransformer(function before(node){ + if (node instanceof AST_Directive && node.value == "$ORIG") { + return MAP.splice(self.body); + } + })); + return wrapped_tl; + }, wrap_commonjs: function(name, export_all) { var self = this; var to_export = []; -- cgit v1.2.3