Class: Red::ConditionalNode::IfNode

Inherits:
Object
  • Object
show all
Defined in:
lib/red/conditional_nodes.rb

Overview

:nodoc:

Instance Method Summary collapse

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(options = {})
  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 options[: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(options = {})
  unless options[:as_argument]
    "if (%s) %s%s%s"
  else
    "(%s ? %s : %s)"
  end % self.compile_internals(options)
end