metar-parser 1.5.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -48
  3. data/Rakefile +2 -1
  4. data/lib/metar/data/base.rb +16 -10
  5. data/lib/metar/data/density_altitude.rb +16 -10
  6. data/lib/metar/data/direction.rb +10 -4
  7. data/lib/metar/data/distance.rb +27 -20
  8. data/lib/metar/data/lightning.rb +69 -60
  9. data/lib/metar/data/observer.rb +26 -20
  10. data/lib/metar/data/pressure.rb +28 -22
  11. data/lib/metar/data/remark.rb +146 -130
  12. data/lib/metar/data/runway_visible_range.rb +98 -78
  13. data/lib/metar/data/sky_condition.rb +68 -57
  14. data/lib/metar/data/speed.rb +21 -14
  15. data/lib/metar/data/station_code.rb +8 -4
  16. data/lib/metar/data/temperature.rb +21 -14
  17. data/lib/metar/data/temperature_and_dew_point.rb +22 -16
  18. data/lib/metar/data/time.rb +57 -47
  19. data/lib/metar/data/variable_wind.rb +30 -19
  20. data/lib/metar/data/vertical_visibility.rb +27 -21
  21. data/lib/metar/data/visibility.rb +91 -79
  22. data/lib/metar/data/visibility_remark.rb +16 -5
  23. data/lib/metar/data/weather_phenomenon.rb +92 -74
  24. data/lib/metar/data/wind.rb +105 -93
  25. data/lib/metar/data.rb +25 -23
  26. data/lib/metar/i18n.rb +5 -2
  27. data/lib/metar/parser.rb +46 -21
  28. data/lib/metar/raw.rb +32 -44
  29. data/lib/metar/report.rb +31 -20
  30. data/lib/metar/station.rb +29 -20
  31. data/lib/metar/version.rb +3 -1
  32. data/lib/metar.rb +2 -1
  33. data/locales/de.yml +1 -0
  34. data/locales/en.yml +1 -0
  35. data/locales/it.yml +1 -0
  36. data/locales/pt-BR.yml +1 -0
  37. data/spec/data/density_altitude_spec.rb +2 -1
  38. data/spec/data/distance_spec.rb +2 -1
  39. data/spec/data/lightning_spec.rb +26 -9
  40. data/spec/data/pressure_spec.rb +2 -0
  41. data/spec/data/remark_spec.rb +26 -9
  42. data/spec/data/runway_visible_range_spec.rb +71 -35
  43. data/spec/data/sky_condition_spec.rb +63 -19
  44. data/spec/data/speed_spec.rb +2 -0
  45. data/spec/data/temperature_spec.rb +2 -1
  46. data/spec/data/variable_wind_spec.rb +2 -0
  47. data/spec/data/vertical_visibility_spec.rb +4 -4
  48. data/spec/data/visibility_remark_spec.rb +2 -1
  49. data/spec/data/visibility_spec.rb +46 -25
  50. data/spec/data/weather_phenomenon_spec.rb +79 -24
  51. data/spec/data/wind_spec.rb +156 -38
  52. data/spec/i18n_spec.rb +2 -0
  53. data/spec/parser_spec.rb +192 -64
  54. data/spec/raw_spec.rb +40 -68
  55. data/spec/report_spec.rb +27 -25
  56. data/spec/spec_helper.rb +5 -6
  57. data/spec/station_spec.rb +92 -52
  58. metadata +53 -39
data/spec/raw_spec.rb CHANGED
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require 'spec_helper'
3
4
 
4
5
  require 'net/ftp'
@@ -29,7 +30,8 @@ describe Metar::Raw::Data do
29
30
 
30
31
  context "when called without a time parameter" do
31
32
  it "warns that the usage is deprecated" do
32
- expect { described_class.new(raw_metar) }.to output(/deprecated/).to_stderr
33
+ expect { described_class.new(raw_metar) }.
34
+ to output(/deprecated/).to_stderr
33
35
  end
34
36
  end
35
37
  end
@@ -51,9 +53,12 @@ describe Metar::Raw::Metar do
51
53
  expect(subject.time.day).to eq(31)
52
54
  end
53
55
 
54
- context "when the current day of month is greater than the METAR's day of month" do
56
+ context "when the current day of month " \
57
+ "is greater than the METAR's day of month" do
55
58
  let(:call_time) { Time.parse("2016-04-11 16:35") }
56
- let(:raw_metar) { "OPPS 092359Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011" }
59
+ let(:raw_metar) do
60
+ "OPPS 092359Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011"
61
+ end
57
62
 
58
63
  it "uses the date from the current month" do
59
64
  expect(subject.time.year).to eq(2016)
@@ -76,26 +81,27 @@ describe Metar::Raw::Metar do
76
81
  let(:raw_metar) { "OPPS 3123Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011" }
77
82
 
78
83
  it "throws an error" do
79
- expect { subject.time }
80
- .to raise_error(RuntimeError, /6 digit/)
84
+ expect { subject.time }.to raise_error(RuntimeError, /6 digit/)
81
85
  end
82
86
  end
83
87
 
84
88
  context "when the day of month in the datetime is > 31" do
85
- let(:raw_metar) { "OPPS 332359Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011" }
89
+ let(:raw_metar) do
90
+ "OPPS 332359Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011"
91
+ end
86
92
 
87
93
  it "throws an error" do
88
- expect { subject.time }
89
- .to raise_error(RuntimeError, /at most 31/)
94
+ expect { subject.time }.to raise_error(RuntimeError, /at most 31/)
90
95
  end
91
96
  end
92
97
 
93
98
  context "when the day of month in the datetime is 0" do
94
- let(:raw_metar) { "OPPS 002359Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011" }
99
+ let(:raw_metar) do
100
+ "OPPS 002359Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011"
101
+ end
95
102
 
96
103
  it "throws an error" do
97
- expect { subject.time }
98
- .to raise_error(RuntimeError, /greater than 0/)
104
+ expect { subject.time }.to raise_error(RuntimeError, /greater than 0/)
99
105
  end
100
106
  end
101
107
  end
@@ -106,80 +112,43 @@ describe Metar::Raw::Noaa do
106
112
 
107
113
  let(:cccc) { "ESSB" }
108
114
  let(:ftp) do
109
- double(Net::FTP, login: nil, chdir: nil, :passive= => nil, retrbinary: nil)
115
+ double(
116
+ Net::FTP,
117
+ chdir: nil,
118
+ close: nil,
119
+ login: nil,
120
+ :passive= => nil,
121
+ retrbinary: nil
122
+ )
110
123
  end
111
124
 
112
125
  before do
113
126
  allow(Net::FTP).to receive(:new) { ftp }
114
127
  end
115
128
 
116
- after do
117
- Metar::Raw::Noaa.send(:class_variable_set, '@@connection', nil)
118
- end
119
-
120
- context '.connection' do
121
- context 'uncached' do
122
- it 'sets up the connection' do
123
- Metar::Raw::Noaa.connect
124
-
125
- expect(Net::FTP).to have_received(:new)
126
- end
127
- end
128
-
129
- context 'cached' do
130
- before :each do
131
- Metar::Raw::Noaa.send(:class_variable_set, '@@connection', ftp)
132
- end
133
-
134
- it 'does not connect to FTP' do
135
- Metar::Raw::Noaa.connection
136
-
137
- expect(Net::FTP).to_not have_received(:new)
138
- end
139
-
140
- it 'returns the cached connection' do
141
- connection = Metar::Raw::Noaa.connection
142
-
143
- expect(connection).to eq(ftp)
144
- end
145
- end
146
- end
147
-
148
- context '.connect' do
149
- it 'sets up the connection' do
150
- Metar::Raw::Noaa.connect
151
-
152
- expect(Net::FTP).to have_received(:new)
153
- expect(ftp).to have_received(:login).with(no_args)
154
- expect(ftp).to have_received(:chdir).with('data/observations/metar/stations')
155
- expect(ftp).to have_received(:passive=).with(true)
156
- end
157
- end
158
-
159
129
  context '.fetch' do
160
130
  before do
161
- allow(ftp).to receive(:retrbinary).and_yield("chunk 1\n").and_yield("chunk 2\n")
162
- allow(ftp).to receive(:close)
163
- end
164
-
165
- it 'uses the connection' do
166
- Metar::Raw::Noaa.fetch('the_cccc')
167
-
168
- expect(Net::FTP).to have_received(:new)
169
- expect(ftp).to have_received(:close)
131
+ allow(ftp).
132
+ to receive(:retrbinary).and_yield("chunk 1\n").and_yield("chunk 2\n")
170
133
  end
171
134
 
172
135
  it 'downloads the raw report' do
173
136
  Metar::Raw::Noaa.fetch('the_cccc')
174
137
 
175
- expect(ftp).to have_received(:retrbinary).with('RETR the_cccc.TXT', kind_of(Fixnum))
176
- expect(ftp).to have_received(:close)
138
+ expect(ftp).
139
+ to have_received(:retrbinary).
140
+ with('RETR the_cccc.TXT', kind_of(Integer))
177
141
  end
178
142
 
179
143
  it 'returns the data' do
180
144
  raw = Metar::Raw::Noaa.fetch('the_cccc')
181
145
 
182
146
  expect(raw).to eq("chunk 1\nchunk 2\n")
147
+ end
148
+
149
+ it 'closes the connection' do
150
+ Metar::Raw::Noaa.fetch('the_cccc')
151
+
183
152
  expect(ftp).to have_received(:close)
184
153
  end
185
154
 
@@ -190,6 +159,7 @@ describe Metar::Raw::Noaa do
190
159
  allow(ftp).to receive(:retrbinary) do |_args, &block|
191
160
  @attempt += 1
192
161
  raise Net::FTPTempError if @attempt == 1
162
+
193
163
  block.call "chunk 1\n"
194
164
  block.call "chunk 2\n"
195
165
  end
@@ -244,7 +214,9 @@ describe Metar::Raw::Noaa do
244
214
  context "times" do
245
215
  let(:cccc) { "OPPS" }
246
216
  let(:raw_time) { "2016/03/31 23:59" }
247
- let(:raw_metar) { "OPPS 312359Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011" }
217
+ let(:raw_metar) do
218
+ "OPPS 312359Z 23006KT 4000 HZ SCT040 SCT100 17/12 Q1011"
219
+ end
248
220
 
249
221
  specify "are parsed as UTC/GMT" do
250
222
  expect(subject.time.zone).to eq("UTC").or eq("GMT")
data/spec/report_spec.rb CHANGED
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require "spec_helper"
3
4
 
4
5
  describe Metar::Report do
@@ -7,9 +8,9 @@ describe Metar::Report do
7
8
  double(
8
9
  Metar::Parser,
9
10
  station_code: station_code,
10
- date: Date.parse(metar_date),
11
- time: Time.parse(metar_datetime),
12
- observer: :real
11
+ date: Date.parse(metar_date),
12
+ time: Time.parse(metar_datetime),
13
+ observer: :real
13
14
  )
14
15
  end
15
16
  let(:station_code) { "SSSS" }
@@ -22,7 +23,8 @@ describe Metar::Report do
22
23
  end
23
24
 
24
25
  before do
25
- allow(Metar::Station).to receive(:find_by_cccc).with(station_code) { station }
26
+ allow(Metar::Station).
27
+ to receive(:find_by_cccc).with(station_code) { station }
26
28
  end
27
29
 
28
30
  subject { described_class.new(parser) }
@@ -75,15 +77,15 @@ describe Metar::Report do
75
77
 
76
78
  context 'proxied from parser' do
77
79
  context 'singly' do
78
- [
79
- :wind,
80
- :variable_wind,
81
- :visibility,
82
- :minimum_visibility,
83
- :vertical_visibility,
84
- :temperature,
85
- :dew_point,
86
- ].each do |attribute|
80
+ %i(
81
+ wind
82
+ variable_wind
83
+ visibility
84
+ minimum_visibility
85
+ vertical_visibility
86
+ temperature
87
+ dew_point
88
+ ).each do |attribute|
87
89
  example attribute do
88
90
  allow(parser).to receive(attribute) { attribute.to_s }
89
91
 
@@ -173,17 +175,17 @@ describe Metar::Report do
173
175
  end
174
176
 
175
177
  it "returns the full report" do
176
- expected = <<EOT
177
- name: Airport 1
178
- country: Wwwwww
179
- time: #{metar_time}
180
- wind: wind
181
- visibility: visibility
182
- minimum visibility: min visibility
183
- weather: pw
184
- sky: sky2
185
- temperature: temp
186
- EOT
178
+ expected = <<-EXPECTED.gsub(/^\s{10}/, "")
179
+ name: Airport 1
180
+ country: Wwwwww
181
+ time: #{metar_time}
182
+ wind: wind
183
+ visibility: visibility
184
+ minimum visibility: min visibility
185
+ weather: pw
186
+ sky: sky2
187
+ temperature: temp
188
+ EXPECTED
187
189
  expect(subject.to_s).to eq(expected)
188
190
  end
189
191
  end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec'
2
4
 
3
5
  if RUBY_VERSION > '1.9'
4
6
  require 'simplecov'
5
- if ENV[ 'COVERAGE' ]
7
+ if ENV['COVERAGE']
6
8
  SimpleCov.start do
7
9
  add_filter "/spec/"
8
10
  end
@@ -13,15 +15,12 @@ require File.expand_path(File.dirname(__FILE__) + '/../lib/metar')
13
15
 
14
16
  RSpec::Matchers.define :be_temperature_extreme do |extreme, value|
15
17
  match do |remark|
16
- if not remark.is_a?(Metar::Data::TemperatureExtreme)
18
+ if !remark.is_a?(Metar::Data::TemperatureExtreme)
17
19
  false
18
20
  elsif remark.extreme != extreme
19
21
  false
20
- elsif remark.value != value
21
- false
22
22
  else
23
- true
23
+ remark.value == value
24
24
  end
25
25
  end
26
26
  end
27
-
data/spec/station_spec.rb CHANGED
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require "spec_helper"
3
4
 
4
5
  require "stringio"
@@ -7,19 +8,48 @@ RSpec::Matchers.define :have_attribute do |attribute|
7
8
  match do |object|
8
9
  if !object.respond_to?(attribute)
9
10
  false
10
- elsif object.method(attribute).arity != 0
11
- false
12
11
  else
13
- true
12
+ object.method(attribute).arity == 0
14
13
  end
15
14
  end
16
15
  end
17
16
 
18
17
  describe Metar::Station do
19
18
  context "using structures" do
19
+ let(:response) { double(body: nsd_file) }
20
+
21
+ ##
22
+ # NOAA Station list fields:
23
+ #
24
+ # 0 1 2 3 45 6 7 8 9 10 11 12 13
25
+ # PPPP;00;000;Airport P1;;Ppppp;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
26
+ #
27
+ # 0 - CCCC
28
+ # 1 - ?
29
+ # 2 - ?
30
+ # 3 - name of station
31
+ # 4 - state
32
+ # 5 - country
33
+ # 6 - ?
34
+ # 7 - latitude1
35
+ # 8 - longitude1
36
+ # 9 - latitude2
37
+ # 10 - longitude2
38
+ # 11 - ?
39
+ # 12 - ?
40
+ # 13 - ?
41
+ #
42
+ let(:nsd_file) do
43
+ <<-TEXT.gsub(/^\s{8}/, "")
44
+ PPPP;00;000;Airport P1;;Ppppp;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
45
+ AAAA;00;000;Airport A1;;Aaaaa;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
46
+ AAAB;00;000;Airport A2;;Aaaaa;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
47
+ BBBA;00;000;Airport B1;;Bbbbb;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
48
+ TEXT
49
+ end
50
+
20
51
  before do
21
- allow(Metar::Station).to receive(:open)
22
- .with(Metar::Station::NOAA_STATION_LIST_URL) { nsd_file }
52
+ allow(Net::HTTP).to receive(:get_response) { response }
23
53
  end
24
54
 
25
55
  context ".countries" do
@@ -67,37 +97,6 @@ describe Metar::Station do
67
97
  expect(aaaaa.map(&:cccc)).to eq(%w(AAAA AAAB))
68
98
  end
69
99
  end
70
-
71
- ##
72
- # NOAA Station list fields:
73
- #
74
- # 0 1 2 3 45 6 7 8 9 10 11 12 13
75
- # PPPP;00;000;Airport P1;;Ppppp;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
76
- #
77
- # 0 - CCCC
78
- # 1 - ?
79
- # 2 - ?
80
- # 3 - name of station
81
- # 4 - state
82
- # 5 - country
83
- # 6 - ?
84
- # 7 - latitude1
85
- # 8 - longitude1
86
- # 9 - latitude2
87
- # 10 - longitude2
88
- # 11 - ?
89
- # 12 - ?
90
- # 13 - ?
91
- #
92
- def nsd_file
93
- nsd_text = <<-EOT.gsub(/^\s{8}/, "")
94
- PPPP;00;000;Airport P1;;Ppppp;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
95
- AAAA;00;000;Airport A1;;Aaaaa;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
96
- AAAB;00;000;Airport A2;;Aaaaa;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
97
- BBBA;00;000;Airport B1;;Bbbbb;1;11-03S;055-24E;11-03S;055-24E;000;000;P\r
98
- EOT
99
- StringIO.new(nsd_text)
100
- end
101
100
  end
102
101
 
103
102
  context ".to_longitude" do
@@ -105,6 +104,12 @@ describe Metar::Station do
105
104
  expect(Metar::Station.to_longitude("055-24E")).to eq(55.4)
106
105
  end
107
106
 
107
+ context "with Western values" do
108
+ it "returns negative results" do
109
+ expect(Metar::Station.to_longitude("055-24W")).to eq(-55.4)
110
+ end
111
+ end
112
+
108
113
  it "returns nil for badly formed strings" do
109
114
  expect(Metar::Station.to_longitude("aaa")).to be_nil
110
115
  end
@@ -112,7 +117,13 @@ describe Metar::Station do
112
117
 
113
118
  context ".to_latitude" do
114
119
  it "converts strings to latitude" do
115
- expect(Metar::Station.to_latitude("11-03S")).to eq(-11.05)
120
+ expect(Metar::Station.to_latitude("11-03N")).to eq(11.05)
121
+ end
122
+
123
+ context "with Southern values" do
124
+ it "returns negative results" do
125
+ expect(Metar::Station.to_latitude("11-03S")).to eq(-11.05)
126
+ end
116
127
  end
117
128
 
118
129
  it "returns nil for badly formed strings" do
@@ -124,22 +135,35 @@ describe Metar::Station do
124
135
  let(:name) { "Station name" }
125
136
  let(:state) { "State" }
126
137
  let(:country) { "Country" }
138
+ let(:longitude) { "055-24E" }
139
+ let(:latitude) { "11-03N" }
127
140
  let(:noaa_raw) do
128
- cccc +
129
- ";00;000;" +
130
- name + ";" +
131
- state + ";" +
132
- country + ";1;11-03S;055-24E;11-03S;055-24E;000;000;P"
141
+ [
142
+ cccc,
143
+ "00",
144
+ "000",
145
+ name,
146
+ state,
147
+ country,
148
+ "1",
149
+ latitude,
150
+ longitude,
151
+ latitude,
152
+ longitude,
153
+ "000",
154
+ "000",
155
+ "P"
156
+ ].join(";")
133
157
  end
134
158
  let(:noaa_data) do
135
159
  {
136
- cccc: cccc,
137
- name: name,
138
- state: state,
139
- country: country,
140
- longitude: "055-24E",
141
- latitude: "11-03S",
142
- raw: noaa_raw,
160
+ cccc: cccc,
161
+ name: name,
162
+ state: state,
163
+ country: country,
164
+ longitude: longitude,
165
+ latitude: latitude,
166
+ raw: noaa_raw
143
167
  }
144
168
  end
145
169
 
@@ -176,8 +200,24 @@ describe Metar::Station do
176
200
  specify { expect(subject.state).to eq(state) }
177
201
  specify { expect(subject.country).to eq(country) }
178
202
  specify { expect(subject.longitude).to eq(55.4) }
179
- specify { expect(subject.latitude).to eq(-11.05) }
203
+ specify { expect(subject.latitude).to eq(11.05) }
180
204
  specify { expect(subject.raw).to eq(noaa_raw) }
205
+
206
+ context "when longitude is Western" do
207
+ let(:longitude) { "055-24W" }
208
+
209
+ it "is parsed as negative" do
210
+ expect(subject.longitude).to eq(-55.4)
211
+ end
212
+ end
213
+
214
+ context "When latitude is Southern" do
215
+ let(:latitude) { "11-03S" }
216
+
217
+ it "is parsed as negative" do
218
+ expect(subject.latitude).to eq(-11.05)
219
+ end
220
+ end
181
221
  end
182
222
  end
183
223
 
@@ -185,7 +225,7 @@ describe Metar::Station do
185
225
  let(:metar) do
186
226
  "PAIL 061610Z 24006KT 1 3/4SM -SN BKN016 OVC030 M17/M20 A2910"
187
227
  end
188
- let(:time) { Date.new(2010, 02, 06) }
228
+ let(:time) { Date.new(2010, 2, 6) }
189
229
  let(:raw) { double(Metar::Raw, metar: metar, time: time) }
190
230
 
191
231
  before do
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metar-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Yates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-29 00:00:00.000000000 Z
11
+ date: 2023-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.7.0
19
+ version: 0.8.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.7.0
26
+ version: 0.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: m9t
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,21 +39,21 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.3.5
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: net-ftp
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.2'
48
- type: :development
47
+ version: '0'
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '3.2'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: simplecov
56
+ name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop
70
+ name: pry-doc
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,21 +81,21 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: timecop
84
+ name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 12.3.3
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 12.3.3
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry
98
+ name: rdoc
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,21 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: pry-doc
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.2'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - ">="
@@ -123,21 +137,21 @@ dependencies:
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
- name: rake
140
+ name: simplecov
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - "<"
143
+ - - ">="
130
144
  - !ruby/object:Gem::Version
131
- version: '11.0'
145
+ version: '0'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - "<"
150
+ - - ">="
137
151
  - !ruby/object:Gem::Version
138
- version: '11.0'
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
- name: rdoc
154
+ name: timecop
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - ">="
@@ -229,35 +243,35 @@ required_ruby_version: !ruby/object:Gem::Requirement
229
243
  requirements:
230
244
  - - ">="
231
245
  - !ruby/object:Gem::Version
232
- version: 2.2.0
246
+ version: 2.5.0
233
247
  required_rubygems_version: !ruby/object:Gem::Requirement
234
248
  requirements:
235
249
  - - ">="
236
250
  - !ruby/object:Gem::Version
237
251
  version: '0'
238
252
  requirements: []
239
- rubygems_version: 3.0.3
253
+ rubygems_version: 3.0.3.1
240
254
  signing_key:
241
255
  specification_version: 4
242
256
  summary: A Ruby gem for worldwide weather reports
243
257
  test_files:
244
- - spec/parser_spec.rb
245
- - spec/station_spec.rb
246
- - spec/i18n_spec.rb
247
- - spec/raw_spec.rb
248
258
  - spec/report_spec.rb
259
+ - spec/raw_spec.rb
260
+ - spec/data/wind_spec.rb
249
261
  - spec/data/pressure_spec.rb
250
- - spec/data/density_altitude_spec.rb
251
- - spec/data/remark_spec.rb
252
262
  - spec/data/weather_phenomenon_spec.rb
263
+ - spec/data/vertical_visibility_spec.rb
264
+ - spec/data/temperature_spec.rb
253
265
  - spec/data/sky_condition_spec.rb
254
266
  - spec/data/visibility_remark_spec.rb
255
267
  - spec/data/runway_visible_range_spec.rb
256
- - spec/data/variable_wind_spec.rb
257
- - spec/data/wind_spec.rb
258
- - spec/data/lightning_spec.rb
259
- - spec/data/vertical_visibility_spec.rb
260
- - spec/data/visibility_spec.rb
261
- - spec/data/temperature_spec.rb
262
268
  - spec/data/speed_spec.rb
269
+ - spec/data/visibility_spec.rb
270
+ - spec/data/remark_spec.rb
271
+ - spec/data/density_altitude_spec.rb
263
272
  - spec/data/distance_spec.rb
273
+ - spec/data/variable_wind_spec.rb
274
+ - spec/data/lightning_spec.rb
275
+ - spec/parser_spec.rb
276
+ - spec/station_spec.rb
277
+ - spec/i18n_spec.rb