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
- .from_str(direction_str) ⇒ Object
-
.left(direction) ⇒ Direction
Direction on the left when facing current direction.
-
.right(direction) ⇒ Direction
Direction on the right when facing current direction.
- .to_str(direction) ⇒ Object
Class Method Details
.from_str(direction_str) ⇒ Object
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
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
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 |