@@ -17,7 +17,7 @@ defmodule ESTree.Tools.Generator do
1717
1818 @ spec generate ( ESTree . operator | ESTree.Node . t , integer ) :: binary
1919 def generate ( value , level \\ nil ) do
20- "#{ indent ( level ) } #{ do_generate ( value , calculate_next_level ( level ) ) } "
20+ "#{ do_generate ( value , calculate_next_level ( level ) ) } "
2121 end
2222
2323 def do_generate ( nil , level ) do
@@ -232,7 +232,10 @@ defmodule ESTree.Tools.Generator do
232232 end
233233
234234 def do_generate ( % ESTree.ObjectExpression { properties: properties } , level ) do
235- "{#{ newline ( level ) } #{ indent ( calculate_next_level ( level ) ) } " <> Enum . map_join ( properties , ", " , & generate ( & 1 , calculate_next_level ( level ) ) ) <> "#{ newline ( level ) } #{ indent ( level ) } }"
235+ next_level = calculate_next_level ( level )
236+ previous_level = calculate_previous_level ( level )
237+ key_value_separator = ",#{ newline ( level ) } #{ indent ( level ) } "
238+ "{#{ newline ( level ) } #{ indent ( level ) } " <> Enum . map_join ( properties , key_value_separator , & generate ( & 1 ) ) <> "#{ newline ( level ) } #{ indent ( previous_level ) } }"
236239 end
237240
238241 def do_generate ( % ESTree.Property { key: key , value: value , kind: :init , shorthand: false , method: false , computed: false } , level ) do
@@ -360,8 +363,8 @@ defmodule ESTree.Tools.Generator do
360363 end
361364
362365 def do_generate ( % ESTree.CallExpression { callee: % ESTree.MemberExpression { object: % ESTree.FunctionExpression { } } = callee , arguments: arguments } , level ) do
363- callee = generate ( callee )
364- arguments = Enum . map_join ( arguments , "," , & generate ( & 1 ) )
366+ callee = generate ( callee , level )
367+ arguments = Enum . map_join ( arguments , "," , & generate ( & 1 , level ) )
365368
366369 "(#{ callee } (#{ arguments } ))"
367370 end
@@ -374,7 +377,7 @@ defmodule ESTree.Tools.Generator do
374377
375378 def do_generate ( % ESTree.CallExpression { callee: callee , arguments: arguments } , level ) do
376379 callee = generate ( callee )
377- arguments = Enum . map_join ( arguments , "," , & generate ( & 1 ) )
380+ arguments = Enum . map_join ( arguments , "," , & generate ( & 1 , calculate_previous_level ( level ) ) )
378381
379382 "#{ callee } (#{ arguments } )"
380383 end
@@ -785,6 +788,14 @@ defmodule ESTree.Tools.Generator do
785788 level + 1
786789 end
787790
791+ defp calculate_previous_level ( nil ) do
792+ nil
793+ end
794+
795+ defp calculate_previous_level ( level ) do
796+ level - 1
797+ end
798+
788799 defp newline ( nil ) do
789800 ""
790801 end
0 commit comments