metar-parser 0.9.10 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/metar.rb +6 -5
- data/lib/metar/parser.rb +5 -3
- data/lib/metar/raw.rb +25 -8
- data/lib/metar/report.rb +2 -0
- data/lib/metar/version.rb +1 -1
- metadata +3 -3
data/lib/metar.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require 'metar/raw'
|
2
|
+
require 'metar/station'
|
3
|
+
require 'metar/parser'
|
4
|
+
require 'metar/report'
|
5
|
+
require 'metar/version'
|
6
6
|
|
7
7
|
module Metar
|
8
8
|
|
@@ -15,3 +15,4 @@ module Metar
|
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
18
|
+
|
data/lib/metar/parser.rb
CHANGED
@@ -92,12 +92,14 @@ module Metar
|
|
92
92
|
parser
|
93
93
|
end
|
94
94
|
|
95
|
-
attr_reader :
|
95
|
+
attr_reader :raw, :metar, :time
|
96
|
+
attr_reader :station_code, :observer, :wind, :variable_wind, :visibility, :runway_visible_range,
|
96
97
|
:present_weather, :sky_conditions, :vertical_visibility, :temperature, :dew_point, :sea_level_pressure, :remarks
|
97
98
|
|
98
99
|
def initialize(raw)
|
99
|
-
@
|
100
|
-
@
|
100
|
+
@raw = raw
|
101
|
+
@metar = raw.metar.clone
|
102
|
+
@time = raw.time.clone
|
101
103
|
analyze
|
102
104
|
end
|
103
105
|
|
data/lib/metar/raw.rb
CHANGED
@@ -9,13 +9,16 @@ module Metar
|
|
9
9
|
|
10
10
|
class << self
|
11
11
|
|
12
|
-
|
13
12
|
def cache_connection
|
14
13
|
@@connection = connection
|
15
14
|
end
|
16
15
|
|
17
16
|
def connection
|
18
17
|
return @@connection if @@connection
|
18
|
+
connect
|
19
|
+
end
|
20
|
+
|
21
|
+
def connect
|
19
22
|
@@connection = Net::FTP.new('tgftp.nws.noaa.gov')
|
20
23
|
@@connection.login
|
21
24
|
@@connection.chdir('data/observations/metar/stations')
|
@@ -24,11 +27,20 @@ module Metar
|
|
24
27
|
end
|
25
28
|
|
26
29
|
def fetch( cccc )
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
+
attempts = 0
|
31
|
+
while attempts < 2
|
32
|
+
begin
|
33
|
+
s = ''
|
34
|
+
connection.retrbinary( "RETR #{ cccc }.TXT", 1024 ) do | chunk |
|
35
|
+
s << chunk
|
36
|
+
end
|
37
|
+
return s
|
38
|
+
rescue Net::FTPTempError, EOFError => e
|
39
|
+
connect
|
40
|
+
attempts += 1
|
41
|
+
end
|
30
42
|
end
|
31
|
-
|
43
|
+
raise "Net::FTP.retrbinary failed #{attempts} times"
|
32
44
|
end
|
33
45
|
|
34
46
|
end
|
@@ -54,6 +66,11 @@ module Metar
|
|
54
66
|
@time
|
55
67
|
end
|
56
68
|
|
69
|
+
def raw_time
|
70
|
+
fetch
|
71
|
+
@raw_time
|
72
|
+
end
|
73
|
+
|
57
74
|
def metar
|
58
75
|
fetch
|
59
76
|
@metar
|
@@ -68,9 +85,9 @@ module Metar
|
|
68
85
|
end
|
69
86
|
|
70
87
|
def parse( data )
|
71
|
-
@data
|
72
|
-
|
73
|
-
@time
|
88
|
+
@data = data
|
89
|
+
@raw_time, @metar = @data.split( "\n" )
|
90
|
+
@time = Time.parse( @raw_time )
|
74
91
|
end
|
75
92
|
|
76
93
|
end
|
data/lib/metar/report.rb
CHANGED
data/lib/metar/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metar-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 45
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 11
|
10
|
+
version: 0.9.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Joe Yates
|