@@ -52,26 +52,10 @@ defmodule ElixirScript do
5252 """
5353 @ spec javascript_ast_to_code ( ESTree.Node . t ) :: { :ok , binary } | { :error , binary }
5454 def javascript_ast_to_code ( js_ast ) do
55- js_ast = case js_ast do
56- modules when is_list ( modules ) ->
57- Enum . reduce ( modules , [ ] , fn ( x , list ) -> list ++ x . body end )
58- |> ESTree.Builder . program
59- % ElixirScript.Translator.Group { body: body } ->
60- ESTree.Builder . program ( body )
61- _ ->
62- js_ast
63- end
64-
65- js_ast = Poison . encode! ( js_ast )
66-
67- path = "#{ operating_path } /code_generator.js"
68-
69- case System . cmd ( "node" , [ path , js_ast ] ) do
70- { js_code , 0 } ->
71- { :ok , js_code }
72- { error , _ } ->
73- { :error , error }
74- end
55+ js_ast = prepare_js_ast ( js_ast )
56+ |> Poison . encode!
57+
58+ { :ok , ElixirScript.CodeGenerator . translate ( js_ast ) }
7559 end
7660
7761 @ doc """
@@ -87,6 +71,18 @@ defmodule ElixirScript do
8771 end
8872 end
8973
74+ defp prepare_js_ast ( js_ast ) do
75+ case js_ast do
76+ modules when is_list ( modules ) ->
77+ Enum . reduce ( modules , [ ] , fn ( x , list ) -> list ++ x . body end )
78+ |> ESTree.Builder . program
79+ % ElixirScript.Translator.Group { body: body } ->
80+ ESTree.Builder . program ( body )
81+ _ ->
82+ js_ast
83+ end
84+ end
85+
9086 @ doc """
9187 Writes output to file
9288 """
0 commit comments