Class: Red::ConditionalNode::IfNode
- Inherits:
-
Object
- Object
- Red::ConditionalNode::IfNode
- Defined in:
- lib/red/conditional_nodes.rb
Overview
:nodoc:
Instance Method Summary collapse
- #compile_internals(options = {}) ⇒ Object
- #compile_node(options = {}) ⇒ Object
-
#initialize(condition, true_case, else_case) ⇒ IfNode
constructor
A new instance of IfNode.
Constructor Details
#initialize(condition, true_case, else_case) ⇒ IfNode
Returns a new instance of IfNode.
4 5 6 |
# File 'lib/red/conditional_nodes.rb', line 4 def initialize(condition, true_case, else_case) @condition, @true_case, @else_case = [condition, true_case, else_case].build_nodes end |
Instance Method Details
#compile_internals(options = {}) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/red/conditional_nodes.rb', line 16 def compile_internals( = {}) true_case, else_case, condition = [@true_case, @else_case, @condition].compile_nodes return [condition, (true_case.empty? ? 'null' : true_case), (else_case.empty? ? 'null' : else_case)] if [:as_argument] condition = (true_case.empty? ? "!(%s)" : "%s") % [condition] true_case = "{ %s; }" % [true_case] unless true_case.empty? join = " else " unless true_case.empty? || else_case.empty? else_case = "{ %s; }" % [else_case] unless else_case.empty? return [condition, true_case, join, else_case] end |
#compile_node(options = {}) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/red/conditional_nodes.rb', line 8 def compile_node( = {}) unless [:as_argument] "if (%s) %s%s%s" else "(%s ? %s : %s)" end % self.compile_internals() end |