Module: Robot::Simulator::Direction

Defined in:
lib/robot/simulator/direction.rb

Constant Summary collapse

DIRECTIONS =
[EAST = 0, NORTH = 1, WEST = 2, SOUTH = 3]
TO_STRS =
{ EAST => 'EAST', NORTH => 'NORTH', WEST => 'WEST', SOUTH => 'SOUTH' }
TO_CONSTANTS =
TO_STRS.invert

Class Method Summary collapse

Class Method Details

.from_str(direction_str) ⇒ Object

Raises:

  • (ArgumentError)


30
31
32
33
34
# File 'lib/robot/simulator/direction.rb', line 30

def self.from_str(direction_str)
  key = (direction_str || "").upcase
  raise(ArgumentError, "Direction string '#{direction_str}' must be one of #{TO_CONSTANTS.keys}") unless TO_CONSTANTS.keys.include? key
  TO_CONSTANTS[key]
end

.left(direction) ⇒ Direction

Direction on the left when facing current direction

Returns:



10
11
12
13
14
# File 'lib/robot/simulator/direction.rb', line 10

def self.left(direction)
  validate direction

  DIRECTIONS[(direction + 1) % 4]
end

.right(direction) ⇒ Direction

Direction on the right when facing current direction

Returns:



18
19
20
21
22
# File 'lib/robot/simulator/direction.rb', line 18

def self.right(direction)
  validate direction

  DIRECTIONS[(direction - 1 + 4) % 4]
end

.to_str(direction) ⇒ Object



24
25
26
27
28
# File 'lib/robot/simulator/direction.rb', line 24

def self.to_str(direction)
  validate direction

  TO_STRS[direction]
end