mosTrack 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 33cbb1d665d19691c855c827d14017699839bc8a
4
+ data.tar.gz: 91f0b3eb913365e058bbcef42674534ac840d5de
5
+ SHA512:
6
+ metadata.gz: b4db4637c087499d56dc913c407d9c0bc4416d70e5646e928b4e0e4f48465683c2e4287b5e91f3e93f9ecdd3064438d1cbc7eec08d1ad02d40e9e42335f5f5c0
7
+ data.tar.gz: 424f988ffa5d2e2762007e905b5ffc0535876487459f83080aa1f4af13f162918499fe1e087ffc3d7a4ac43bee88afe04cba5c9c126c3fe7a38ac8183e9c0de7
@@ -0,0 +1,466 @@
1
+ ---
2
+ - :district:
3
+ - "район Выхино-Жулебино - YML"
4
+ :address: "Рязанский проспект, дом 82, корпус 4"
5
+ :helpPhone: "(495) 376-61-44"
6
+ :objectHasWifi: "нет"
7
+ - :district:
8
+ - "район Текстильщики"
9
+ :address: "Волгоградский проспект, дом 46/15, строение 1"
10
+ :helpPhone: "(499) 178-65-38"
11
+ :objectHasWifi: "нет"
12
+ - :district:
13
+ - "район Западное Дегунино"
14
+ :address: "Дегунинская улица, дом 18"
15
+ :helpPhone: "(499) 905-82-55"
16
+ :objectHasWifi: "нет"
17
+ - :district:
18
+ - "Таганский район"
19
+ :address: "Таганская улица, дом 40-42"
20
+ :helpPhone: "(495) 632-64-20"
21
+ :objectHasWifi: "да"
22
+ - :district:
23
+ - "Бабушкинский район"
24
+ :address: "Олонецкий проезд, дом 5"
25
+ :helpPhone: "(499) 798-03-85"
26
+ :objectHasWifi: "нет"
27
+ - :district:
28
+ - "район Измайлово"
29
+ :address: "аллея Большого Круга, дом 7"
30
+ :helpPhone: "(499) 166-61-19"
31
+ :objectHasWifi: "да"
32
+ - :district:
33
+ - "район Некрасовка"
34
+ :address: 1-я Вольская улица, дом 22, корпус 2
35
+ :helpPhone: "(499) 211-25-30"
36
+ :objectHasWifi: "нет"
37
+ - :district:
38
+ - "район Перово"
39
+ :address: "улица Лазо, дом 7, строение 2"
40
+ :helpPhone: "(495) 309-53-42"
41
+ :objectHasWifi: "да"
42
+ - :district:
43
+ - "район Савёлки"
44
+ :address: "город Зеленоград, корпус 509"
45
+ :helpPhone: "(499) 734-13-40"
46
+ :objectHasWifi: "нет"
47
+ - :district:
48
+ - "район Савёлки"
49
+ :address: "город Зеленоград, корпус 509"
50
+ :helpPhone: "(499) 734-13-40"
51
+ :objectHasWifi: "нет"
52
+ - :district:
53
+ - "район Восточный"
54
+ :address: "Западная улица, дом 16Б"
55
+ :helpPhone: "(499) 780-15-82"
56
+ :objectHasWifi: "да"
57
+ - :district:
58
+ - "район Вешняки"
59
+ :address: "улица Красный Казанец, дом 3А"
60
+ :helpPhone: "(499) 374-12-60"
61
+ :objectHasWifi: "нет"
62
+ - :district:
63
+ - "Южнопортовый район"
64
+ :address: 3-й Кожуховский проезд, дом 3А
65
+ :helpPhone: "(495) 710-19-94"
66
+ :objectHasWifi: "нет"
67
+ - :district:
68
+ - "район Южное Бутово"
69
+ :address: "Южнобутовская улица, дом 76, корпус 1"
70
+ :helpPhone: "(495) 715-80-54"
71
+ :objectHasWifi: "нет"
72
+ - :district:
73
+ - "район Чертаново Центральное"
74
+ :address: "улица Красного Маяка, дом 3Г"
75
+ :helpPhone: "(495) 389-27-36"
76
+ :objectHasWifi: "нет"
77
+ - :district:
78
+ - "район Филёвский Парк"
79
+ :address: "Новозаводская улица, дом 27"
80
+ :helpPhone: "(499) 749-86-64"
81
+ :objectHasWifi: "нет"
82
+ - :district:
83
+ - "район Выхино-Жулебино"
84
+ :address: "Жулебинский бульвар, дом 38"
85
+ :helpPhone: "(495) 704-00-31"
86
+ :objectHasWifi: "нет"
87
+ - :district:
88
+ - "Рязанский район"
89
+ :address: "улица Васильцовский Стан, дом 6"
90
+ :helpPhone: "(499) 754-13-67"
91
+ :objectHasWifi: "нет"
92
+ - :district:
93
+ - "район Выхино-Жулебино"
94
+ :address: "Лермонтовский проспект, дом 14, корпус 2"
95
+ :helpPhone: "(495) 705-61-96"
96
+ :objectHasWifi: "нет"
97
+ - :district:
98
+ - "район Свиблово"
99
+ :address: "Тенистый проезд, дом 2, строение 1"
100
+ :helpPhone:
101
+ :objectHasWifi: "нет"
102
+ - :district:
103
+ - "район Некрасовка"
104
+ :address: 2-я Вольская улица, дом 16, строение 1
105
+ :helpPhone: "(499) 211-25-79"
106
+ :objectHasWifi: "нет"
107
+ - :district:
108
+ - "район Кузьминки"
109
+ :address: "Есенинский бульвар, дом 9, корпус 2"
110
+ :helpPhone: "(499) 175-54-12"
111
+ :objectHasWifi: "нет"
112
+ - :district:
113
+ - "район Марьино"
114
+ :address: "улица Маршала Голованова, дом 9"
115
+ :helpPhone: "(495) 356-77-91"
116
+ :objectHasWifi: "нет"
117
+ - :district:
118
+ - "район Марьино"
119
+ :address: "Братиславская улица, дом 8, корпус 1"
120
+ :helpPhone: "(495) 349-19-90"
121
+ :objectHasWifi: "нет"
122
+ - :district:
123
+ - "район Царицыно"
124
+ :address: "Кавказский бульвар, дом 16, корпус 2"
125
+ :helpPhone: "(495) 325-41-11"
126
+ :objectHasWifi: "нет"
127
+ - :district:
128
+ - "район Гольяново"
129
+ :address: "Алтайская улица, дом 4"
130
+ :helpPhone: "(499) 166-61-19"
131
+ :objectHasWifi: "нет"
132
+ - :district:
133
+ - "район Чертаново Южное"
134
+ :address: "Варшавское шоссе, дом 156Б"
135
+ :helpPhone: "(495) 386-12-59"
136
+ :objectHasWifi: "нет"
137
+ - :district:
138
+ - "район Бибирево"
139
+ :address: "улица Корнейчука, дом 37А"
140
+ :helpPhone: "(499) 206-62-00"
141
+ :objectHasWifi: "нет"
142
+ - :district:
143
+ - "Академический район"
144
+ :address: "улица Кедрова, дом 11"
145
+ :helpPhone: "(499) 124-43-07"
146
+ :objectHasWifi: "нет"
147
+ - :district:
148
+ - "район Лианозово"
149
+ :address: "Новгородская улица, дом 12"
150
+ :helpPhone: "(499) 909-29-01"
151
+ :objectHasWifi: "нет"
152
+ - :district:
153
+ - "район Бибирево"
154
+ :address: "Белозерская улица, дом 15"
155
+ :helpPhone: "(499) 206-32-00"
156
+ :objectHasWifi: "нет"
157
+ - :district:
158
+ - "Академический район"
159
+ :address: "улица Дмитрия Ульянова, дом 35, строение 1"
160
+ :helpPhone: "(499) 125-31-62"
161
+ :objectHasWifi: "нет"
162
+ - :district:
163
+ - "Академический район"
164
+ :address: "улица Шверника, дом 17, корпус 2"
165
+ :helpPhone: "(499) 126-48-20"
166
+ :objectHasWifi: "нет"
167
+ - :district:
168
+ - "Бескудниковский район"
169
+ :address: "Бескудниковский переулок, дом 4А"
170
+ :helpPhone: "(495) 488-45-85"
171
+ :objectHasWifi: "нет"
172
+ - :district:
173
+ - "район Марьино"
174
+ :address: "улица Перерва, дом 36"
175
+ :helpPhone: "(495) 348-33-61"
176
+ :objectHasWifi: "нет"
177
+ - :district:
178
+ - "район Печатники"
179
+ :address: "улица Полбина, дом 72, строение 1"
180
+ :helpPhone: "(495) 354-90-29"
181
+ :objectHasWifi: "нет"
182
+ - :district:
183
+ - "район Люблино"
184
+ :address: "Цимлянская улица, дом 7, строение 1"
185
+ :helpPhone: "(495) 358-05-68"
186
+ :objectHasWifi: "нет"
187
+ - :district:
188
+ - "район Текстильщики"
189
+ :address: "Волжский бульвар, дом 6, корпус 3"
190
+ :helpPhone: "(499) 177-56-77"
191
+ :objectHasWifi: "нет"
192
+ - :district:
193
+ - "район Вешняки"
194
+ :address: "улица Юности, дом 2, строение 1"
195
+ :helpPhone: "(495) 367-36-81"
196
+ :objectHasWifi: "нет"
197
+ - :district:
198
+ - "район Богородское"
199
+ :address: "улица Богатырский Мост, дом 17А"
200
+ :helpPhone: "(499) 268-60-45"
201
+ :objectHasWifi: "нет"
202
+ - :district:
203
+ - "район Орехово-Борисово Южное"
204
+ :address: "Каширское шоссе, дом 116, корпус 3"
205
+ :helpPhone: "(495) 392-27-27"
206
+ :objectHasWifi: "нет"
207
+ - :district:
208
+ - "район Бибирево"
209
+ :address: "улица Корнейчука, дом 52А"
210
+ :helpPhone: "(499) 206-90-74"
211
+ :objectHasWifi: "нет"
212
+ - :district:
213
+ - "район Старое Крюково"
214
+ :address: "город Зеленоград, корпус 864"
215
+ :helpPhone: "(499) 729-81-82"
216
+ :objectHasWifi: "нет"
217
+ - :district:
218
+ - "район Сокол"
219
+ :address: "улица Сальвадора Альенде, дом 9"
220
+ :helpPhone: "(499) 198-04-81"
221
+ :objectHasWifi: "нет"
222
+ - :district:
223
+ - "район Якиманка"
224
+ :address: "улица Крымский Вал, дом 10"
225
+ :helpPhone: "(499) 238-33-96"
226
+ :objectHasWifi: "да"
227
+ - :district:
228
+ - "район Гольяново"
229
+ :address: "Курганская улица, дом 3"
230
+ :helpPhone: "(499) 268-60-16"
231
+ :objectHasWifi: "нет"
232
+ - :district:
233
+ - "район Сокольники"
234
+ :address: "улица Сокольнический Вал, дом 1, строение 1"
235
+ :helpPhone: "(499) 393-92-22"
236
+ :objectHasWifi: "да"
237
+ - :district:
238
+ - "район Бирюлёво Западное"
239
+ :address: "Востряковский проезд, дом 5Б"
240
+ :helpPhone: "(495) 383-84-56"
241
+ :objectHasWifi: "нет"
242
+ - :district:
243
+ - "район Косино-Ухтомский"
244
+ :address: "Лухмановская улица, дом 17"
245
+ :helpPhone:
246
+ :objectHasWifi: "нет"
247
+ - :district:
248
+ - "район Вешняки"
249
+ :address: "Вешняковская улица, дом 16"
250
+ :helpPhone: "(495) 309-53-42"
251
+ :objectHasWifi: "нет"
252
+ - :district:
253
+ - "район Измайлово"
254
+ :address: "Измайловский проезд, дом 3, корпус 1"
255
+ :helpPhone: "(495) 291-27-34"
256
+ :objectHasWifi: "нет"
257
+ - :district:
258
+ - "район Косино-Ухтомский"
259
+ :address: "Лухмановская улица, дом 17"
260
+ :helpPhone:
261
+ :objectHasWifi: "нет"
262
+ - :district:
263
+ - "Дмитровский район"
264
+ :address: "улица Софьи Ковалевской, дом 8А"
265
+ :helpPhone: "(495) 484-90-88"
266
+ :objectHasWifi: "нет"
267
+ - :district:
268
+ - "район Отрадное"
269
+ :address: "Олонецкая улица, дом 13"
270
+ :helpPhone: "(499) 202-17-40"
271
+ :objectHasWifi: "нет"
272
+ - :district:
273
+ - "район Новокосино"
274
+ :address: "Салтыковская улица, дом 33, корпус 1"
275
+ :helpPhone:
276
+ :objectHasWifi: "нет"
277
+ - :district:
278
+ - "Алексеевский район"
279
+ :address: "Новоалексеевская улица, дом 6"
280
+ :helpPhone: "(495) 687-54-12"
281
+ :objectHasWifi: "нет"
282
+ - :district:
283
+ - "район Якиманка"
284
+ :address: "улица Крымский Вал, дом 9, строение 1"
285
+ :helpPhone: "(495) 995-00-20"
286
+ :objectHasWifi: "да"
287
+ - :district:
288
+ - "Ломоносовский район"
289
+ :address: "улица Кравченко, дом 14, корпус 1"
290
+ :helpPhone: "(499) 138-38-28"
291
+ :objectHasWifi: "нет"
292
+ - :district:
293
+ - "район Силино"
294
+ :address: "город Зеленоград, корпус 1017"
295
+ :helpPhone: "(499) 731-25-12"
296
+ :objectHasWifi: "нет"
297
+ - :district:
298
+ - "район Северное Тушино"
299
+ :address: "улица Свободы, дом 56"
300
+ :helpPhone: "(495) 640-73-55"
301
+ :objectHasWifi: "да"
302
+ - :district:
303
+ - "район Преображенское"
304
+ :address: "Большая Черкизовская улица, дом 21, строение 1"
305
+ :helpPhone: "(499) 780-25-41"
306
+ :objectHasWifi: "нет"
307
+ - :district:
308
+ - "район Косино-Ухтомский"
309
+ :address: "Заозёрная улица, дом 19"
310
+ :helpPhone: "(495) 291-27-34"
311
+ :objectHasWifi: "нет"
312
+ - :district:
313
+ - "поселение Внуковское"
314
+ :address: "улица Авиаконструктора Петлякова, дом 17"
315
+ :helpPhone: "(495) 827-02-66"
316
+ :objectHasWifi: "нет"
317
+ - :district:
318
+ - "район Черёмушки"
319
+ :address: "Перекопская улица, дом 28"
320
+ :helpPhone: "(495) 332-64-22"
321
+ :objectHasWifi: "нет"
322
+ - :district:
323
+ - "Алтуфьевский район"
324
+ :address: "Бибиревская улица, дом 6, корпус 1"
325
+ :helpPhone: "(499) 901-87-81"
326
+ :objectHasWifi: "нет"
327
+ - :district:
328
+ - "район Очаково-Матвеевское"
329
+ :address: "Озёрная улица, дом 27, корпус 2"
330
+ :helpPhone: "(495) 430-74-06"
331
+ :objectHasWifi: "нет"
332
+ - :district:
333
+ - "район Тропарёво-Никулино"
334
+ :address: "улица Академика Анохина, дом 48"
335
+ :helpPhone: "(495) 438-67-00"
336
+ :objectHasWifi: "нет"
337
+ - :district:
338
+ - "район Бибирево"
339
+ :address: "Белозерская улица, дом 15"
340
+ :helpPhone: "(499) 206-32-00"
341
+ :objectHasWifi: "нет"
342
+ - :district:
343
+ - "район Выхино-Жулебино"
344
+ :address: "улица Академика Скрябина, дом 23, строение 2"
345
+ :helpPhone: "(495) 377-72-84"
346
+ :objectHasWifi: "нет"
347
+ - :district:
348
+ - "район Якиманка"
349
+ :address: "улица Крымский Вал, дом 9, строение 11"
350
+ :helpPhone: "(925) 504-62-21"
351
+ :objectHasWifi: "нет"
352
+ - :district:
353
+ - "район Преображенское"
354
+ :address: "набережная Шитова, дом 2, сооружение 1"
355
+ :helpPhone: "(495) 777-28-03"
356
+ :objectHasWifi: "нет"
357
+ - :district:
358
+ - "район Хамовники"
359
+ :address: "улица Лужники, дом 24, строение 11Ж"
360
+ :helpPhone: "(495) 780-08-08"
361
+ :objectHasWifi: "нет"
362
+ - :district:
363
+ - "район Крюково"
364
+ :address: "город Зеленоград, корпус 2001"
365
+ :helpPhone: "(499) 734-00-40"
366
+ :objectHasWifi: "нет"
367
+ - :district:
368
+ - "район Коптево"
369
+ :address: "Большая Академическая улица, дом 77А"
370
+ :helpPhone: "(495) 482-59-41"
371
+ :objectHasWifi: "нет"
372
+ - :district:
373
+ - "Ярославский район"
374
+ :address: "Федоскинская улица, дом 4"
375
+ :helpPhone: "(495) 732-98-74"
376
+ :objectHasWifi: "нет"
377
+ - :district:
378
+ - "район Савёлки"
379
+ :address: "город Зеленоград, корпус 529"
380
+ :helpPhone: "(499) 736-08-46"
381
+ :objectHasWifi: "нет"
382
+ - :district:
383
+ - "Академический район"
384
+ :address: "улица Шверника, дом 10, строение 1"
385
+ :helpPhone: "(499) 126-93-44"
386
+ :objectHasWifi: "нет"
387
+ - :district:
388
+ - "район Орехово-Борисово Южное"
389
+ :address: "Ясеневая улица, дом 8, корпус 2"
390
+ :helpPhone: "(495) 399-48-28"
391
+ :objectHasWifi: "нет"
392
+ - :district:
393
+ - "Басманный район"
394
+ :address: "Михалковская улица, дом 52"
395
+ :helpPhone: "(495) 601-46-73"
396
+ :objectHasWifi: "нет"
397
+ - :district:
398
+ - "Академический район"
399
+ :address: "Новочерёмушкинская улица, дом 3А, корпус 1"
400
+ :helpPhone: "(499) 126-04-48"
401
+ :objectHasWifi: "нет"
402
+ - :district:
403
+ - "район Силино"
404
+ :address: "город Зеленоград, корпус 1128"
405
+ :helpPhone: "(499) 732-25-43"
406
+ :objectHasWifi: "нет"
407
+ - :district:
408
+ - "район Орехово-Борисово Южное"
409
+ :address: "Шипиловский проезд, дом 73"
410
+ :helpPhone: "(495) 398-88-54"
411
+ :objectHasWifi: "нет"
412
+ - :district:
413
+ - "район Очаково-Матвеевское"
414
+ :address: "Веерная улица, дом 38, корпус 2"
415
+ :helpPhone: "(495) 441-74-11"
416
+ :objectHasWifi: "нет"
417
+ - :district:
418
+ - "район Крюково"
419
+ :address: "город Зеленоград, корпус 1464"
420
+ :helpPhone: "(499) 717-02-01"
421
+ :objectHasWifi: "нет"
422
+ - :district:
423
+ - "район Коньково"
424
+ :address: "улица Введенского, дом 27А"
425
+ :helpPhone: "(495) 335-39-51"
426
+ :objectHasWifi: "нет"
427
+ - :district:
428
+ - "район Крюково"
429
+ :address: "город Зеленоград, корпус 1632"
430
+ :helpPhone: "(499) 717-14-29"
431
+ :objectHasWifi: "нет"
432
+ - :district:
433
+ - "Алтуфьевский район"
434
+ :address: "Костромская улица, дом 14, корпус 1"
435
+ :helpPhone: "(499) 902-22-27"
436
+ :objectHasWifi: "нет"
437
+ - :district:
438
+ - "район Люблино"
439
+ :address: "улица Марьинский Парк, дом 43"
440
+ :helpPhone: "(495) 658-47-47"
441
+ :objectHasWifi: "нет"
442
+ - :district:
443
+ - "район Печатники"
444
+ :address: "улица Полбина, дом 18"
445
+ :helpPhone: "(495) 353-33-86"
446
+ :objectHasWifi: "нет"
447
+ - :district:
448
+ - "Южнопортовый район"
449
+ :address: 5-я Кожуховская улица, дом 26, строение 1
450
+ :helpPhone: "(495) 679-47-21"
451
+ :objectHasWifi: "нет"
452
+ - :district:
453
+ - "район Печатники"
454
+ :address: "улица Полбина, дом 44"
455
+ :helpPhone: "(495) 354-28-07"
456
+ :objectHasWifi: "нет"
457
+ - :district:
458
+ - "район Лефортово"
459
+ :address: "Красноказарменная улица, дом 3, корпус 1"
460
+ :helpPhone: "(499) 267-76-55"
461
+ :objectHasWifi: "нет"
462
+ - :district:
463
+ - "район Печатники"
464
+ :address: "улица Полбина, дом 68, строение 1"
465
+ :helpPhone: "(495) 354-07-10"
466
+ :objectHasWifi: "нет"
@@ -0,0 +1,64 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative 'mosTrack/data'
4
+ require_relative 'mosTrack/table'
5
+
6
+ module RunningTrack
7
+
8
+ def self.print
9
+ begin
10
+ data = Data.import
11
+ rescue Timeout::Error, RunningTrack::Data::RunningTrackNoDataError => e
12
+ puts "----------------------------------------------------"
13
+ puts "Ошибка: #{e.message}"
14
+ puts "Данные будут загружены из локального хранилища"
15
+ puts "----------------------------------------------------"
16
+ end
17
+ begin
18
+ Table.new(data).print
19
+ rescue Exception => e
20
+ puts "Ошибка: #{e.message}"
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ # RunningTrack.print
27
+
28
+ # @cache = {}
29
+
30
+ # # # def self.headers
31
+ # # # end
32
+
33
+ # def self.print type = :web
34
+ # # data(type).print
35
+ # data = data(type)
36
+ # puts @cache.keys
37
+ # data.print
38
+ # end
39
+
40
+ # def self.show_cache
41
+ # @cache
42
+ # end
43
+
44
+ # def self.drop_cache!
45
+ # @cache = {}
46
+ # end
47
+
48
+ # def self.data type
49
+ # data = Data.import type
50
+ # # Table.new data
51
+ # @cache[type] ||= Table.new data
52
+ # end
53
+
54
+ # def self.data type
55
+ # data = Data.import type
56
+ # # Table.new data
57
+ # @cache[type] ||= Table.new data
58
+ # end
59
+
60
+ # puts RunningTrack.print(:file)
61
+ # RunningTrack.drop_cache!
62
+ # puts RunningTrack.print(:file)
63
+ # RunningTrack.print :file
64
+ # p RunningTrack.show_cache.keys
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ require 'open-uri'
4
+ require 'json'
5
+ require 'timeout'
6
+
7
+ module RunningTrack
8
+ module Data
9
+
10
+ class RunningTrackNoDataError < Exception
11
+ end
12
+
13
+ REQUEST_TIMEOUT = 100
14
+ DATA_URL = "http://api.data.mos.ru/v1/datasets/899/rows"
15
+
16
+ def self.import
17
+ Timeout::timeout(REQUEST_TIMEOUT) do
18
+ # sleep 5
19
+ data = open(DATA_URL).read
20
+ # data = ""
21
+ raise RunningTrackNoDataError, "Нет данных" if data.length == 0
22
+ JSON.parse data
23
+ end
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,74 @@
1
+ # encoding: utf-8
2
+
3
+ require 'terminal-table'
4
+ require 'active_support/all'
5
+
6
+ require_relative 'track_collection'
7
+
8
+ module RunningTrack
9
+ class Table
10
+
11
+ COLUMNS = ["District", "Address", "HelpPhone", "ObjectHasWifi"]
12
+
13
+ def print
14
+ puts create_table
15
+ end
16
+
17
+ def initialize data
18
+ if data
19
+ rows = slice_rows data
20
+ @track_collection = TrackCollection.new rows
21
+ else
22
+ @track_collection = TrackCollection.new
23
+ @track_collection.load!
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def create_table
30
+ rows = @track_collection.tracks.map do |e|
31
+ e.to_hash.values
32
+ end
33
+ sep_rows = rows.zip(Array.new(rows.count - 1) { :separator }).flatten(1).compact
34
+ Terminal::Table.new rows: sep_rows, headings: COLUMNS
35
+ end
36
+
37
+ def slice_rows rows
38
+ rows.map! do |row|
39
+ row["Cells"].slice(*COLUMNS)
40
+ end
41
+ end
42
+
43
+ end
44
+ end
45
+
46
+ #
47
+
48
+ # SPLITTER = ';'
49
+
50
+ # attr_reader :rows
51
+
52
+ # def initialize data
53
+ # puts "[RunningTrack::Table]: Create running track table"
54
+ # @rows = prepare data
55
+ # end
56
+
57
+ # def print
58
+ # @table ||= create_table
59
+ # # puts @table
60
+ # end
61
+
62
+
63
+ # # private
64
+
65
+ # def prepare data
66
+ # data.map{ |line| line.split(SPLITTER) }
67
+ # end
68
+
69
+ # def create_table
70
+ # puts "[RunningTrack::Table]: Create terminal table"
71
+ # headings = @rows.shift
72
+ # sep_rows = @rows.zip(Array.new(@rows.count - 1){ :separator }).flatten(1).compact
73
+ # Terminal::Table.new headings: headings, rows: sep_rows
74
+ # end
@@ -0,0 +1,56 @@
1
+ require 'workflow'
2
+
3
+ module RunningTrack
4
+ class Track
5
+
6
+ include Workflow
7
+
8
+ TRACK_DISTRICT_KEY = :district
9
+ TRACK_ADDRESS_KEY = :address
10
+ TRACK_PHONE_KEY = :helpPhone
11
+ TRACK_HAS_WIFI_KEY = :objectHasWifi
12
+
13
+ def initialize track_data
14
+ @district = track_data[TRACK_DISTRICT_KEY]
15
+ @address = track_data[TRACK_ADDRESS_KEY]
16
+ @helpPhone = track_data[TRACK_PHONE_KEY]
17
+ @objectHasWifi = track_data[TRACK_HAS_WIFI_KEY]
18
+ end
19
+
20
+ def to_hash
21
+ {
22
+ TRACK_DISTRICT_KEY => @district,
23
+ TRACK_ADDRESS_KEY => @address,
24
+ TRACK_PHONE_KEY => @helpPhone,
25
+ TRACK_HAS_WIFI_KEY => @objectHasWifi
26
+ }
27
+ end
28
+
29
+ workflow do
30
+ state :new do
31
+ event :good_state, transitions_to: :good
32
+ event :normal_state, transitions_to: :normal
33
+ event :bad_state, transitions_to: :bad
34
+ end
35
+
36
+ state :good do
37
+ event :normal_state, transitions_to: :normal
38
+ event :bad_state, transitions_to: :bad
39
+ end
40
+
41
+ state :normal do
42
+ event :bad_state, transitions_to: :bad
43
+ event :good_state, transitions_to: :good
44
+ end
45
+
46
+ state :bad do
47
+ event :normal_state, transitions_to: :normal
48
+ event :good_state, transitions_to: :good
49
+ end
50
+ end
51
+
52
+ def to_s
53
+ "District: #{@district}, address: #{@address}, phone: #{@helpPhone}, has Wi-Fi: #{@objectHasWifi}"
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,55 @@
1
+
2
+ require 'yaml'
3
+ require_relative 'track'
4
+
5
+ module RunningTrack
6
+ class TrackCollection
7
+
8
+ attr_reader :tracks
9
+
10
+ class RunningTrackLoadLocalDataError < Exception
11
+ end
12
+
13
+ def initialize data = Array.new
14
+ @tracks = data.map do |e|
15
+ Track.new({
16
+ Track::TRACK_DISTRICT_KEY => e["District"],
17
+ Track::TRACK_ADDRESS_KEY => e["Address"],
18
+ Track::TRACK_PHONE_KEY => e["HelpPhone"],
19
+ Track::TRACK_HAS_WIFI_KEY => e["ObjectHasWifi"]
20
+ })
21
+ end
22
+ # p find(Track::TRACK_HAS_WIFI_KEY, "нет")
23
+ @tracks = random(@tracks.count)
24
+ end
25
+
26
+ def random count = 1
27
+ @tracks.shuffle.slice(0..count-1)
28
+ end
29
+
30
+ def find key, value
31
+ @tracks.select do |e|
32
+ e.to_hash[key] == value
33
+ end
34
+ end
35
+
36
+ def save!
37
+ File.open('./data/file.yml', 'w') {|f| f.write self.to_hash.to_yaml }
38
+ end
39
+
40
+ def load!
41
+ local_data = YAML.load_file('./data/file.yml')
42
+ raise RunningTrackLoadLocalDataError, "Локальных данных нет!" if !local_data
43
+ @tracks = YAML.load_file('./data/file.yml').map do |e|
44
+ Track.new(e)
45
+ end
46
+ end
47
+
48
+ def to_hash
49
+ hash = @tracks.map do |e|
50
+ e.to_hash
51
+ end
52
+ end
53
+
54
+ end
55
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mosTrack
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Evgeniy Fateev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: terminal-table
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: workflow
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.2'
55
+ description: A simple gem that prints running tracks information from data.mos.ru
56
+ site
57
+ email: spaceflow@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/data/file.yml
63
+ - lib/mosTrack.rb
64
+ - lib/mosTrack/data.rb
65
+ - lib/mosTrack/table.rb
66
+ - lib/mosTrack/track.rb
67
+ - lib/mosTrack/track_collection.rb
68
+ homepage: http://rubygems.org/gems/mosTrack
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements:
87
+ - Internet connection
88
+ - A good mood
89
+ rubyforge_project:
90
+ rubygems_version: 2.5.1
91
+ signing_key:
92
+ specification_version: 4
93
+ summary: Find your running track
94
+ test_files: []