trains

Notifications for the new MBTA trains. Probably no longer functional.

git clone https://code.pdelong.com/trains.git

 1package main
 2
 3import "log"
 4
 5// Assorted utility functions.
 6
 7func StringToLine(line string) int {
 8	switch line {
 9	case "Red":
10		return Red
11	case "Orange":
12		return Orange
13	case "Green-B":
14		return GreenB
15	case "Green-C":
16		return GreenC
17	case "Green-D":
18		return GreenD
19	case "Green-E":
20		return GreenE
21	default:
22		return LineUnknown
23	}
24}
25
26func LineToString(line int) string {
27	switch line {
28	case Red:
29		return "Red"
30	case Orange:
31		return "Orange"
32	case GreenB:
33		return "Green-B"
34	case GreenC:
35		return "Green-C"
36	case GreenD:
37		return "Green-D"
38	case GreenE:
39		return "Green-E"
40	default:
41		return "UNKNOWN"
42	}
43}
44
45func IntToDirection(dir, line int) int {
46	switch line {
47	case GreenB, GreenC, GreenD, GreenE:
48		switch dir {
49		case 0:
50			return East
51		case 1:
52			return West
53		default:
54			log.Printf("Unknown direction %d for %s line", dir, LineToString(line))
55			return DirectionUnknown
56		}
57	case Red, Orange:
58		switch dir {
59		case 0:
60			return North
61		case 1:
62			return South
63		default:
64			log.Printf("Unknown direction %d for %s line", dir, LineToString(line))
65			return DirectionUnknown
66		}
67	default:
68		log.Printf("Unknown direction %d for unknown line", dir)
69		return DirectionUnknown
70	}
71}
72
73func DirectionToString(dir int) string {
74	switch dir {
75	case North:
76		return "north"
77	case South:
78		return "south"
79	case East:
80		return "east"
81	case West:
82		return "west"
83	case DirectionUnknown:
84		return "unknown"
85	default:
86		panic("unknown direction in DirectionToString")
87	}
88}
89
90func FilterNewTrains(trains []Train) []Train {
91	newTrains := make([]Train, 0)
92	for _, train := range trains {
93		if train.IsNew() {
94			newTrains = append(newTrains, train)
95		}
96	}
97
98	return newTrains
99}