Class: Opal::Nodes::IFlipFlop
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#compile ⇒ Object
We create a function that we put in the top scope, that stores the state of our flip-flop.
-
#excl ⇒ Object
Is this an exclusive flip flop? If no, run both branches.
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_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 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::Base
Instance Method Details
#compile ⇒ Object
We create a function that we put in the top scope, that stores the state of our flip-flop. We pass to it functions that are ran with the current binding.
397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 |
# File 'opal/lib/opal/nodes/if.rb', line 397 def compile helper :truthy fun_name = top_scope.new_temp ff = "#{fun_name}.$$ff" push "(typeof #{fun_name} === 'undefined' ? (#{fun_name} = function(from, to){" push " if (typeof #{ff} === 'undefined') #{ff} = false;" push " var retval = #{ff};" push " if (!#{ff}) {" push " #{ff} = retval = $truthy(from());" push " }" push " #{excl}if (#{ff}) {" push " if ($truthy(to())) #{ff} = false;" push " }" push " return retval;" push "}) : #{fun_name})(" push " function() { ", stmt(compiler.returns(from)), " }," push " function() { ", stmt(compiler.returns(to)), " }" push ")" end |
#excl ⇒ Object
Is this an exclusive flip flop? If no, run both branches
391 392 393 |
# File 'opal/lib/opal/nodes/if.rb', line 391 def excl "" end |