Class: Code::Node::Range

Inherits:
Code::Node show all
Defined in:
lib/code/node/range.rb

Constant Summary collapse

INCLUSIVE_RANGE =
".."
EXCLUSIVE_RANGE =
"..."

Instance Method Summary collapse

Constructor Details

#initialize(range) ⇒ Range



7
8
9
10
11
# File 'lib/code/node/range.rb', line 7

def initialize(range)
  @left = ::Code::Node::Statement.new(range.fetch(:left))
  @operator = range.fetch(:operator)
  @right = ::Code::Node::Statement.new(range.fetch(:right))
end

Instance Method Details

#evaluate(**args) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/code/node/range.rb', line 13

def evaluate(**args)
  left = @left.evaluate(**args)
  right = @right.evaluate(**args)

  if operator == INCLUSIVE_RANGE
    ::Code::Object::Range.new(left, right, exclude_end: false)
  elsif operator == EXCLUSIVE_RANGE
    ::Code::Object::Range.new(left, right, exclude_end: true)
  else
    raise NotImplementedError.new(operator)
  end
end