airports 1.4.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71054d19224dc546e049cfefd387542e8a085efeb1c4634add3a68394e9fe080
4
- data.tar.gz: 357a2beb36a3db8cb1508c1414dfdf327731d438b9ecf76eb0d47efdc7cfbb8d
3
+ metadata.gz: cd6eb797344db6298be1e177fe7a24372708f3656965a549a2bc363ecc8028f9
4
+ data.tar.gz: bb94c1025b93602d478a2babadcc38f6f03b28578428ea3d2bfd1246adb7fd66
5
5
  SHA512:
6
- metadata.gz: eccd4f723bd12442dc87d1815998727e3ae341df58d44574b712493c9335bc499fb328190a995f9aa2cc738e8b5a61215a28fc963b57354f4c423c9448758d01
7
- data.tar.gz: b6e8553d78442487173da7de7027cdbe59028de8245cb36578ba34ad201e471dcb0751cb313a707e7a8ddd10d5a99217e0c4340fa3be7888ef6f7c0f51a8aa5d
6
+ metadata.gz: e27d0d368ade101807f015ac7271f3b556d66d9e67aa96c2f325697c1fcd75e6bfb1b03e58a51996326fab224aa99d4c57169b0801534d5ed2df4eaee08eaac8
7
+ data.tar.gz: d28ea2d9e45464493eb7bdbfeb75a9ee1d4426bdc737160a7e430dc3da69a67ec76af30830a49b0d5faa13697eb7eda12782a6a954cff0bbaf8f0025bb83b013
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # v1.5.0 (5 December 2019)
2
+
3
+ * Support looking up airports by the name of the city they
4
+ are located in with `Airports.find_all_by_city_name` (@viral810, @timrogers)
5
+ * Refactor `Airports` so `Airport` objects are only generated once
6
+ and the code is cleaner (@timrogers)
7
+
1
8
  # v1.4.1 (14 November 2019)
2
9
 
3
10
  * Correct the time zone of Istanbul Airport (`IST`) (@aliismayilov)
data/airports.gemspec CHANGED
@@ -24,9 +24,9 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.required_ruby_version = ">= 2.4"
26
26
 
27
- spec.add_development_dependency "gc_ruboconfig", "~> 2.7.1"
27
+ spec.add_development_dependency "gc_ruboconfig", "~> 2.8.0"
28
28
  spec.add_development_dependency "pry", "~> 0.12.2"
29
- spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "rake", "~> 13.0"
30
30
  spec.add_development_dependency "rspec", "~> 3.9.0"
31
31
  spec.add_development_dependency "rspec-its", "~> 1.3.0"
32
32
  spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.0"
data/lib/airports.rb CHANGED
@@ -8,25 +8,17 @@ module Airports
8
8
  def self.find_by_iata_code(iata_code)
9
9
  return unless iata_code.length == 3
10
10
 
11
- airport_data = parsed_data.fetch(iata_code, nil)
12
-
13
- return unless airport_data
14
-
15
- Airport.
16
- new(airport_data.each_with_object({}) { |(k, v), h| h[k.to_sym] = v })
11
+ all.find { |airport| airport.iata == iata_code }
17
12
  end
18
13
 
19
14
  def self.find_by_icao_code(icao_code)
20
15
  return unless icao_code.length == 4
21
16
 
22
- airport_data = parsed_data.values.find do |data|
23
- data["icao"] == icao_code
24
- end
25
-
26
- return unless airport_data
17
+ all.find { |airport| airport.icao == icao_code }
18
+ end
27
19
 
28
- Airport.
29
- new(airport_data.each_with_object({}) { |(k, v), h| h[k.to_sym] = v })
20
+ def self.find_all_by_city_name(city_name)
21
+ all.select { |airport| airport.city.casecmp(city_name).zero? }
30
22
  end
31
23
 
32
24
  def self.iata_codes
@@ -34,9 +26,8 @@ module Airports
34
26
  end
35
27
 
36
28
  def self.all
37
- @all ||= parsed_data.map do |_iata_code, airport_data|
38
- Airport.
39
- new(airport_data.each_with_object({}) { |(k, v), h| h[k.to_sym] = v })
29
+ @all ||= parsed_data.values.map do |airport_data|
30
+ airport_from_parsed_data_element(airport_data)
40
31
  end
41
32
  end
42
33
 
@@ -44,6 +35,16 @@ module Airports
44
35
  @parsed_data ||= JSON.parse(data)
45
36
  end
46
37
 
38
+ def self.airport_from_parsed_data_element(parsed_data_element)
39
+ # TODO: Once we're using Ruby 2.5+, use Hash#transform_keys here to symbolize the keys
40
+ transformed_hash = parsed_data_element.each_with_object({}) do |(k, v), hash|
41
+ hash[k.to_sym] = v
42
+ end
43
+
44
+ Airport.new(transformed_hash)
45
+ end
46
+ private_class_method :airport_from_parsed_data_element
47
+
47
48
  def self.data
48
49
  @data ||= File.read(data_path)
49
50
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Airports
4
- VERSION = "1.4.1"
4
+ VERSION = "1.5.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airports
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Rogers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-24 00:00:00.000000000 Z
11
+ date: 2019-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gc_ruboconfig
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.7.1
19
+ version: 2.8.0
20
20
  type: :development
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: 2.7.1
26
+ version: 2.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '13.0'
48
48
  type: :development
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: '10.0'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement