class Liquid::RangeLookup
Attributes
end_obj[R]
start_obj[R]
Public Class Methods
new(start_obj, end_obj)
click to toggle source
# File lib/liquid/range_lookup.rb, line 27 def initialize(start_obj, end_obj) @start_obj = start_obj @end_obj = end_obj end
parse(start_markup, end_markup)
click to toggle source
# File lib/liquid/range_lookup.rb, line 5 def self.parse(start_markup, end_markup) start_obj = Expression.parse(start_markup) end_obj = Expression.parse(end_markup) if start_obj.respond_to?(:evaluate) || end_obj.respond_to?(:evaluate) new(start_obj, end_obj) else begin start_obj.to_i..end_obj.to_i rescue NoMethodError invalid_expr = start_markup unless start_obj.respond_to?(:to_i) invalid_expr ||= end_markup unless end_obj.respond_to?(:to_i) if invalid_expr raise Liquid::SyntaxError, "Invalid expression type '#{invalid_expr}' in range expression" end raise end end end
Public Instance Methods
evaluate(context)
click to toggle source
# File lib/liquid/range_lookup.rb, line 32 def evaluate(context) start_int = to_integer(context.evaluate(@start_obj)) end_int = to_integer(context.evaluate(@end_obj)) start_int..end_int end
Private Instance Methods
to_integer(input)
click to toggle source
# File lib/liquid/range_lookup.rb, line 40 def to_integer(input) case input when Integer input when NilClass, String input.to_i else Utils.to_integer(input) end end