/src/direction.ts
import { Token } from 'nearley';

export enum Direction {
    North,
    East,
    South,
    West,
}

export function directionFromToken(t: Token): Direction {
    const s = typeof t == 'string' ? t : t.value;
    switch(s.slice(1)) {
        case 'n':
        case 'north':
            return Direction.North;
            break;
        case 'e':
        case 'east':
            return Direction.East;
            break;
        case 's':
        case 'south':
            return Direction.South;
            break;
        case 'w':
        case 'west':
            return Direction.West;
            break;
        default:
            throw new Error('Invalid direction: ' + s);
    }
}

export function directionToDelta(d: Direction): [number, number] {
    switch(d) {
        case Direction.North:
            return [0, -1];
            break;
        case Direction.East:
            return [1, 0];
            break;
        case Direction.South:
            return [0, 1];
            break;
        case Direction.West:
            return [-1, 0];
            break;
    }
}