mosTrack 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []