Allow to output either raw or transformed AST, fix several transformation bugs with...
[jst.git] / jst.js
diff --git a/jst.js b/jst.js
index da88339..6baa7c2 100644 (file)
--- a/jst.js
+++ b/jst.js
@@ -39,22 +39,26 @@ let jst = (text, options) => {
     },
     options || {}
   )
-  let ast = transform.transform(
-    visitors,
-    acorn.parse(
-      text,
-      {
-        allowReturnOutsideFunction: options.bare_returns,
-        ecmaVersion: options.ecma_version
-      }
-    )
+
+  let ast0 = acorn.parse(
+    text,
+    {
+      allowReturnOutsideFunction: options.bare_returns,
+      ecmaVersion: options.ecma_version
+    }
   )
-  if (options.output === 'ast')
-    return JSON.stringify(ast, null, options.ast_options.indent)
+  if (options.output === 'ast0')
+    return JSON.stringify(ast0, null, options.ast_options.indent)
+
+  let ast1 = transform.transform(visitors, ast0)
+  if (options.output === 'ast1')
+    return JSON.stringify(ast1, null, options.ast_options.indent)
+
   if (options.output === 'astring')
-    return astring.generate(ast, options.astring_options)
+    return astring.generate(ast1, options.astring_options)
+
   let render = uglify_js.minify(
-    uglify_js.AST_Node.from_mozilla_ast(ast),
+    uglify_js.AST_Node.from_mozilla_ast(ast1),
     options.uglify_options
   )
   if (render.error)