[フレーム]

Class: Opal::Nodes::ModuleNode

Inherits:
ScopeNode show all
Defined in:
opal/lib/opal/nodes/module.rb

Direct Known Subclasses

ClassNode

Instance Attribute Summary

Attributes inherited from ScopeNode

#await_encountered , #block_name , #catch_return , #defs , #gvars , #has_break , #has_retry , #identity , #ivars , #locals , #methods , #mid , #name , #parent , #rescue_else_sexp , #scope_name

Attributes inherited from Base

#compiler , #sexp , #type

Attributes included from Closure::NodeSupport

#closure

Instance Method Summary collapse

Methods inherited from ScopeNode

#accepts_using? , #add_arg , #add_proto_ivar , #add_scope_gvar , #add_scope_ivar , #add_scope_local , #add_scope_temp , #class? , #class_scope? , #collect_refinements_temps , #current_rescue , #def? , #def_in_class? , #defines_lambda , #find_parent_def , #gen_retry_id , #has_local? , #has_rescue_else? , #has_temp? , #identify! , #in_ensure , #in_ensure? , #in_resbody , #in_resbody? , #in_rescue , #in_scope , #in_while? , #initialize , #is_lambda! , #iter? , #lambda? , #lambda_definition? , #module? , #nesting , #new_refinements_temp , #new_temp , #next_temp , #pop_while , #prepare_block , #prepend_scope_temp , #push_while , #queue_temp , #refinements_temp , #relative_access , #sclass? , #scope_locals , #self , #super_chain , #to_vars , #top? , #uses_block! , #uses_block?

Methods inherited from Base

#add_gvar , #add_ivar , #add_local , #add_temp , #children , children , #class_variable_owner , #class_variable_owner_nesting_level , #comments , #compile_to_fragments , #error , #expr , #expr? , #expr_or_empty , #expr_or_nil , #fragment , handle , handlers , #has_rescue_else? , #helper , #in_ensure , #in_ensure? , #in_resbody , #in_resbody? , #in_rescue , #in_while? , #initialize , #process , #push , #recv , #recv? , #s , #scope , #source_location , #stmt , #stmt? , #top_scope , truthy_optimize? , #unshift , #while_loop , #with_temp , #wrap

Methods included from Closure::NodeSupport

#closure_is? , #compile_catcher , #generate_thrower , #generate_thrower_without_catcher , #in_closure , #pop_closure , #push_closure , #select_closure , #thrower

Methods included from Helpers

#current_indent , #empty_line , #indent , #js_truthy , #js_truthy_optimize , #line , #mid_to_jsid , #property , #valid_name?

Constructor Details

This class inherits a constructor from Opal::Nodes::ScopeNode

Instance Method Details

#compileObject

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'opal/lib/opal/nodes/module.rb', line 12
def compile
 name, base = name_and_base
 helper :module
 if body.nil?
 # Simplified compile for empty body
 if stmt?
 unshift '$module(', base, ", '#{name}')"
 else
 unshift '($module(', base, ", '#{name}'), nil)"
 end
 else
 line " var self = $module($base, '#{name}');"
 in_scope do
 scope.name = name
 in_closure(Closure ::MODULE | Closure ::JS_FUNCTION) do
 compile_body
 end
 end
 if await_encountered
 await_begin = '(await '
 await_end = ')'
 async = 'async '
 parent.await_encountered = true
 else
 await_begin, await_end, async = '', '', ''
 end
 unshift "#{await_begin}(#{async}function($base#{', $parent_nesting' if @define_nesting}) {"
 line '})(', base, "#{', ' + scope.nesting if @define_nesting})#{await_end}"
 end
end

AltStyle によって変換されたページ (->オリジナル) /