1use strum::EnumProperty;
2
3#[derive(
14 Debug,
15 Copy,
16 Clone,
17 strum::Display,
18 strum::IntoStaticStr,
19 strum::EnumString,
20 strum::EnumProperty,
21 strum::EnumIter,
22)]
23pub enum LineID {
24 Bakerloo,
25 Central,
26 Circle,
27 District,
28 #[strum(to_string = "Hammersmith & City")]
29 #[strum(props(OverrideId = "Hammersmith-City"))]
30 HammersmithAndCity,
31 Jubilee,
32 Metropolitan,
33 Northern,
34 Piccadilly,
35 Victoria,
36 #[strum(to_string = "Waterloo & City")]
37 #[strum(props(OverrideId = "Waterloo-City"))]
38 WaterlooAndCity,
39 A10,
40 #[strum(to_string = "Avanti West Coast")]
41 #[strum(props(OverrideId = "Avanti-West-Coast"))]
42 AvantiWestCoast,
43 B11,
44 B12,
45 B13,
46 B14,
47 B15,
48 B16,
49 C1,
50 C10,
51 C11,
52 #[strum(to_string = "c2c")]
53 C2c,
54 C3,
55 #[strum(to_string = "Chiltern Railways")]
56 #[strum(props(OverrideId = "Chiltern-Railways"))]
57 ChilternRailways,
58 #[strum(to_string = "Cross Country")]
59 #[strum(props(OverrideId = "Cross-Country"))]
60 CrossCountry,
61 D3,
62 D6,
63 D7,
64 D8,
65 DLR,
66 E1,
67 E10,
68 E11,
69 E2,
70 E3,
71 E5,
72 E6,
73 E7,
74 E8,
75 E9,
76 #[strum(to_string = "East Midlands Railway")]
77 #[strum(props(OverrideId = "East-Midlands-Railway"))]
78 EastMidlandsRailway,
79 EL1,
80 EL2,
81 EL3,
82 #[strum(to_string = "Elizabeth line")]
83 #[strum(props(OverrideId = "Elizabeth"))]
84 Elizabethline,
85 #[strum(to_string = "First Hull Trains")]
86 #[strum(props(OverrideId = "First-Hull-Trains"))]
87 FirstHullTrains,
88 #[strum(to_string = "First TransPennine Express")]
89 #[strum(props(OverrideId = "First-Transpennine-Express"))]
90 FirstTransPennineExpress,
91 G1,
92 #[strum(to_string = "Gatwick Express")]
93 #[strum(props(OverrideId = "Gatwick-Express"))]
94 GatwickExpress,
95 #[strum(to_string = "Grand Central")]
96 #[strum(props(OverrideId = "Grand-Central"))]
97 GrandCentral,
98 #[strum(to_string = "Greater Anglia")]
99 #[strum(props(OverrideId = "Greater-Anglia"))]
100 GreaterAnglia,
101 #[strum(to_string = "Great Northern")]
102 #[strum(props(OverrideId = "Great-Northern"))]
103 GreatNorthern,
104 #[strum(to_string = "Great Western Railway")]
105 #[strum(props(OverrideId = "Great-Western-Railway"))]
106 GreatWesternRailway,
107 H10,
108 H11,
109 H12,
110 H13,
111 H14,
112 H17,
113 H18,
114 H19,
115 H2,
116 H20,
117 H22,
118 H25,
119 H26,
120 H28,
121 H3,
122 H32,
123 H37,
124 H9,
125 H91,
126 H98,
127 #[strum(to_string = "Heathrow Express")]
128 #[strum(props(OverrideId = "Heathrow-Express"))]
129 HeathrowExpress,
130 #[strum(to_string = "Island Line")]
131 #[strum(props(OverrideId = "Island-Line"))]
132 IslandLine,
133 K1,
134 K2,
135 K3,
136 K4,
137 K5,
138 #[strum(to_string = "IFS Cloud Cable Car")]
139 #[strum(props(OverrideId = "London-Cable-Car"))]
140 IFSCloudCableCar,
141 #[strum(to_string = "London North Eastern Railway")]
142 #[strum(props(OverrideId = "London-North-Eastern-Railway"))]
143 LondonNorthEasternRailway,
144 #[strum(to_string = "London Overground")]
145 #[strum(props(OverrideId = "London-Overground"))]
146 LondonOverground,
147 Lumo,
148 Merseyrail,
149 N1,
150 N109,
151 N11,
152 N113,
153 N133,
154 N136,
155 N137,
156 N140,
157 N15,
158 N155,
159 N171,
160 N18,
161 N19,
162 N199,
163 N2,
164 N20,
165 N205,
166 N207,
167 N21,
168 N22,
169 N242,
170 N25,
171 N250,
172 N253,
173 N26,
174 N266,
175 N27,
176 N271,
177 N277,
178 N279,
179 N28,
180 N29,
181 N3,
182 N31,
183 N32,
184 N33,
185 N343,
186 N38,
187 N381,
188 N41,
189 N44,
190 N5,
191 N53,
192 N55,
193 N550,
194 N551,
195 N63,
196 N65,
197 N68,
198 N7,
199 N72,
200 N73,
201 N74,
202 N8,
203 N83,
204 N86,
205 N87,
206 N89,
207 N9,
208 N91,
209 N97,
210 N98,
211 #[strum(to_string = "Northern Rail")]
212 #[strum(props(OverrideId = "Northern-Rail"))]
213 NorthernRail,
214 P12,
215 P13,
216 P4,
217 P5,
218 R1,
219 R10,
220 R11,
221 R2,
222 R3,
223 R4,
224 R5,
225 R6,
226 R68,
227 R7,
228 R70,
229 R8,
230 R9,
231 RB1,
232 RB2,
233 RB4,
234 RB6,
235 S1,
236 S3,
237 S4,
238 #[strum(to_string = "ScotRail")]
239 #[strum(props(OverrideId = "ScotRail"))]
240 ScotRail,
241 SL8,
242 Southeastern,
243 Southern,
244 #[strum(to_string = "South Western Railway")]
245 #[strum(props(OverrideId = "South-Western-Railway"))]
246 SouthWesternRailway,
247 Thameslink,
248 #[strum(to_string = "Thames River Services")]
249 #[strum(props(OverrideId = "Thames-River-Services"))]
250 ThamesRiverServices,
251 Tram,
252 #[strum(to_string = "Transport for Wales")]
253 #[strum(props(OverrideId = "Transport-for-Wales"))]
254 TransportforWales,
255 U1,
256 U10,
257 U2,
258 U3,
259 U4,
260 U5,
261 U7,
262 U9,
263 W11,
264 W12,
265 W13,
266 W14,
267 W15,
268 W16,
269 W19,
270 W3,
271 W4,
272 W5,
273 W6,
274 W7,
275 W8,
276 W9,
277 #[strum(to_string = "West Midlands Trains")]
278 #[strum(props(OverrideId = "West-Midlands-Trains"))]
279 WestMidlandsTrains,
280 #[strum(to_string = "Woolwich Ferry")]
281 #[strum(props(OverrideId = "Woolwich-Ferry"))]
282 WoolwichFerry,
283 X140,
284 X26,
285 X68,
286}
287
288impl LineID {
289 pub fn line(&self) -> &'static str {
290 if let Some(id) = self.get_str("OverrideId") {
291 id
292 } else {
293 self.into()
294 }
295 }
296}