windward 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2619e972b9300dd1d0a78bef8b617bf2f26fdd67
4
+ data.tar.gz: edb5a1d087e9a62c160f250b29469ddbdda1347e
5
+ SHA512:
6
+ metadata.gz: 90efbbc1120980c592790eb0bd32b2c5cbf1838f7fdebdcac99cb091531b3ae5b49275a1ee1e43f63e13b867f0c9d51823afae5268a54642f0278682bdd0fbfd
7
+ data.tar.gz: a5e3ce1235cc3423141a7523e522f034bcb3b6dea8fd2f2cf683afe5606924c76fe8b8cef2d9751174ee5ec175edd5e24d61cbc921e72ec30707297c594fb8ba
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in windward.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ gem 'rspec'
8
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Yann VERY
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Windward
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'windward'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install windward
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,803 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <regions>
3
+ <province>
4
+ <id_departement>1</id_departement>
5
+ <id_region>22</id_region>
6
+ <code>01</code>
7
+ <name_province>Ain</name_province>
8
+ <name_province_uppercase>AIN</name_province_uppercase>
9
+ <province_slug>ain</province_slug>
10
+ </province>
11
+ <province>
12
+ <id_departement>2</id_departement>
13
+ <id_region>19</id_region>
14
+ <code>02</code>
15
+ <name_province>Aisne</name_province>
16
+ <name_province_uppercase>AISNE</name_province_uppercase>
17
+ <province_slug>aisne</province_slug>
18
+ </province>
19
+ <province>
20
+ <id_departement>3</id_departement>
21
+ <id_region>2</id_region>
22
+ <code>03</code>
23
+ <name_province>Allier</name_province>
24
+ <name_province_uppercase>ALLIER</name_province_uppercase>
25
+ <province_slug>allier</province_slug>
26
+ </province>
27
+ <province>
28
+ <id_departement>5</id_departement>
29
+ <id_region>21</id_region>
30
+ <code>05</code>
31
+ <name_province>Alpes (Hautes)</name_province>
32
+ <name_province_uppercase>ALPES (HAUTES)</name_province_uppercase>
33
+ <province_slug>alpes-hautes</province_slug>
34
+ </province>
35
+ <province>
36
+ <id_departement>6</id_departement>
37
+ <id_region>21</id_region>
38
+ <code>06</code>
39
+ <name_province>Alpes Maritimes</name_province>
40
+ <name_province_uppercase>ALPES MARITIMES</name_province_uppercase>
41
+ <province_slug>alpes-maritimes</province_slug>
42
+ </province>
43
+ <province>
44
+ <id_departement>7</id_departement>
45
+ <id_region>22</id_region>
46
+ <code>07</code>
47
+ <name_province>Ardéche</name_province>
48
+ <name_province_uppercase>ARDÉCHE</name_province_uppercase>
49
+ <province_slug>ardeche</province_slug>
50
+ </province>
51
+ <province>
52
+ <id_departement>8</id_departement>
53
+ <id_region>6</id_region>
54
+ <code>08</code>
55
+ <name_province>Ardennes</name_province>
56
+ <name_province_uppercase>ARDENNES</name_province_uppercase>
57
+ <province_slug>ardennes</province_slug>
58
+ </province>
59
+ <province>
60
+ <id_departement>9</id_departement>
61
+ <id_region>14</id_region>
62
+ <code>09</code>
63
+ <name_province> Ariége</name_province>
64
+ <name_province_uppercase> ARIÉGE</name_province_uppercase>
65
+ <province_slug>-ariege</province_slug>
66
+ </province>
67
+ <province>
68
+ <id_departement>10</id_departement>
69
+ <id_region>6</id_region>
70
+ <code>10</code>
71
+ <name_province>Aube</name_province>
72
+ <name_province_uppercase>AUBE</name_province_uppercase>
73
+ <province_slug>aube</province_slug>
74
+ </province>
75
+ <province>
76
+ <id_departement>11</id_departement>
77
+ <id_region>11</id_region>
78
+ <code>11</code>
79
+ <name_province>Aude</name_province>
80
+ <name_province_uppercase>AUDE</name_province_uppercase>
81
+ <province_slug>aude</province_slug>
82
+ </province>
83
+ <province>
84
+ <id_departement>12</id_departement>
85
+ <id_region>14</id_region>
86
+ <code>12</code>
87
+ <name_province>Aveyron</name_province>
88
+ <name_province_uppercase>AVEYRON</name_province_uppercase>
89
+ <province_slug>aveyron</province_slug>
90
+ </province>
91
+ <province>
92
+ <id_departement>13</id_departement>
93
+ <id_region>21</id_region>
94
+ <code>13</code>
95
+ <name_province>Bouches du Rhône</name_province>
96
+ <name_province_uppercase>BOUCHES DU RHÔNE</name_province_uppercase>
97
+ <province_slug>bouches-du-rhone</province_slug>
98
+ </province>
99
+ <province>
100
+ <id_departement>14</id_departement>
101
+ <id_region>24</id_region>
102
+ <code>14</code>
103
+ <name_province>Calvados</name_province>
104
+ <name_province_uppercase>CALVADOS</name_province_uppercase>
105
+ <province_slug>calvados</province_slug>
106
+ </province>
107
+ <province>
108
+ <id_departement>15</id_departement>
109
+ <id_region>2</id_region>
110
+ <code>15</code>
111
+ <name_province>Cantal</name_province>
112
+ <name_province_uppercase>CANTAL</name_province_uppercase>
113
+ <province_slug>cantal</province_slug>
114
+ </province>
115
+ <province>
116
+ <id_departement>16</id_departement>
117
+ <id_region>20</id_region>
118
+ <code>16</code>
119
+ <name_province>Charente</name_province>
120
+ <name_province_uppercase>CHARENTE</name_province_uppercase>
121
+ <province_slug>charente</province_slug>
122
+ </province>
123
+ <province>
124
+ <id_departement>17</id_departement>
125
+ <id_region>20</id_region>
126
+ <code>17</code>
127
+ <name_province>Charente Maritime</name_province>
128
+ <name_province_uppercase>CHARENTE MARITIME</name_province_uppercase>
129
+ <province_slug>charente-maritime</province_slug>
130
+ </province>
131
+ <province>
132
+ <id_departement>18</id_departement>
133
+ <id_region>5</id_region>
134
+ <code>18</code>
135
+ <name_province>Cher</name_province>
136
+ <name_province_uppercase>CHER</name_province_uppercase>
137
+ <province_slug>cher</province_slug>
138
+ </province>
139
+ <province>
140
+ <id_departement>19</id_departement>
141
+ <id_region>12</id_region>
142
+ <code>19</code>
143
+ <name_province>Corréze</name_province>
144
+ <name_province_uppercase>CORRÉZE</name_province_uppercase>
145
+ <province_slug>correze</province_slug>
146
+ </province>
147
+ <province>
148
+ <id_departement>21</id_departement>
149
+ <id_region>12</id_region>
150
+ <code>23</code>
151
+ <name_province>Creuse </name_province>
152
+ <name_province_uppercase>CREUSE </name_province_uppercase>
153
+ <province_slug>creuse-</province_slug>
154
+ </province>
155
+ <province>
156
+ <id_departement>22</id_departement>
157
+ <id_region>1</id_region>
158
+ <code>24</code>
159
+ <name_province>Dordogne</name_province>
160
+ <name_province_uppercase>DORDOGNE</name_province_uppercase>
161
+ <province_slug>dordogne</province_slug>
162
+ </province>
163
+ <province>
164
+ <id_departement>23</id_departement>
165
+ <id_region>9</id_region>
166
+ <code>25</code>
167
+ <name_province>Doubs</name_province>
168
+ <name_province_uppercase>DOUBS</name_province_uppercase>
169
+ <province_slug>doubs</province_slug>
170
+ </province>
171
+ <province>
172
+ <id_departement>24</id_departement>
173
+ <id_region>22</id_region>
174
+ <code>26</code>
175
+ <name_province>Drôme</name_province>
176
+ <name_province_uppercase>DRÔME</name_province_uppercase>
177
+ <province_slug>drome</province_slug>
178
+ </province>
179
+ <province>
180
+ <id_departement>25</id_departement>
181
+ <id_region>17</id_region>
182
+ <code>27</code>
183
+ <name_province>Eure</name_province>
184
+ <name_province_uppercase>EURE</name_province_uppercase>
185
+ <province_slug>eure</province_slug>
186
+ </province>
187
+ <province>
188
+ <id_departement>26</id_departement>
189
+ <id_region>5</id_region>
190
+ <code>28</code>
191
+ <name_province>Eure et Loir</name_province>
192
+ <name_province_uppercase>EURE ET LOIR</name_province_uppercase>
193
+ <province_slug>eure-et-loir</province_slug>
194
+ </province>
195
+ <province>
196
+ <id_departement>27</id_departement>
197
+ <id_region>4</id_region>
198
+ <code>29</code>
199
+ <name_province>Finistére</name_province>
200
+ <name_province_uppercase>FINISTÉRE</name_province_uppercase>
201
+ <province_slug>finistere</province_slug>
202
+ </province>
203
+ <province>
204
+ <id_departement>28</id_departement>
205
+ <id_region>11</id_region>
206
+ <code>30</code>
207
+ <name_province>Gard</name_province>
208
+ <name_province_uppercase>GARD</name_province_uppercase>
209
+ <province_slug>gard</province_slug>
210
+ </province>
211
+ <province>
212
+ <id_departement>29</id_departement>
213
+ <id_region>14</id_region>
214
+ <code>31</code>
215
+ <name_province>Garonne (Haute)</name_province>
216
+ <name_province_uppercase>GARONNE (HAUTE)</name_province_uppercase>
217
+ <province_slug>garonne-haute</province_slug>
218
+ </province>
219
+ <province>
220
+ <id_departement>30</id_departement>
221
+ <id_region>14</id_region>
222
+ <code>32</code>
223
+ <name_province>Gers</name_province>
224
+ <name_province_uppercase>GERS</name_province_uppercase>
225
+ <province_slug>gers</province_slug>
226
+ </province>
227
+ <province>
228
+ <id_departement>31</id_departement>
229
+ <id_region>1</id_region>
230
+ <code>33</code>
231
+ <name_province>Gironde</name_province>
232
+ <name_province_uppercase>GIRONDE</name_province_uppercase>
233
+ <province_slug>gironde</province_slug>
234
+ </province>
235
+ <province>
236
+ <id_departement>32</id_departement>
237
+ <id_region>11</id_region>
238
+ <code>34</code>
239
+ <name_province>Hérault</name_province>
240
+ <name_province_uppercase>HÉRAULT</name_province_uppercase>
241
+ <province_slug>herault</province_slug>
242
+ </province>
243
+ <province>
244
+ <id_departement>33</id_departement>
245
+ <id_region>4</id_region>
246
+ <code>35</code>
247
+ <name_province>Ile et Vilaine</name_province>
248
+ <name_province_uppercase>ILE ET VILAINE</name_province_uppercase>
249
+ <province_slug>ile-et-vilaine</province_slug>
250
+ </province>
251
+ <province>
252
+ <id_departement>34</id_departement>
253
+ <id_region>5</id_region>
254
+ <code>36</code>
255
+ <name_province>Indre</name_province>
256
+ <name_province_uppercase>INDRE</name_province_uppercase>
257
+ <province_slug>indre</province_slug>
258
+ </province>
259
+ <province>
260
+ <id_departement>35</id_departement>
261
+ <id_region>5</id_region>
262
+ <code>37</code>
263
+ <name_province>Indre et Loire</name_province>
264
+ <name_province_uppercase>INDRE ET LOIRE</name_province_uppercase>
265
+ <province_slug>indre-et-loire</province_slug>
266
+ </province>
267
+ <province>
268
+ <id_departement>36</id_departement>
269
+ <id_region>22</id_region>
270
+ <code>38</code>
271
+ <name_province>Isére</name_province>
272
+ <name_province_uppercase>ISÉRE</name_province_uppercase>
273
+ <province_slug>isere</province_slug>
274
+ </province>
275
+ <province>
276
+ <id_departement>37</id_departement>
277
+ <id_region>9</id_region>
278
+ <code>39</code>
279
+ <name_province>Jura</name_province>
280
+ <name_province_uppercase>JURA</name_province_uppercase>
281
+ <province_slug>jura</province_slug>
282
+ </province>
283
+ <province>
284
+ <id_departement>38</id_departement>
285
+ <id_region>1</id_region>
286
+ <code>40</code>
287
+ <name_province>Landes</name_province>
288
+ <name_province_uppercase>LANDES</name_province_uppercase>
289
+ <province_slug>landes</province_slug>
290
+ </province>
291
+ <province>
292
+ <id_departement>39</id_departement>
293
+ <id_region>5</id_region>
294
+ <code>41</code>
295
+ <name_province>Loir et Cher</name_province>
296
+ <name_province_uppercase>LOIR ET CHER</name_province_uppercase>
297
+ <province_slug>loir-et-cher</province_slug>
298
+ </province>
299
+ <province>
300
+ <id_departement>40</id_departement>
301
+ <id_region>22</id_region>
302
+ <code>42</code>
303
+ <name_province>Loire</name_province>
304
+ <name_province_uppercase>LOIRE</name_province_uppercase>
305
+ <province_slug>loire</province_slug>
306
+ </province>
307
+ <province>
308
+ <id_departement>41</id_departement>
309
+ <id_region>2</id_region>
310
+ <code>43</code>
311
+ <name_province>Loire (Haute)</name_province>
312
+ <name_province_uppercase>LOIRE (HAUTE)</name_province_uppercase>
313
+ <province_slug>loire-haute</province_slug>
314
+ </province>
315
+ <province>
316
+ <id_departement>42</id_departement>
317
+ <id_region>18</id_region>
318
+ <code>44</code>
319
+ <name_province>Loire Atlantique</name_province>
320
+ <name_province_uppercase>LOIRE ATLANTIQUE</name_province_uppercase>
321
+ <province_slug>loire-atlantique</province_slug>
322
+ </province>
323
+ <province>
324
+ <id_departement>43</id_departement>
325
+ <id_region>5</id_region>
326
+ <code>45</code>
327
+ <name_province>Loiret</name_province>
328
+ <name_province_uppercase>LOIRET</name_province_uppercase>
329
+ <province_slug>loiret</province_slug>
330
+ </province>
331
+ <province>
332
+ <id_departement>44</id_departement>
333
+ <id_region>14</id_region>
334
+ <code>46</code>
335
+ <name_province>Lot</name_province>
336
+ <name_province_uppercase>LOT</name_province_uppercase>
337
+ <province_slug>lot</province_slug>
338
+ </province>
339
+ <province>
340
+ <id_departement>45</id_departement>
341
+ <id_region>1</id_region>
342
+ <code>47</code>
343
+ <name_province>Lot et Garonne</name_province>
344
+ <name_province_uppercase>LOT ET GARONNE</name_province_uppercase>
345
+ <province_slug>lot-et-garonne</province_slug>
346
+ </province>
347
+ <province>
348
+ <id_departement>46</id_departement>
349
+ <id_region>11</id_region>
350
+ <code>48</code>
351
+ <name_province>Lozére</name_province>
352
+ <name_province_uppercase>LOZÉRE</name_province_uppercase>
353
+ <province_slug>lozere</province_slug>
354
+ </province>
355
+ <province>
356
+ <id_departement>47</id_departement>
357
+ <id_region>18</id_region>
358
+ <code>49</code>
359
+ <name_province>Maine et Loire</name_province>
360
+ <name_province_uppercase>MAINE ET LOIRE</name_province_uppercase>
361
+ <province_slug>maine-et-loire</province_slug>
362
+ </province>
363
+ <province>
364
+ <id_departement>48</id_departement>
365
+ <id_region>24</id_region>
366
+ <code>50</code>
367
+ <name_province>Manche</name_province>
368
+ <name_province_uppercase>MANCHE</name_province_uppercase>
369
+ <province_slug>manche</province_slug>
370
+ </province>
371
+ <province>
372
+ <id_departement>49</id_departement>
373
+ <id_region>6</id_region>
374
+ <code>51</code>
375
+ <name_province>Marne</name_province>
376
+ <name_province_uppercase>MARNE</name_province_uppercase>
377
+ <province_slug>marne</province_slug>
378
+ </province>
379
+ <province>
380
+ <id_departement>50</id_departement>
381
+ <id_region>6</id_region>
382
+ <code>52</code>
383
+ <name_province>Marne (Haute)</name_province>
384
+ <name_province_uppercase>MARNE (HAUTE)</name_province_uppercase>
385
+ <province_slug>marne-haute</province_slug>
386
+ </province>
387
+ <province>
388
+ <id_departement>51</id_departement>
389
+ <id_region>18</id_region>
390
+ <code>53</code>
391
+ <name_province>Mayenne</name_province>
392
+ <name_province_uppercase>MAYENNE</name_province_uppercase>
393
+ <province_slug>mayenne</province_slug>
394
+ </province>
395
+ <province>
396
+ <id_departement>52</id_departement>
397
+ <id_region>13</id_region>
398
+ <code>54</code>
399
+ <name_province>Meurthe et Moselle</name_province>
400
+ <name_province_uppercase>MEURTHE ET MOSELLE</name_province_uppercase>
401
+ <province_slug>meurthe-et-moselle</province_slug>
402
+ </province>
403
+ <province>
404
+ <id_departement>53</id_departement>
405
+ <id_region>13</id_region>
406
+ <code>55</code>
407
+ <name_province>Meuse</name_province>
408
+ <name_province_uppercase>MEUSE</name_province_uppercase>
409
+ <province_slug>meuse</province_slug>
410
+ </province>
411
+ <province>
412
+ <id_departement>54</id_departement>
413
+ <id_region>4</id_region>
414
+ <code>56</code>
415
+ <name_province>Morbihan</name_province>
416
+ <name_province_uppercase>MORBIHAN</name_province_uppercase>
417
+ <province_slug>morbihan</province_slug>
418
+ </province>
419
+ <province>
420
+ <id_departement>55</id_departement>
421
+ <id_region>13</id_region>
422
+ <code>57</code>
423
+ <name_province>Moselle</name_province>
424
+ <name_province_uppercase>MOSELLE</name_province_uppercase>
425
+ <province_slug>moselle</province_slug>
426
+ </province>
427
+ <province>
428
+ <id_departement>56</id_departement>
429
+ <id_region>3</id_region>
430
+ <code>58</code>
431
+ <name_province>Niévre</name_province>
432
+ <name_province_uppercase>NIÉVRE</name_province_uppercase>
433
+ <province_slug>nievre</province_slug>
434
+ </province>
435
+ <province>
436
+ <id_departement>57</id_departement>
437
+ <id_region>15</id_region>
438
+ <code>59</code>
439
+ <name_province>Nord</name_province>
440
+ <name_province_uppercase>NORD</name_province_uppercase>
441
+ <province_slug>nord</province_slug>
442
+ </province>
443
+ <province>
444
+ <id_departement>58</id_departement>
445
+ <id_region>19</id_region>
446
+ <code>60</code>
447
+ <name_province>Oise</name_province>
448
+ <name_province_uppercase>OISE</name_province_uppercase>
449
+ <province_slug>oise</province_slug>
450
+ </province>
451
+ <province>
452
+ <id_departement>59</id_departement>
453
+ <id_region>24</id_region>
454
+ <code>61</code>
455
+ <name_province>Orne</name_province>
456
+ <name_province_uppercase>ORNE</name_province_uppercase>
457
+ <province_slug>orne</province_slug>
458
+ </province>
459
+ <province>
460
+ <id_departement>60</id_departement>
461
+ <id_region>15</id_region>
462
+ <code>62</code>
463
+ <name_province>Pas de Calais</name_province>
464
+ <name_province_uppercase>PAS DE CALAIS</name_province_uppercase>
465
+ <province_slug>pas-de-calais</province_slug>
466
+ </province>
467
+ <province>
468
+ <id_departement>61</id_departement>
469
+ <id_region>2</id_region>
470
+ <code>63</code>
471
+ <name_province>Puy de Dôme</name_province>
472
+ <name_province_uppercase>PUY DE DÔME</name_province_uppercase>
473
+ <province_slug>puy-de-dome</province_slug>
474
+ </province>
475
+ <province>
476
+ <id_departement>62</id_departement>
477
+ <id_region>1</id_region>
478
+ <code>64</code>
479
+ <name_province>Pyrénées Atlantiques</name_province>
480
+ <name_province_uppercase>PYRÉNÉES ATLANTIQUES</name_province_uppercase>
481
+ <province_slug>pyrenees-atlantiques</province_slug>
482
+ </province>
483
+ <province>
484
+ <id_departement>63</id_departement>
485
+ <id_region>14</id_region>
486
+ <code>65</code>
487
+ <name_province>Pyrénées (Hautes)</name_province>
488
+ <name_province_uppercase>PYRÉNÉES (HAUTES)</name_province_uppercase>
489
+ <province_slug>pyrenees-hautes</province_slug>
490
+ </province>
491
+ <province>
492
+ <id_departement>64</id_departement>
493
+ <id_region>11</id_region>
494
+ <code>66</code>
495
+ <name_province>Pyrénées Orientales</name_province>
496
+ <name_province_uppercase>PYRÉNÉES ORIENTALES</name_province_uppercase>
497
+ <province_slug>pyrenees-orientales</province_slug>
498
+ </province>
499
+ <province>
500
+ <id_departement>65</id_departement>
501
+ <id_region>23</id_region>
502
+ <code>67</code>
503
+ <name_province>Rhin (Bas)</name_province>
504
+ <name_province_uppercase>RHIN (BAS)</name_province_uppercase>
505
+ <province_slug>rhin-bas</province_slug>
506
+ </province>
507
+ <province>
508
+ <id_departement>66</id_departement>
509
+ <id_region>23</id_region>
510
+ <code>68</code>
511
+ <name_province>Rhin (Haut)</name_province>
512
+ <name_province_uppercase>RHIN (HAUT)</name_province_uppercase>
513
+ <province_slug>rhin-haut</province_slug>
514
+ </province>
515
+ <province>
516
+ <id_departement>67</id_departement>
517
+ <id_region>22</id_region>
518
+ <code>69</code>
519
+ <name_province>Rhône</name_province>
520
+ <name_province_uppercase>RHÔNE</name_province_uppercase>
521
+ <province_slug>rhone</province_slug>
522
+ </province>
523
+ <province>
524
+ <id_departement>68</id_departement>
525
+ <id_region>9</id_region>
526
+ <code>70</code>
527
+ <name_province>Saône (Haute)</name_province>
528
+ <name_province_uppercase>SAÔNE (HAUTE)</name_province_uppercase>
529
+ <province_slug>saone-haute</province_slug>
530
+ </province>
531
+ <province>
532
+ <id_departement>69</id_departement>
533
+ <id_region>3</id_region>
534
+ <code>71</code>
535
+ <name_province>Saône et Loire</name_province>
536
+ <name_province_uppercase>SAÔNE ET LOIRE</name_province_uppercase>
537
+ <province_slug>saone-et-loire</province_slug>
538
+ </province>
539
+ <province>
540
+ <id_departement>70</id_departement>
541
+ <id_region>18</id_region>
542
+ <code>72</code>
543
+ <name_province>Sarthe</name_province>
544
+ <name_province_uppercase>SARTHE</name_province_uppercase>
545
+ <province_slug>sarthe</province_slug>
546
+ </province>
547
+ <province>
548
+ <id_departement>71</id_departement>
549
+ <id_region>22</id_region>
550
+ <code>73</code>
551
+ <name_province>Savoie</name_province>
552
+ <name_province_uppercase>SAVOIE</name_province_uppercase>
553
+ <province_slug>savoie</province_slug>
554
+ </province>
555
+ <province>
556
+ <id_departement>72</id_departement>
557
+ <id_region>22</id_region>
558
+ <code>74</code>
559
+ <name_province>Savoie (Haute)</name_province>
560
+ <name_province_uppercase>SAVOIE (HAUTE)</name_province_uppercase>
561
+ <province_slug>savoie-haute</province_slug>
562
+ </province>
563
+ <province>
564
+ <id_departement>73</id_departement>
565
+ <id_region>10</id_region>
566
+ <code>75</code>
567
+ <name_province>Paris</name_province>
568
+ <name_province_uppercase>PARIS</name_province_uppercase>
569
+ <province_slug>paris</province_slug>
570
+ </province>
571
+ <province>
572
+ <id_departement>74</id_departement>
573
+ <id_region>17</id_region>
574
+ <code>76</code>
575
+ <name_province>Seine Maritime</name_province>
576
+ <name_province_uppercase>SEINE MARITIME</name_province_uppercase>
577
+ <province_slug>seine-maritime</province_slug>
578
+ </province>
579
+ <province>
580
+ <id_departement>75</id_departement>
581
+ <id_region>10</id_region>
582
+ <code>77</code>
583
+ <name_province>Seine et Marne</name_province>
584
+ <name_province_uppercase>SEINE ET MARNE</name_province_uppercase>
585
+ <province_slug>seine-et-marne</province_slug>
586
+ </province>
587
+ <province>
588
+ <id_departement>76</id_departement>
589
+ <id_region>10</id_region>
590
+ <code>78</code>
591
+ <name_province>Yvelines</name_province>
592
+ <name_province_uppercase>YVELINES</name_province_uppercase>
593
+ <province_slug>yvelines</province_slug>
594
+ </province>
595
+ <province>
596
+ <id_departement>77</id_departement>
597
+ <id_region>20</id_region>
598
+ <code>79</code>
599
+ <name_province>Sèvres (Deux)</name_province>
600
+ <name_province_uppercase>SÈVRES (DEUX)</name_province_uppercase>
601
+ <province_slug>sevres-deux</province_slug>
602
+ </province>
603
+ <province>
604
+ <id_departement>78</id_departement>
605
+ <id_region>19</id_region>
606
+ <code>80</code>
607
+ <name_province>Somme</name_province>
608
+ <name_province_uppercase>SOMME</name_province_uppercase>
609
+ <province_slug>somme</province_slug>
610
+ </province>
611
+ <province>
612
+ <id_departement>79</id_departement>
613
+ <id_region>14</id_region>
614
+ <code>81</code>
615
+ <name_province>Tarn</name_province>
616
+ <name_province_uppercase>TARN</name_province_uppercase>
617
+ <province_slug>tarn</province_slug>
618
+ </province>
619
+ <province>
620
+ <id_departement>80</id_departement>
621
+ <id_region>14</id_region>
622
+ <code>82</code>
623
+ <name_province>Tarn et Garonne</name_province>
624
+ <name_province_uppercase>TARN ET GARONNE</name_province_uppercase>
625
+ <province_slug>tarn-et-garonne</province_slug>
626
+ </province>
627
+ <province>
628
+ <id_departement>81</id_departement>
629
+ <id_region>21</id_region>
630
+ <code>83</code>
631
+ <name_province>Var</name_province>
632
+ <name_province_uppercase>VAR</name_province_uppercase>
633
+ <province_slug>var</province_slug>
634
+ </province>
635
+ <province>
636
+ <id_departement>82</id_departement>
637
+ <id_region>21</id_region>
638
+ <code>84</code>
639
+ <name_province>Vaucluse</name_province>
640
+ <name_province_uppercase>VAUCLUSE</name_province_uppercase>
641
+ <province_slug>vaucluse</province_slug>
642
+ </province>
643
+ <province>
644
+ <id_departement>83</id_departement>
645
+ <id_region>18</id_region>
646
+ <code>85</code>
647
+ <name_province>Vendée</name_province>
648
+ <name_province_uppercase>VENDÉE</name_province_uppercase>
649
+ <province_slug>vendee</province_slug>
650
+ </province>
651
+ <province>
652
+ <id_departement>84</id_departement>
653
+ <id_region>20</id_region>
654
+ <code>86</code>
655
+ <name_province>Vienne</name_province>
656
+ <name_province_uppercase>VIENNE</name_province_uppercase>
657
+ <province_slug>vienne</province_slug>
658
+ </province>
659
+ <province>
660
+ <id_departement>85</id_departement>
661
+ <id_region>12</id_region>
662
+ <code>87</code>
663
+ <name_province>Vienne (Haute)</name_province>
664
+ <name_province_uppercase>VIENNE (HAUTE)</name_province_uppercase>
665
+ <province_slug>vienne-haute</province_slug>
666
+ </province>
667
+ <province>
668
+ <id_departement>86</id_departement>
669
+ <id_region>13</id_region>
670
+ <code>88</code>
671
+ <name_province>Vosges</name_province>
672
+ <name_province_uppercase>VOSGES</name_province_uppercase>
673
+ <province_slug>vosges</province_slug>
674
+ </province>
675
+ <province>
676
+ <id_departement>87</id_departement>
677
+ <id_region>3</id_region>
678
+ <code>89</code>
679
+ <name_province>Yonne</name_province>
680
+ <name_province_uppercase>YONNE</name_province_uppercase>
681
+ <province_slug>yonne</province_slug>
682
+ </province>
683
+ <province>
684
+ <id_departement>88</id_departement>
685
+ <id_region>9</id_region>
686
+ <code>90</code>
687
+ <name_province>Belfort (Territoire de)</name_province>
688
+ <name_province_uppercase>BELFORT (TERRITOIRE DE)</name_province_uppercase>
689
+ <province_slug>belfort-territoire-de</province_slug>
690
+ </province>
691
+ <province>
692
+ <id_departement>89</id_departement>
693
+ <id_region>10</id_region>
694
+ <code>91</code>
695
+ <name_province>Essonne</name_province>
696
+ <name_province_uppercase>ESSONNE</name_province_uppercase>
697
+ <province_slug>essonne</province_slug>
698
+ </province>
699
+ <province>
700
+ <id_departement>90</id_departement>
701
+ <id_region>10</id_region>
702
+ <code>92</code>
703
+ <name_province>Hauts de Seine</name_province>
704
+ <name_province_uppercase>HAUTS DE SEINE</name_province_uppercase>
705
+ <province_slug>hauts-de-seine</province_slug>
706
+ </province>
707
+ <province>
708
+ <id_departement>91</id_departement>
709
+ <id_region>10</id_region>
710
+ <code>93</code>
711
+ <name_province>Seine Saint Denis</name_province>
712
+ <name_province_uppercase>SEINE SAINT DENIS</name_province_uppercase>
713
+ <province_slug>seine-saint-denis</province_slug>
714
+ </province>
715
+ <province>
716
+ <id_departement>92</id_departement>
717
+ <id_region>10</id_region>
718
+ <code>94</code>
719
+ <name_province>Val de Marne</name_province>
720
+ <name_province_uppercase>VAL DE MARNE</name_province_uppercase>
721
+ <province_slug>val-de-marne</province_slug>
722
+ </province>
723
+ <province>
724
+ <id_departement>93</id_departement>
725
+ <id_region>8</id_region>
726
+ <code>976</code>
727
+ <name_province>Mayotte</name_province>
728
+ <name_province_uppercase>MAYOTTE</name_province_uppercase>
729
+ <province_slug>mayotte</province_slug>
730
+ </province>
731
+ <province>
732
+ <id_departement>94</id_departement>
733
+ <id_region>8</id_region>
734
+ <code>971</code>
735
+ <name_province>Guadeloupe</name_province>
736
+ <name_province_uppercase>GUADELOUPE</name_province_uppercase>
737
+ <province_slug>guadeloupe</province_slug>
738
+ </province>
739
+ <province>
740
+ <id_departement>95</id_departement>
741
+ <id_region>8</id_region>
742
+ <code>973</code>
743
+ <name_province>Guyane</name_province>
744
+ <name_province_uppercase>GUYANE</name_province_uppercase>
745
+ <province_slug>guyane</province_slug>
746
+ </province>
747
+ <province>
748
+ <id_departement>96</id_departement>
749
+ <id_region>8</id_region>
750
+ <code>972</code>
751
+ <name_province>Martinique</name_province>
752
+ <name_province_uppercase>MARTINIQUE</name_province_uppercase>
753
+ <province_slug>martinique</province_slug>
754
+ </province>
755
+ <province>
756
+ <id_departement>97</id_departement>
757
+ <id_region>8</id_region>
758
+ <code>974</code>
759
+ <name_province>Réunion</name_province>
760
+ <name_province_uppercase>RÉUNION</name_province_uppercase>
761
+ <province_slug>reunion</province_slug>
762
+ </province>
763
+ <province>
764
+ <id_departement>98</id_departement>
765
+ <id_region>3</id_region>
766
+ <code>21</code>
767
+ <name_province>Côte d'or</name_province>
768
+ <name_province_uppercase>CÔTE D'OR</name_province_uppercase>
769
+ <province_slug>cote-dor</province_slug>
770
+ </province>
771
+ <province>
772
+ <id_departement>100</id_departement>
773
+ <id_region>4</id_region>
774
+ <code>22</code>
775
+ <name_province>Côtes d'armor</name_province>
776
+ <name_province_uppercase>CÔTES D'ARMOR</name_province_uppercase>
777
+ <province_slug>cotes-darmor</province_slug>
778
+ </province>
779
+ <province>
780
+ <id_departement>102</id_departement>
781
+ <id_region>7</id_region>
782
+ <code>2A</code>
783
+ <name_province>Corse du sud</name_province>
784
+ <name_province_uppercase>CORSE DU SUD</name_province_uppercase>
785
+ <province_slug>corse-du-sud</province_slug>
786
+ </province>
787
+ <province>
788
+ <id_departement>103</id_departement>
789
+ <id_region>7</id_region>
790
+ <code>2B</code>
791
+ <name_province>Haute corse</name_province>
792
+ <name_province_uppercase>HAUTE CORSE</name_province_uppercase>
793
+ <province_slug>haute-corse</province_slug>
794
+ </province>
795
+ <province>
796
+ <id_departement>104</id_departement>
797
+ <id_region>10</id_region>
798
+ <code>95</code>
799
+ <name_province>Val d'oise</name_province>
800
+ <name_province_uppercase>VAL D'OISE</name_province_uppercase>
801
+ <province_slug>val-doise</province_slug>
802
+ </province>
803
+ </regions>
@@ -0,0 +1,3 @@
1
+ module Windward
2
+ VERSION = "0.0.1"
3
+ end
data/lib/windward.rb ADDED
@@ -0,0 +1,70 @@
1
+ require "windward/version"
2
+ require 'mechanize'
3
+
4
+ module Windward
5
+
6
+ class Weather
7
+
8
+ def initialize
9
+ @departments = departments
10
+ @regions = load_data
11
+ end
12
+
13
+ def regions
14
+ @regions.keys
15
+ end
16
+
17
+ def region(name)
18
+ @regions[name]
19
+ end
20
+
21
+ def previsions(name)
22
+ @regions[name]["previsions"]
23
+ end
24
+
25
+ def reload
26
+ @regions = load_data
27
+ end
28
+
29
+ private
30
+ def departments
31
+ doc = Nokogiri::XML(open("./lib/data/regions.xml"))
32
+ provinces = doc.root.xpath("province")
33
+ departments = Hash.new
34
+ provinces.each do |p|
35
+ departments[p.at_xpath("code").text] = p.at_xpath("name_province").text
36
+ end
37
+ departments
38
+ end
39
+
40
+ def load_data
41
+ a = Mechanize.new
42
+ page = a.get('http://www.meteofrance.com/accueil')
43
+ page.encoding = 'utf-8'
44
+ data = page.parser.css("div.select-region")
45
+ regions = Hash.new
46
+ data.css("option").each do |option|
47
+ if option['data-type'] == "REG_FRANCE"
48
+ name = option.content
49
+ slug = option['data-slug']
50
+ value = option['value']
51
+ regions[name] = {"slug" => slug, "value" => value}
52
+ end
53
+ end
54
+ regions.each do |name,values|
55
+ data = page.parser.css("div##{values['value']}")
56
+ previsions = Hash.new
57
+ data.each do |datum|
58
+ temps = datum.css('span.picTemps').first.content.strip
59
+ temper = datum.css('span.temper').first.content.strip
60
+ department = @departments[datum['data-inseepp'][0..1]]
61
+ previsions[department] = {"temps" => temps, "temper" => temper}
62
+ end
63
+ regions[name] = regions[name].merge({"previsions" => previsions})
64
+ end
65
+ regions
66
+ end
67
+
68
+ end
69
+
70
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'windward'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Windward" do
4
+ describe "Weather" do
5
+ it "should get new windward weather" do
6
+ Windward::Weather.new.should_not be_nil
7
+ end
8
+ end
9
+ end
data/windward.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'windward/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "windward"
8
+ spec.version = Windward::VERSION
9
+ spec.authors = ["Yann VERY"]
10
+ spec.email = ["yann.very@gmail.com"]
11
+ spec.description = %q{Windward is a parser for meteofrance.fr\n You can retrieve informations like weather, temperature for each region of France.}
12
+ spec.summary = %q{A parser for meteofrance.fr}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "mechanize"
24
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: windward
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Yann VERY
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mechanize
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Windward is a parser for meteofrance.fr\n You can retrieve informations
56
+ like weather, temperature for each region of France.
57
+ email:
58
+ - yann.very@gmail.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - lib/data/regions.xml
69
+ - lib/windward.rb
70
+ - lib/windward/version.rb
71
+ - spec/spec_helper.rb
72
+ - spec/windward_spec.rb
73
+ - windward.gemspec
74
+ homepage: ''
75
+ licenses:
76
+ - MIT
77
+ metadata: {}
78
+ post_install_message:
79
+ rdoc_options: []
80
+ require_paths:
81
+ - lib
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ requirements: []
93
+ rubyforge_project:
94
+ rubygems_version: 2.0.3
95
+ signing_key:
96
+ specification_version: 4
97
+ summary: A parser for meteofrance.fr
98
+ test_files:
99
+ - spec/spec_helper.rb
100
+ - spec/windward_spec.rb