@@ -4,45 +4,20 @@ defmodule ESTree.Tools.Generator do
44 it to JavaScript code
55 """
66
7- @ unary_operators [ :- , :+ , :! , :"~" , :typeof , :void , :delete ]
8-
9- @ binary_operators [ :== , :!= , :=== , :!== , :< , :<= , :> , :>= ,
10- :"<<" , :">>" , :>>> , :+ , :- , :* , :/ , :% , :| ,
11- :^ , :& , :in , :instanceof ]
12-
13- @ logical_operators [ :|| , :&& ]
14-
15- @ assignment_operators [ := , :"+=" , :"-=" , :"*=" , :"/=" ,
16- :"%=" , :"<<=" , :">>=" , :">>>=" ,
17- :"|=" , :"^=" , :"&=" ]
18-
19- @ update_operators [ :++ , :-- ]
7+ @ operators [
8+ :- , :+ , :! , :"~" , :typeof , :void , :delete ,
9+ :== , :!= , :=== , :!== , :< , :<= , :> , :>= ,
10+ :"<<" , :">>" , :>>> , :+ , :- , :* , :/ , :% , :| ,
11+ :^ , :& , :in , :instanceof , :|| , :&& , := , :"+=" ,
12+ :"-=" , :"*=" , :"/=" , :"%=" , :"<<=" , :">>=" ,
13+ :">>>=" , :"|=" , :"^=" , :"&=" , :++ , :--
14+ ]
2015
2116 @ indent " "
2217
23- @ spec generate ( ESTree . unary_operator | ESTree . binary_operator | ESTree . logical_operator | ESTree . assignment_operator | ESTree . update_operator | ESTree.Node . t ) :: binary
24- def generate ( unary_operator ) when unary_operator in @ unary_operators do
25- to_string ( unary_operator )
26- end
27-
28- def generate ( binary_operator ) when binary_operator in @ binary_operators do
29- to_string ( binary_operator )
30- end
31-
32- def generate ( logical_operator ) when logical_operator in @ logical_operators do
33- to_string ( logical_operator )
34- end
35-
36- def generate ( assignment_operator ) when assignment_operator in @ assignment_operators do
37- to_string ( assignment_operator )
38- end
39-
40- def generate ( update_operator ) when update_operator in @ update_operators do
41- to_string ( update_operator )
42- end
43-
44- def generate ( nil ) do
45- ""
18+ @ spec generate ( ESTree . operator | ESTree.Node . t ) :: binary
19+ def generate ( operator ) when operator in @ operators do
20+ to_string ( operator )
4621 end
4722
4823 def generate ( % ESTree.Identifier { name: name } ) do
@@ -85,11 +60,7 @@ defmodule ESTree.Tools.Generator do
8560 end
8661
8762 def generate ( % ESTree.FunctionDeclaration { } = ast ) do
88- generator = if ast . generator do
89- "*"
90- else
91- ""
92- end
63+ generator = if ast . generator , do: "*" , else: ""
9364
9465 params = params_and_defaults ( ast . params , ast . defaults )
9566 id = generate ( ast . id )
@@ -98,11 +69,7 @@ defmodule ESTree.Tools.Generator do
9869 end
9970
10071 def generate ( % ESTree.FunctionExpression { } = ast ) do
101- generator = if ast . generator do
102- "*"
103- else
104- ""
105- end
72+ generator = if ast . generator , do: "*" , else: ""
10673 params = params_and_defaults ( ast . params , ast . defaults )
10774
10875 "function#{ generator } (#{ params } )#{ generate ( ast . body ) } "
@@ -195,7 +162,7 @@ defmodule ESTree.Tools.Generator do
195162 def generate ( % ESTree.TryStatement { block: block , handler: handler , finalizer: finalizer } ) do
196163 "try#{ generate ( block ) } #{ generate ( handler ) } finally#{ generate ( finalizer ) } "
197164 end
198-
165+
199166 def generate ( % ESTree.WhileStatement { test: test , body: body } ) do
200167 "while(#{ generate ( test ) } ) #{ generate ( body ) } "
201168 end
@@ -252,15 +219,23 @@ defmodule ESTree.Tools.Generator do
252219 end
253220
254221 def generate ( % ESTree.ArrayExpression { elements: nil } ) do
255- ""
222+ "[] "
256223 end
257224
258225 def generate ( % ESTree.ArrayExpression { elements: elements } ) do
259- "[" <> Enum . map_join ( elements , "," , & generate ( & 1 ) ) <> "]"
226+ "[" <> Enum . map_join ( elements , ", " , & generate ( & 1 ) ) <> "]"
260227 end
261228
229+ def generate ( % ESTree.ObjectExpression { properties: nil } ) do
230+ "{}"
231+ end
232+
233+ def generate ( % ESTree.ObjectExpression { properties: [ ] } ) do
234+ "{}"
235+ end
236+
262237 def generate ( % ESTree.ObjectExpression { properties: properties } ) do
263- "{" <> Enum . map_join ( properties , "," , & generate ( & 1 ) ) <> "}"
238+ "{" <> Enum . map_join ( properties , ", " , & generate ( & 1 ) ) <> "}"
264239 end
265240
266241 def generate ( % ESTree.Property { key: key , value: value , kind: :init , shorthand: false , method: false , computed: false } ) do
@@ -596,7 +571,7 @@ defmodule ESTree.Tools.Generator do
596571 "import #{ specifiers } from #{ source } ;"
597572 end
598573
599- def generate ( % ESTree.ImportDeclaration { specifiers: specifiers , source: source } = ast ) do
574+ def generate ( % ESTree.ImportDeclaration { specifiers: specifiers , source: source } ) do
600575 specifiers = Enum . map_join ( specifiers , "," , & generate ( & 1 ) )
601576 source = generate ( source )
602577
0 commit comments