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
#conditional_send, #current_indent, #empty_line, #indent, #js_falsy, #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.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'opal/lib/opal/nodes/if.rb', line 70 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
64 65 66 |
# File 'opal/lib/opal/nodes/if.rb', line 64 def excl "" end |