class TPPlus::Nodes::CaseNode

Public Class Methods

new(var, conditions, else_condition) click to toggle source
# File lib/tp_plus/nodes/case_node.rb, line 4
def initialize(var, conditions, else_condition)
  @var = var
  @conditions = conditions
  @else_condition = else_condition
end

Public Instance Methods

else_condition(context) click to toggle source
# File lib/tp_plus/nodes/case_node.rb, line 10
def else_condition(context)
  return "" if @else_condition.nil?

  " ;\n#{@else_condition.eval(context)}"
end
eval(context) click to toggle source
# File lib/tp_plus/nodes/case_node.rb, line 28
def eval(context)
  "SELECT #{@var.eval(context)}#{@conditions.shift.eval(context, no_indent: true)}#{other_conditions(context)}#{else_condition(context)}"
end
other_conditions(context) click to toggle source
# File lib/tp_plus/nodes/case_node.rb, line 16
def other_conditions(context)
  return "" if @conditions.empty?

  s = " ;\n"
  @conditions.reject! {|c| c.nil? }.each do |c|
    s += c.eval(context)
    s += " ;\n" unless c == @conditions.last
  end

  s
end