air_quality_index 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -4
- data/air_quality_index-0.1.0.gem +0 -0
- data/lib/air_quality_index/city.rb +6 -0
- data/lib/air_quality_index/cli.rb +22 -2
- data/lib/air_quality_index/local_aqi.rb +66 -52
- data/lib/air_quality_index/nationwide_aqi.rb +46 -36
- data/lib/air_quality_index/version.rb +1 -1
- data/lib/air_quality_index.rb +2 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1ee3e1620339090347a5bf86ddf9726ee2987af
|
4
|
+
data.tar.gz: 49a16a9decdf18ffc06f04afe7bf2cd9fb61e527
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac007b3abb5e3c63551b2c1c8f4422c8e1e0053b38244c5513c3b886cfa5017fda958b82a60b7393bd8de63fb29e4056f256e07b14951a3219a1d277179e57c5
|
7
|
+
data.tar.gz: d4a2827b5d822d0a92c1a33be614b8085162d0311187a2ccd2208d35667b915b580a86f5688668d124138666904c3a2e9d98f3c7c18ec93ec744b198b33f6074
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# AirQualityIndex
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
This gem allows users to view the Air Quality Index rankings for specific US zip codes or view national AQI Rankings from AirNow.gov (https://airnow.gov/)
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
@@ -38,4 +36,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/'james
|
|
38
36
|
## License
|
39
37
|
|
40
38
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
41
|
-
|
Binary file
|
@@ -0,0 +1,6 @@
|
|
1
|
+
class AirQualityIndex::City
|
2
|
+
|
3
|
+
attr_accessor :location_city, :location_state, :todays_index, :location_city, :location_state, :current_aqi_index, :current_health_msg, :current_pm, :current_pm_msg, :current_ozone, :current_ozone_msg, :current_aqi_timestamp, :today_aqi, :today_aqi_msg, :today_ozone, :tomorrow_aqi, :tomorrow_aqi_msg, :tomorrow_ozone, :location_name_full, :index, :message, :link
|
4
|
+
|
5
|
+
|
6
|
+
end
|
@@ -39,10 +39,18 @@ class AirQualityIndex::CLI
|
|
39
39
|
#based on user input, call appropriate class method
|
40
40
|
case user_input
|
41
41
|
when '1'
|
42
|
-
|
42
|
+
if self.time_check
|
43
|
+
puts data_unavailable_message
|
44
|
+
else
|
45
|
+
AirQualityIndex::LocalAQI.new.call_from_zip_code
|
46
|
+
end
|
43
47
|
self.return_message
|
44
48
|
when '2'
|
45
|
-
|
49
|
+
if self.time_check
|
50
|
+
puts data_unavailable_message
|
51
|
+
else
|
52
|
+
AirQualityIndex::NationwideAQI.new.call
|
53
|
+
end
|
46
54
|
self.return_message
|
47
55
|
when '3'
|
48
56
|
AirQualityIndex::AQI_Information.new.call
|
@@ -64,4 +72,16 @@ class AirQualityIndex::CLI
|
|
64
72
|
puts ""
|
65
73
|
end
|
66
74
|
|
75
|
+
#check to see if current time is between midnight and 4am EST (Data Unavailable During This Time)
|
76
|
+
def time_check
|
77
|
+
time = Time.now.getlocal('-04:00')
|
78
|
+
time.hour.between?(0,4)
|
79
|
+
end
|
80
|
+
|
81
|
+
#data unavailability message if hours between midnight and 4am EST
|
82
|
+
def data_unavailable_message
|
83
|
+
puts ''
|
84
|
+
puts 'Updates for current conditions are not available between 12:00 a.m. and 4:00a.m. EST.'
|
85
|
+
end
|
86
|
+
|
67
87
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class AirQualityIndex::LocalAQI
|
2
2
|
|
3
|
-
attr_accessor :zip_code, :
|
3
|
+
attr_accessor :zip_code, :doc, :city
|
4
4
|
|
5
5
|
#instantiates new instance based on the Local AQI option in the CLI menu
|
6
6
|
def call_from_zip_code
|
@@ -15,16 +15,6 @@ class AirQualityIndex::LocalAQI
|
|
15
15
|
self.aqi_info_validation_return(self.doc)
|
16
16
|
end
|
17
17
|
|
18
|
-
#instantiates new instance from the Nationwide rankings based on user selection
|
19
|
-
def call_from_ranking(link)
|
20
|
-
|
21
|
-
#call scraper class method to access html of page based ranking
|
22
|
-
@doc = AirQualityIndex::Scraper.new.nationwide_scraper_more_info(link)
|
23
|
-
|
24
|
-
#return aqi information for ranked city
|
25
|
-
self.aqi_info_validation_return(self.doc)
|
26
|
-
end
|
27
|
-
|
28
18
|
# grab zip code from user for local aqi instance
|
29
19
|
def zip_code_grabber
|
30
20
|
|
@@ -60,91 +50,115 @@ class AirQualityIndex::LocalAQI
|
|
60
50
|
end
|
61
51
|
end
|
62
52
|
|
63
|
-
#
|
64
|
-
def
|
53
|
+
#passes ranked_city instance from the Nationwide rankings based on user selection
|
54
|
+
def call_from_ranking(ranked_city)
|
55
|
+
|
56
|
+
site_link = 'https://airnow.gov/'
|
57
|
+
|
58
|
+
#call scraper class method to access html of page based ranking
|
59
|
+
@doc = AirQualityIndex::Scraper.new.nationwide_scraper_more_info(site_link.concat(ranked_city.link))
|
60
|
+
|
61
|
+
#return aqi information for ranked city
|
62
|
+
self.aqi_info_validation_return(self.doc, ranked_city)
|
63
|
+
end
|
64
|
+
|
65
|
+
#check to see if page information is available based on scraped web site data (based on zip), otherwise proceed with aqi info pull
|
66
|
+
def aqi_info_validation_return(html, city = nil)
|
65
67
|
|
66
|
-
page_message =
|
68
|
+
page_message = html.search("h2").text.strip
|
67
69
|
|
68
70
|
if page_message.include? "does not currently have Air Quality data"
|
69
71
|
puts ""
|
70
72
|
puts page_message
|
71
73
|
else
|
72
74
|
#store information as local instance variables
|
73
|
-
self.local_aqi_index
|
75
|
+
self.local_aqi_index(city)
|
74
76
|
#return aqi index information
|
75
77
|
self.local_aqi_return
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
79
|
-
#grabs timestamp of aqi measurement
|
80
|
-
def timestamp
|
81
|
-
timestamp = self.doc.search("td.AQDataSectionTitle").css("small").text.split(" ")
|
82
|
-
timestamp[0].capitalize!
|
83
|
-
timestamp = timestamp.join(" ")
|
84
|
-
timestamp
|
85
|
-
end
|
86
|
-
|
87
81
|
#assign scraped information to instance variables
|
88
|
-
def local_aqi_index
|
82
|
+
def local_aqi_index(city)
|
89
83
|
|
90
84
|
#Store 'Data Unavailable Message' as variable. Each method below checks for a nil return and sets message if found.
|
91
85
|
unavailable_msg = "Data Not Currently Available"
|
92
86
|
|
87
|
+
#If a ranked city instance is supplied, set @city to this instance, otherwise, create a new city instance
|
88
|
+
if city.nil?
|
89
|
+
@city = AirQualityIndex::City.new
|
90
|
+
else
|
91
|
+
@city = ranked_city
|
92
|
+
end
|
93
|
+
|
93
94
|
#store location information
|
94
|
-
self.
|
95
|
-
self.
|
95
|
+
self.city.location_city = self.doc.search(".ActiveCity").text.strip
|
96
|
+
self.city.location_state = self.doc.search("a.Breadcrumb")[1].text.strip
|
96
97
|
|
97
98
|
#store aqi index
|
98
|
-
self.doc.at('.TblInvisible').css('tr td').children[1].nil?? self.current_aqi_index = unavailable_msg : self.current_aqi_index = self.doc.at('.TblInvisible').css('tr td').children[1].text.strip
|
99
|
-
self.doc.search("td.HealthMessage")[0].nil?? self.current_health_msg = unavailable_msg : self.current_health_msg = self.doc.search("td.HealthMessage")[0].text.strip[/(?<=Health Message: ).*/]
|
99
|
+
self.doc.at('.TblInvisible').css('tr td').children[1].nil?? self.city.current_aqi_index = unavailable_msg : self.city.current_aqi_index = self.doc.at('.TblInvisible').css('tr td').children[1].text.strip
|
100
|
+
self.doc.search("td.HealthMessage")[0].nil?? self.city.current_health_msg = unavailable_msg : self.city.current_health_msg = self.doc.search("td.HealthMessage")[0].text.strip[/(?<=Health Message: ).*/]
|
100
101
|
|
101
102
|
#store current aqi/ozone data
|
102
|
-
self.doc.search("table")[14].children.css("td")[4].nil?? self.current_pm = unavailable_msg : self.current_pm = self.doc.search("table")[14].children.css("td")[4].text.strip
|
103
|
-
self.doc.search("td.AQDataPollDetails")[3].nil?? self.current_pm_msg = unavailable_msg : self.current_pm_msg = self.doc.search("td.AQDataPollDetails")[3].text.strip
|
104
|
-
self.doc.search("table")[14].children.css("td")[1].nil?? self.current_ozone = unavailable_msg : self.current_ozone = self.doc.search("table")[14].children.css("td")[1].text.strip
|
105
|
-
self.doc.search("td.AQDataPollDetails")[1].nil?? self.current_ozone_msg = unavailable_msg : self.current_ozone_msg = self.doc.search("td.AQDataPollDetails")[1].text.strip
|
103
|
+
self.doc.search("table")[14].children.css("td")[4].nil?? self.city.current_pm = unavailable_msg : self.city.current_pm = self.doc.search("table")[14].children.css("td")[4].text.strip
|
104
|
+
self.doc.search("td.AQDataPollDetails")[3].nil?? self.city.current_pm_msg = unavailable_msg : self.city.current_pm_msg = self.doc.search("td.AQDataPollDetails")[3].text.strip
|
105
|
+
self.doc.search("table")[14].children.css("td")[1].nil?? self.city.current_ozone = unavailable_msg : self.city.current_ozone = self.doc.search("table")[14].children.css("td")[1].text.strip
|
106
|
+
self.doc.search("td.AQDataPollDetails")[1].nil?? self.city.current_ozone_msg = unavailable_msg : self.city.current_ozone_msg = self.doc.search("td.AQDataPollDetails")[1].text.strip
|
106
107
|
|
107
108
|
#Extract time from site
|
108
|
-
self.current_aqi_timestamp = self.timestamp
|
109
|
+
self.city.current_aqi_timestamp = self.timestamp
|
109
110
|
|
110
111
|
#store todays forecast data
|
111
|
-
self.doc.search("td.AQDataPollDetails")[7].nil?? self.today_aqi = unavailable_msg : self.today_aqi = self.doc.search("td.AQDataPollDetails")[7].text.strip
|
112
|
-
self.doc.search("td.HealthMessage")[1].nil?? self.today_aqi_msg = unavailable_msg : self.today_aqi_msg = self.doc.search("td.HealthMessage")[1].text.strip[/(?<=Health Message: ).*/]
|
113
|
-
self.doc.search("td.AQDataPollDetails")[5].nil?? self.today_ozone = unavailable_msg : self.today_ozone = self.doc.search("td.AQDataPollDetails")[5].text.strip
|
112
|
+
self.doc.search("td.AQDataPollDetails")[7].nil?? self.city.today_aqi = unavailable_msg : self.city.today_aqi = self.doc.search("td.AQDataPollDetails")[7].text.strip
|
113
|
+
self.doc.search("td.HealthMessage")[1].nil?? self.city.today_aqi_msg = unavailable_msg : self.city.today_aqi_msg = self.doc.search("td.HealthMessage")[1].text.strip[/(?<=Health Message: ).*/]
|
114
|
+
self.doc.search("td.AQDataPollDetails")[5].nil?? self.city.today_ozone = unavailable_msg : self.city.today_ozone = self.doc.search("td.AQDataPollDetails")[5].text.strip
|
114
115
|
|
115
116
|
#store tomorrows forecast data
|
116
|
-
self.doc.search("td.AQDataPollDetails")[11].nil?? self.tomorrow_aqi = unavailable_msg : self.tomorrow_aqi = self.doc.search("td.AQDataPollDetails")[11].text.strip
|
117
|
-
self.doc.search("td.HealthMessage")[2].nil?? self.tomorrow_aqi_msg = unavailable_msg : self.tomorrow_aqi_msg = self.doc.search("td.HealthMessage")[2].text.strip[/(?<=Health Message: ).*/]
|
118
|
-
self.doc.search("td.AQDataPollDetails")[9].nil?? self.tomorrow_ozone = unavailable_msg : self.tomorrow_ozone = self.doc.search("td.AQDataPollDetails")[9].text.strip
|
117
|
+
self.doc.search("td.AQDataPollDetails")[11].nil?? self.city.tomorrow_aqi = unavailable_msg : self.city.tomorrow_aqi = self.doc.search("td.AQDataPollDetails")[11].text.strip
|
118
|
+
self.doc.search("td.HealthMessage")[2].nil?? self.city.tomorrow_aqi_msg = unavailable_msg : self.city.tomorrow_aqi_msg = self.doc.search("td.HealthMessage")[2].text.strip[/(?<=Health Message: ).*/]
|
119
|
+
self.doc.search("td.AQDataPollDetails")[9].nil?? self.city.tomorrow_ozone = unavailable_msg : self.city.tomorrow_ozone = self.doc.search("td.AQDataPollDetails")[9].text.strip
|
119
120
|
|
120
121
|
#return self
|
121
122
|
self
|
122
123
|
end
|
123
124
|
|
125
|
+
#grabs timestamp of aqi measurement, if none available, sets to "Time Unavailable" and returns
|
126
|
+
def timestamp
|
127
|
+
timestamp = self.doc.search("td.AQDataSectionTitle").css("small").text.split(" ")
|
128
|
+
binding.pry
|
129
|
+
if timestamp != []
|
130
|
+
timestamp[0].capitalize!
|
131
|
+
timestamp = timestamp.join(" ")
|
132
|
+
else
|
133
|
+
timestamp = 'Time Unavailable'
|
134
|
+
end
|
135
|
+
timestamp
|
136
|
+
end
|
137
|
+
|
124
138
|
#return output message with scraped information
|
125
139
|
def local_aqi_return
|
126
140
|
|
127
141
|
puts <<-DOC
|
128
142
|
|
129
|
-
Current Conditions in #{self.
|
143
|
+
Current Conditions in #{self.city.location_city}, #{self.city.location_state} (#{self.city.current_aqi_timestamp}):
|
130
144
|
|
131
|
-
AQI: #{self.current_aqi_index}
|
132
|
-
Health Message: #{self.current_health_msg}
|
145
|
+
AQI: #{self.city.current_aqi_index}
|
146
|
+
Health Message: #{self.city.current_health_msg}
|
133
147
|
|
134
|
-
Ozone: #{self.current_ozone} (#{self.current_ozone_msg})
|
135
|
-
Particles (PM2.5): #{self.current_pm} (#{self.current_pm_msg})
|
148
|
+
Ozone: #{self.city.current_ozone} (#{self.city.current_ozone_msg})
|
149
|
+
Particles (PM2.5): #{self.city.current_pm} (#{self.city.current_pm_msg})
|
136
150
|
|
137
|
-
Today's Forecast in #{self.
|
151
|
+
Today's Forecast in #{self.city.location_city}, #{self.city.location_state}
|
138
152
|
|
139
|
-
AQI: #{self.today_aqi}
|
140
|
-
Ozone: #{self.today_ozone}
|
141
|
-
Health Message: #{self.today_aqi_msg}
|
153
|
+
AQI: #{self.city.today_aqi}
|
154
|
+
Ozone: #{self.city.today_ozone}
|
155
|
+
Health Message: #{self.city.today_aqi_msg}
|
142
156
|
|
143
|
-
Tomorrow's Forecast in #{self.
|
157
|
+
Tomorrow's Forecast in #{self.city.location_city}, #{self.city.location_state}
|
144
158
|
|
145
|
-
AQI: #{self.tomorrow_aqi}
|
146
|
-
Ozone: #{self.tomorrow_ozone}
|
147
|
-
Health Message: #{self.tomorrow_aqi_msg}
|
159
|
+
AQI: #{self.city.tomorrow_aqi}
|
160
|
+
Ozone: #{self.city.tomorrow_ozone}
|
161
|
+
Health Message: #{self.city.tomorrow_aqi_msg}
|
148
162
|
|
149
163
|
DOC
|
150
164
|
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
class AirQualityIndex::NationwideAQI
|
2
2
|
|
3
|
-
attr_accessor :todays_date, :national_aqi, :first_city, :
|
3
|
+
attr_accessor :todays_date, :national_aqi, :first_city, :second_city, :third_city, :fourth_city, :fifth_city, :html, :selected_city
|
4
4
|
|
5
5
|
#instantiates a new pull from AirNow.gov for the top 5 current rankings on air pollution
|
6
6
|
def call
|
7
|
+
|
7
8
|
self.get_nationwide_data
|
8
9
|
puts self.todays_rankings_output
|
9
10
|
self.get_more_info?
|
@@ -15,11 +16,11 @@ class AirQualityIndex::NationwideAQI
|
|
15
16
|
puts "Nationwide AQI Rankings for #{self.todays_date.month}/#{self.todays_date.day}/#{self.todays_date.year}"
|
16
17
|
puts ""
|
17
18
|
puts <<-DOC
|
18
|
-
1. #{self.first_city} - #{self.
|
19
|
-
2. #{self.second_city} - #{self.
|
20
|
-
3. #{self.third_city} - #{self.
|
21
|
-
4. #{self.fourth_city} - #{self.
|
22
|
-
5. #{self.fifth_city} - #{self.
|
19
|
+
1. #{self.first_city.location_name_full} - #{self.first_city.index} (#{self.first_city.message})
|
20
|
+
2. #{self.second_city.location_name_full} - #{self.second_city.index} (#{self.second_city.message})
|
21
|
+
3. #{self.third_city.location_name_full} - #{self.third_city.index} (#{self.third_city.message})
|
22
|
+
4. #{self.fourth_city.location_name_full} - #{self.fourth_city.index} (#{self.fourth_city.message})
|
23
|
+
5. #{self.fifth_city.location_name_full} - #{self.fifth_city.index} (#{self.fifth_city.message})
|
23
24
|
DOC
|
24
25
|
end
|
25
26
|
|
@@ -34,35 +35,45 @@ class AirQualityIndex::NationwideAQI
|
|
34
35
|
#scrape page for top ranking cities
|
35
36
|
@html = AirQualityIndex::Scraper.new.nationwide_aqi_scraper
|
36
37
|
|
37
|
-
#store first rank data
|
38
|
-
|
39
|
-
|
40
|
-
self.
|
41
|
-
self.
|
38
|
+
#create and store first rank data
|
39
|
+
@first_city = AirQualityIndex::City.new
|
40
|
+
|
41
|
+
self.first_city.location_name_full = self.html.search("a.NtnlSummaryCity")[0].text.strip
|
42
|
+
self.first_city.index = self.html.search("div.TabbedPanelsContent").children.css("tr td")[1].children.text.strip
|
43
|
+
self.first_city.message = aqi_message_set(self.first_city.index)
|
44
|
+
self.first_city.link = html.search("a.NtnlSummaryCity")[0]['href']
|
42
45
|
|
43
46
|
#store second rank data
|
44
|
-
|
45
|
-
|
46
|
-
self.
|
47
|
-
self.
|
47
|
+
@second_city = AirQualityIndex::City.new
|
48
|
+
|
49
|
+
self.second_city.location_name_full = self.html.search("a.NtnlSummaryCity")[1].text.strip
|
50
|
+
self.second_city.index = self.html.search("div.TabbedPanelsContent").children.css("tr td")[6].children.text.strip
|
51
|
+
self.second_city.message = aqi_message_set(self.second_city.index)
|
52
|
+
self.second_city.link = html.search("a.NtnlSummaryCity")[1]['href']
|
48
53
|
|
49
54
|
#store third rank data
|
50
|
-
|
51
|
-
|
52
|
-
self.
|
53
|
-
self.
|
55
|
+
@third_city = AirQualityIndex::City.new
|
56
|
+
|
57
|
+
self.third_city.location_name_full = self.html.search("a.NtnlSummaryCity")[2].text.strip
|
58
|
+
self.third_city.index = self.html.search("div.TabbedPanelsContent").children.css("tr td")[11].children.text.strip
|
59
|
+
self.third_city.message = aqi_message_set(self.third_city.index)
|
60
|
+
self.third_city.link = html.search("a.NtnlSummaryCity")[2]['href']
|
54
61
|
|
55
62
|
#store fourth rank data
|
56
|
-
|
57
|
-
|
58
|
-
self.
|
59
|
-
self.
|
63
|
+
@fourth_city = AirQualityIndex::City.new
|
64
|
+
|
65
|
+
self.fourth_city.location_name_full = self.html.search("a.NtnlSummaryCity")[3].text.strip
|
66
|
+
self.fourth_city.index = self.html.search("div.TabbedPanelsContent").children.css("tr td")[16].children.text.strip
|
67
|
+
self.fourth_city.message = aqi_message_set(self.fourth_city.index)
|
68
|
+
self.fourth_city.link = html.search("a.NtnlSummaryCity")[3]['href']
|
60
69
|
|
61
70
|
#store fifth rank data
|
62
|
-
|
63
|
-
|
64
|
-
self.
|
65
|
-
self.
|
71
|
+
@fifth_city = AirQualityIndex::City.new
|
72
|
+
|
73
|
+
self.fifth_city.location_name_full = self.html.search("a.NtnlSummaryCity")[4].text.strip
|
74
|
+
self.fifth_city.index = self.html.search("div.TabbedPanelsContent").children.css("tr td")[21].children.text.strip
|
75
|
+
self.fifth_city.message = aqi_message_set(self.fifth_city.index)
|
76
|
+
self.fifth_city.link = html.search("a.NtnlSummaryCity")[4]['href']
|
66
77
|
|
67
78
|
end
|
68
79
|
|
@@ -86,14 +97,13 @@ class AirQualityIndex::NationwideAQI
|
|
86
97
|
end
|
87
98
|
end
|
88
99
|
|
89
|
-
#asks user if they would like additional information on any of the ranked cities, if so,
|
100
|
+
#asks user if they would like additional information on any of the ranked cities, if so, passes selected city instance to the local_aqi method call and then returns instance
|
90
101
|
def get_more_info?
|
91
102
|
|
92
103
|
puts "Would you like local information for any of the cities listed? Please enter a numerical value 1-5, type 'exit' to end program, or type any other key to return to previous menu."
|
93
104
|
puts ""
|
94
105
|
|
95
|
-
|
96
|
-
city_info = nil
|
106
|
+
@selected_city = nil
|
97
107
|
|
98
108
|
#gets user input
|
99
109
|
user_input = gets.strip.downcase
|
@@ -101,21 +111,21 @@ class AirQualityIndex::NationwideAQI
|
|
101
111
|
#depending on user input, sets new local aqi instance to city_info variable
|
102
112
|
case user_input
|
103
113
|
when '1'
|
104
|
-
|
114
|
+
self.selected_city = AirQualityIndex::LocalAQI.new.call_from_ranking(self.first_city)
|
105
115
|
when '2'
|
106
|
-
|
116
|
+
self.selected_city = AirQualityIndex::LocalAQI.new.call_from_ranking(self.second_city)
|
107
117
|
when '3'
|
108
|
-
|
118
|
+
self.selected_city = AirQualityIndex::LocalAQI.new.call_from_ranking(self.third_city)
|
109
119
|
when '4'
|
110
|
-
|
120
|
+
self.selected_city = AirQualityIndex::LocalAQI.new.call_from_ranking(self.fourth_city)
|
111
121
|
when '5'
|
112
|
-
|
122
|
+
self.selected_city = AirQualityIndex::LocalAQI.new.call_from_ranking(self.fifth_city)
|
113
123
|
when 'exit'
|
114
124
|
exit!
|
115
125
|
end
|
116
126
|
|
117
127
|
#return city_info if user selected one
|
118
|
-
|
128
|
+
self.selected_city.local_aqi_return unless self.selected_city.nil?
|
119
129
|
|
120
130
|
end
|
121
131
|
|
data/lib/air_quality_index.rb
CHANGED
@@ -8,7 +8,8 @@ require_relative "./air_quality_index/cli"
|
|
8
8
|
require_relative "./air_quality_index/local_aqi"
|
9
9
|
require_relative "./air_quality_index/nationwide_aqi"
|
10
10
|
require_relative "./air_quality_index/aqi_info"
|
11
|
-
require_relative "./air_quality_index/scraper
|
11
|
+
require_relative "./air_quality_index/scraper"
|
12
|
+
require_relative "./air_quality_index/city"
|
12
13
|
|
13
14
|
module AirQualityIndex
|
14
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: air_quality_index
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "'Jameson Bass'"
|
@@ -53,12 +53,14 @@ files:
|
|
53
53
|
- NOTES.md
|
54
54
|
- README.md
|
55
55
|
- Rakefile
|
56
|
+
- air_quality_index-0.1.0.gem
|
56
57
|
- air_quality_index.gemspec
|
57
58
|
- bin/air-quality-index
|
58
59
|
- bin/console
|
59
60
|
- bin/setup
|
60
61
|
- lib/air_quality_index.rb
|
61
62
|
- lib/air_quality_index/aqi_info.rb
|
63
|
+
- lib/air_quality_index/city.rb
|
62
64
|
- lib/air_quality_index/cli.rb
|
63
65
|
- lib/air_quality_index/local_aqi.rb
|
64
66
|
- lib/air_quality_index/nationwide_aqi.rb
|