Module: Trxl::RangeLiteral1

Defined in:
lib/trxl/trxl_grammar.rb

Instance Method Summary collapse

Instance Method Details

#eval(env = Environment.new) ⇒ Object



2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
# File 'lib/trxl/trxl_grammar.rb', line 2749

def eval(env = Environment.new)
  lower_bound = lower.eval(env)
  upper_bound = upper.eval(env)
  if lower_bound.class == upper_bound.class && !lower_bound.is_a?(Array)
    range_op = elements[2].text_value
    omit_upper = (range_op == '...') ? true : false
    Range.new(lower.eval(env), upper.eval(env), omit_upper).to_a
  else
    raise Trxl::InvalidOperationException, "Range boundary is not of type String or Integer"
  end
end

#range_type(env = Environment.new) ⇒ Object



2761
2762
2763
2764
2765
2766
2767
# File 'lib/trxl/trxl_grammar.rb', line 2761

def range_type(env = Environment.new)
  case elements[0].eval(env)
    when Fixnum then :numeric
    when String then :string
    else :unknown
  end
end

#to_s(env = Environment.new) ⇒ Object



2769
2770
2771
# File 'lib/trxl/trxl_grammar.rb', line 2769

def to_s(env = Environment.new)
  text_value
end