metar-parser 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -32,7 +32,7 @@ Hello World
32
32
  This prints the latest weather report for Portland International Airport:
33
33
 
34
34
  ```ruby
35
- station = Metar::Station.find_by_cccc( 'KPDX' )
35
+ station = Metar::Station.find_by_cccc('KPDX')
36
36
  puts station.report.to_s
37
37
  ```
38
38
 
@@ -48,13 +48,13 @@ puts Metar::Station.countries
48
48
  Find a country's weather stations:
49
49
 
50
50
  ```ruby
51
- spanish = Metar::Station.find_all_by_country( 'Spain' )
51
+ spanish = Metar::Station.find_all_by_country('Spain')
52
52
  ```
53
53
 
54
54
  Get The Data
55
55
  ------------
56
56
  ```ruby
57
- station = Metar::Station.find_by_cccc( 'KPDX' )
57
+ station = Metar::Station.find_by_cccc('KPDX')
58
58
  parser = station.parser
59
59
  puts parser.temperature.value
60
60
  ```
@@ -63,8 +63,8 @@ Use Your Own Raw Data
63
63
  ---------------------
64
64
  ```ruby
65
65
  metar_string = "KHWD 280554Z AUTO 29007KT 10SM OVC008 14/12 A3002 RMK AO2 SLP176 T01390117 10211\n"
66
- raw = Metar::Raw::Data.new( metar_string )
67
- parser = Metar::Parser.new( raw )
66
+ raw = Metar::Raw::Data.new(metar_string)
67
+ parser = Metar::Parser.new(raw)
68
68
  ```
69
69
 
70
70
  Compliance
@@ -96,6 +96,7 @@ Contributors
96
96
 
97
97
  * [Joe Yates](https://github.com/joeyates)
98
98
  * [Derek Johnson](https://github.com/EpicDraws)
99
+ * [Florian Egermann and Mathias Wollin](https://github.com/math)
99
100
 
100
101
  Alternative Software
101
102
  ====================
data/lib/metar/data.rb CHANGED
@@ -110,6 +110,12 @@ module Metar
110
110
  new( Direction.new( $1 ),
111
111
  Speed.parse( $2 + $4 ),
112
112
  Speed.parse( $3 ) )
113
+ when s =~ /^VRB(\d{2})G(\d{2,3})(|MPS|KMH|KT)$/
114
+ speed = $1 + $3
115
+ gusts = $2 + $3
116
+ new( :variable_direction,
117
+ Speed.parse(speed),
118
+ Speed.parse(gusts))
113
119
  when s =~ /^VRB(\d{2}(|MPS|KMH|KT))$/
114
120
  new( :variable_direction,
115
121
  Speed.parse($1))
data/lib/metar/version.rb CHANGED
@@ -1,11 +1,10 @@
1
1
  module Metar
2
-
3
2
  module VERSION #:nodoc:
4
3
  MAJOR = 1
5
4
  MINOR = 1
6
- TINY = 3
5
+ TINY = 4
7
6
 
8
- STRING = [ MAJOR, MINOR, TINY ].join( '.' )
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
9
8
  end
10
-
11
9
  end
10
+
@@ -34,25 +34,36 @@ describe Metar::Wind do
34
34
  context '.parse' do
35
35
 
36
36
  [
37
+ # Direction and speed
37
38
  [ 'treats 5 digits as degrees and kilometers per hour', '12345', [ 123.0, 12.50, nil ] ],
38
39
  [ 'understands 5 digits + KMH', '12345KMH', [ 123.0, 12.50, nil ] ],
39
40
  [ 'understands 5 digits + MPS', '12345MPS', [ 123.0, 45.00, nil ] ],
40
41
  [ 'understands 5 digits + KT', '12345KT', [ 123.0, 23.15, nil ] ],
41
42
  [ 'rounds 360 down to 0', '36045KT', [ 0.0, 23.15, nil ] ],
42
43
  [ 'returns nil for directions outside 0 to 360', '88845KT', [ nil, nil, nil ] ],
44
+ # +gusts
43
45
  [ 'understands 5 digits + G + 2 digits', '12345G67', [ 123.0, 12.50, 18.61 ] ],
44
- [ 'understands 5 digits + G + 2 digits + MPS', '12345G67MPS', [ 123.0, 45.00, 67.00 ] ],
45
46
  [ 'understands 5 digits + G + 2 digits + KMH', '12345G67KMH', [ 123.0, 12.50, 18.61 ] ],
47
+ [ 'understands 5 digits + G + 2 digits + MPS', '12345G67MPS', [ 123.0, 45.00, 67.00 ] ],
46
48
  [ 'understands 5 digits + G + 2 digits + KT', '12345G67KT', [ 123.0, 23.15, 34.47 ] ],
49
+ # Variable direction
47
50
  [ 'understands VRB + 2 digits' 'VRB12', [ :variable_direction, 3.33, nil ] ],
48
51
  [ 'understands VRB + 2 digits + KMH', 'VRB12KMH', [ :variable_direction, 3.33, nil ] ],
49
52
  [ 'understands VRB + 2 digits + MPS', 'VRB12MPS', [ :variable_direction, 12.00, nil ] ],
50
53
  [ 'understands VRB + 2 digits + KT', 'VRB12KT', [ :variable_direction, 6.17, nil ] ],
54
+ # + gusts
55
+ [ 'understands VRB + 2 digits + G + 2 digits', 'VRB45G67', [ :variable_direction, 12.50, 18.61 ] ],
56
+ [ 'understands VRB + 2 digits + G + 2 digits + KMH', 'VRB45G67KMH', [ :variable_direction, 12.50, 18.61 ] ],
57
+ [ 'understands VRB + 2 digits + G + 2 digits + MPS', 'VRB45G67MPS', [ :variable_direction, 45.00, 67.00 ] ],
58
+ [ 'understands VRB + 2 digits + G + 2 digits + KT', 'VRB45G67KT', [ :variable_direction, 23.15, 34.47 ] ],
59
+ # Unknown direction
51
60
  [ 'understands /// + 2 digits', '///12', [ :unknown_direction, 3.33, nil ] ],
52
61
  [ 'understands /// + 2 digits + KMH', '///12KMH', [ :unknown_direction, 3.33, nil ] ],
53
62
  [ 'understands /// + 2 digits + MPS', '///12MPS', [ :unknown_direction, 12.00, nil ] ],
54
63
  [ 'understands /// + 2 digits + KT', '///12KT', [ :unknown_direction, 6.17, nil ] ],
64
+ # Unknown direction and speed
55
65
  [ 'understands /////', '/////', [ :unknown_direction, :unknown_speed, nil ] ],
66
+ # Bad data
56
67
  [ 'returns nil for badly formatted values', 'XYZ12KT', [ nil, nil, nil ] ],
57
68
  [ 'returns nil for nil', nil, [ nil, nil, nil ] ],
58
69
  ].each do | docstring, raw, expected |
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metar-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-14 00:00:00.000000000 Z
12
+ date: 2013-02-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -194,7 +194,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
194
  version: '0'
195
195
  segments:
196
196
  - 0
197
- hash: -3372405611005068870
197
+ hash: 256504047505018704
198
198
  required_rubygems_version: !ruby/object:Gem::Requirement
199
199
  none: false
200
200
  requirements:
@@ -203,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
203
  version: '0'
204
204
  segments:
205
205
  - 0
206
- hash: -3372405611005068870
206
+ hash: 256504047505018704
207
207
  requirements: []
208
208
  rubyforge_project: nowarning
209
209
  rubygems_version: 1.8.23