class TheFox::Range::Lexer::Range

Public Class Methods

new(symbole) click to toggle source
Calls superclass method TheFox::Range::Lexer::Base::new
# File lib/thefox-ext/range/lexer/range.rb, line 7
def initialize(symbole)
  super(symbole)
  # puts '-> Range.initialize(%s)' % [symbole]

  @left_item = nil
  @right_item = nil
  @interval = nil
end

Public Instance Methods

inspect() click to toggle source

:nocov:

# File lib/thefox-ext/range/lexer/range.rb, line 17
def inspect()
  if !@left_item.nil? && !@right_item.nil?
    'Range(#%s s=%s l=%s r=%s i=%s)' % [
      @nonce,
      @symbole,
      @left_item.inspect,
      @right_item.inspect,
      @interval.inspect
    ]
  else
    'Range(#%s %s)' % [@nonce, @symbole]
  end
end
interval() click to toggle source
# File lib/thefox-ext/range/lexer/range.rb, line 43
def interval()
  @interval
end
interval=(interval) click to toggle source
# File lib/thefox-ext/range/lexer/range.rb, line 46
def interval=(interval)
  @interval = interval.dup
end
left_item=(left_item) click to toggle source

:nocov:

# File lib/thefox-ext/range/lexer/range.rb, line 32
def left_item=(left_item)
  @left_item = left_item.dup
end
resolve() click to toggle source
# File lib/thefox-ext/range/lexer/range.rb, line 50
def resolve()
  # puts '-> %s.resolve()'.colorize(:red) % [inspect]
  if @left_item.is_a?(Number) && @right_item.is_a?(Number)
    r = ::Range.new(@left_item.resolve, @right_item.resolve)
    if @interval.is_a?(Interval)
      # puts '--> I=%s'.colorize(:red) % [@interval.inspect]
      r = r.step(@interval.resolve)
    end
    # puts '--> %s'.colorize(:red) % [r.inspect]
    r.to_a
  end
end
right_item() click to toggle source
# File lib/thefox-ext/range/lexer/range.rb, line 39
def right_item()
  @right_item
end
right_item=(right_item) click to toggle source
# File lib/thefox-ext/range/lexer/range.rb, line 36
def right_item=(right_item)
  @right_item = right_item.dup
end