import EtudeError from "../error/EtudeError"; export default class Direction { public static size: number = 0; private static _values: Direction[] = []; public static ASCENDING = new Direction(); public static DESCENDING = new Direction(); public static DEFAULT = Direction.ASCENDING; private constructor() { ++Direction.size; Direction._values.push(this); } public static values(): Direction[] { return Direction._values.slice(); } public ordinal(): number { return Direction._values.indexOf(this); } public static valueOf(directionString: string): Direction { const direction: Direction = Direction[directionString]; if (direction instanceof Direction) { return direction; } throw EtudeError.forInvalid(Direction, directionString); } public toString(): string { return Object.keys(Direction).find(d => Direction[d] === this); } }