class SFRP::Low::DSL::IfChainProxy

Public Class Methods

new() click to toggle source
# File lib/sfrp/low/dsl.rb, line 97
def initialize
  @finised = false
  @cond_exps = []
  @exps = []
end

Public Instance Methods

append_case(cond_exp, exp) click to toggle source
# File lib/sfrp/low/dsl.rb, line 109
def append_case(cond_exp, exp)
  return if @finised
  @cond_exps << cond_exp
  @exps << exp
end
finish(exp) click to toggle source
# File lib/sfrp/low/dsl.rb, line 103
def finish(exp)
  return if @finished
  @exps << exp
  @finised = true
end
to_exp() click to toggle source
# File lib/sfrp/low/dsl.rb, line 115
def to_exp
  raise if @exps.empty?
  @cond_exps.pop unless @finised
  @finised = true
  xs = @cond_exps.zip(@exps).map { |ce, e| "(#{ce}) ? (#{e}) :" }
  last = "(#{@exps[-1]})"
  (xs + [last]).join(' ')
end