@@ -4,6 +4,7 @@ defmodule ElixirScript.ModuleSystems.Namespace do
44 alias ElixirScript.Translator
55 alias ElixirScript.Translator.State
66 alias ElixirScript.Translator.Utils
7+ alias ElixirScript.Translator.Identifier
78
89 def build ( module_name , imports , body , exports , env ) do
910 module_imports = imports
@@ -21,55 +22,40 @@ defmodule ElixirScript.ModuleSystems.Namespace do
2122 List . wrap ( make_namespace_body ( module_name , module_imports , body , exports ) )
2223 end
2324
25+ defp module_name_function_call ( module_name , function ) do
26+ members = [ "Elixir" ] ++ Module . split ( module_name ) ++ [ function ]
27+ Identifier . make_namespace_members ( members )
28+ end
29+
2430 def import_module ( module_name ) do
2531 name = [ "Elixir" | Module . split ( module_name ) ] |> Enum . join ( "$" )
2632
2733 declarator = JS . variable_declarator (
2834 JS . identifier ( name ) ,
2935 JS . call_expression (
30- JS . member_expression (
31- JS . call_expression (
32- JS . member_expression (
33- JS . identifier ( "Bootstrap" ) ,
34- JS . member_expression (
35- JS . identifier ( :Core ) ,
36- JS . member_expression (
37- JS . identifier ( :Functions ) ,
38- JS . identifier ( :build_namespace )
39- )
40- )
41- ) ,
42- [ JS . identifier ( "Elixir" ) , JS . literal ( Utils . name_to_js_file_name ( module_name ) ) ]
43- ) ,
44- JS . identifier ( "__load" )
45- ) ,
36+ module_name_function_call ( module_name , "__load" ) ,
4637 [ JS . identifier ( "Elixir" ) ]
4738 )
4839 )
4940
5041 JS . variable_declaration ( [ declarator ] , :const )
5142 end
5243
44+ defp build_namespace ( ) do
45+ JS . member_expression (
46+ JS . identifier ( "Bootstrap" ) ,
47+ JS . member_expression (
48+ JS . identifier ( :Core ) ,
49+ JS . member_expression (
50+ JS . identifier ( :Functions ) ,
51+ JS . identifier ( :build_namespace )
52+ )
53+ )
54+ )
55+ end
56+
5357 defp make_namespace_body ( module_name , imports , body , exports ) do
54- _self =
55- JS . call_expression (
56- JS . member_expression (
57- JS . identifier ( "Bootstrap" ) ,
58- JS . member_expression (
59- JS . identifier ( :Core ) ,
60- JS . member_expression (
61- JS . identifier ( :Functions ) ,
62- JS . identifier ( :build_namespace )
63- )
64- )
65- ) ,
66- [ JS . identifier ( "Elixir" ) , JS . literal ( Utils . name_to_js_file_name ( module_name ) ) ]
67- )
68-
69- values = JS . member_expression (
70- _self ,
71- JS . identifier ( "__exports" )
72- )
58+ values = module_name_function_call ( module_name , "__exports" )
7359
7460 _if = JS . if_statement (
7561 values ,
@@ -99,19 +85,10 @@ defmodule ElixirScript.ModuleSystems.Namespace do
9985
10086 make = JS . member_expression (
10187 JS . call_expression (
102- JS . member_expression (
103- JS . identifier ( "Bootstrap" ) ,
104- JS . member_expression (
105- JS . identifier ( :Core ) ,
106- JS . member_expression (
107- JS . identifier ( :Functions ) ,
108- JS . identifier ( :build_namespace )
109- )
110- )
111- ) ,
112- [ JS . identifier ( "Elixir" ) , JS . literal ( Utils . name_to_js_file_name ( module_name ) ) ]
113- ) ,
114- JS . identifier ( "__load" )
88+ build_namespace ( ) ,
89+ [ JS . identifier ( "Elixir" ) , JS . literal ( Utils . name_to_js_file_name ( module_name ) ) ]
90+ ) ,
91+ JS . identifier ( "__load" )
11592 )
11693
11794 func_body = JS . block_statement ( [ _if ] ++ body ++ [ declaration , assign ] ++ imports ++ exports )
0 commit comments