turkish_cities 0.1.2 → 0.1.3

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: e0522e7708e876a18f959cb45c4707a4d2490201a605c31b2175af4497369214
4
- data.tar.gz: '0853e0da391ef43b97806c40ee2094fdbc94901ff97dcd3f67ee6079428270da'
3
+ metadata.gz: d989f10ad83bcdcb075741115677daca3be317e0030d5dc4b265273e9a5fbeb9
4
+ data.tar.gz: 23a660a74d9708b27b297ce71f6d2627c74a0af99d976c182432df3ffc5de331
5
5
  SHA512:
6
- metadata.gz: 3fe106b6c80be5368c405b09679ad3af659fd5655438a4ed357b55802cd4a7f1dc261c83be5638e2144f97bd608198393216638de8591419764ae2223c6fc099
7
- data.tar.gz: ba31383c0eb87f4d79a5d4d779cb99fbf00a3aebeb15ead25c8afe2fb2865bee1c1fe1fe87bbb62e641fdf009afb0f880f5c6b76dd5ec6659b9783db2913d7c9
6
+ metadata.gz: 5e0a364e8d251692bf4c98792f02b26a8765b24321e7c0054c6a003055f63808903b82fd2271c4244364407f040e5f41058abe29f9a4ce100f3e25478a13c596
7
+ data.tar.gz: 1f62992e4e054526f1a1b396c6c0c3e2d23eda86024e0faa93024e3a26737ecdc95d4d23d9a23caea83c3a93882e3ab5a5b2864157f28edc338e291b398546a0
data/.rubocop.yml CHANGED
@@ -5,10 +5,18 @@ AllCops:
5
5
  - 'turkish_cities.gemspec'
6
6
  Layout/LineLength:
7
7
  Max: 100
8
+ Layout/SpaceAroundMethodCallOperator:
9
+ Enabled: true
10
+ Lint/RaiseException:
11
+ Enabled: true
12
+ Lint/StructNewOverride:
13
+ Enabled: true
8
14
  Metrics/BlockLength:
9
15
  ExcludedMethods: ['describe', 'context']
10
16
  Style/Documentation:
11
17
  Enabled: false
18
+ Style/ExponentialNotation:
19
+ Enabled: true
12
20
  Style/HashEachMethods:
13
21
  Enabled: true
14
22
  Style/HashTransformKeys:
@@ -17,4 +25,3 @@ Style/HashTransformKeys:
17
25
  Style/HashTransformValues:
18
26
  Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
19
27
  Enabled: true
20
-
data/CHANGELOG.md CHANGED
@@ -1,18 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.3 (2020-04-20)
4
+
5
+ ### New features
6
+
7
+ * [#22](https://github.com/sarslanoglu/turkish_cities/issues/22): Add region data to cities.yaml and update ```list_cities``` method to support regions
8
+ * [#20](https://github.com/sarslanoglu/turkish_cities/issues/20): Add city finding with phone code and vice versa. ```find_name_by_phone_code``` and ```find_phone_code_by_name``` methods are added
9
+
10
+ ### Bug fixes
11
+
12
+ * [#18](https://github.com/sarslanoglu/turkish_cities/issues/18): Fix yaml file read error while deploying apps to Heroku
13
+
3
14
  ## 0.1.2 (2020-04-13)
4
15
 
5
16
  ### New features
6
17
 
7
- * [#11](https://github.com/sarslanoglu/turkish_cities/pull/11): Change city_list data to yaml file format
18
+ * [#3](https://github.com/sarslanoglu/turkish_cities/issues/3): Change city_list data to yaml file format
8
19
 
9
20
  ### Bug fixes
10
21
 
11
- * [#6](https://github.com/sarslanoglu/turkish_cities/pull/6): Fix capital Turkish characters bug on cities with capital 'I' letter
22
+ * [#2](https://github.com/sarslanoglu/turkish_cities/issues/2): Fix capital Turkish characters bug on cities with capital 'I' letter
12
23
 
13
24
  ### Changes
14
25
 
15
- * [#16](https://github.com/sarslanoglu/turkish_cities/pull/16): Handle error messages at ```find_name_by_plate_number``` and ```find_plate_number_by_name``` methods
26
+ * [#15](https://github.com/sarslanoglu/turkish_cities/issues/15): Handle error messages at ```find_name_by_plate_number``` and ```find_plate_number_by_name``` methods
16
27
 
17
28
  ## 0.1.1 (2020-03-31)
18
29
 
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,38 @@
1
+ # Contributing
2
+
3
+ If you discover issues, have ideas for improvements or new features,
4
+ please report them to the [issue tracker][1] of the repository or
5
+ submit a pull request. Please, try to follow these guidelines when you
6
+ do so.
7
+
8
+ ## Guidelines
9
+
10
+ * Read [how to properly contribute to open source projects on GitHub][2].
11
+ * Fork the project.
12
+ * Write [good commit messages][3].
13
+ * Use the same coding conventions as the rest of the project.
14
+ * Commit and push until you are happy with your contribution.
15
+ * Make sure to add tests for it.
16
+ * Add an entry to the [Changelog](CHANGELOG.md) accordingly. See [changelog entry format](#changelog-entry-format).
17
+ * Make sure the test suite is passing and the code you wrote doesn't produce RuboCop offenses.
18
+ * [Squash related commits together][4].
19
+
20
+ ### Changelog entry format
21
+
22
+ Here are a few examples:
23
+
24
+ ```
25
+ * [#11](https://github.com/sarslanoglu/turkish_cities/pull/11): Change city_list data to yaml file format
26
+ * [#6](https://github.com/sarslanoglu/turkish_cities/pull/6): Fix capital Turkish characters bug on cities with capital 'I' letter
27
+ * [#16](https://github.com/sarslanoglu/turkish_cities/pull/16): Handle error messages at ```find_name_by_plate_number``` and ```find_plate_number_by_name``` methods
28
+ ```
29
+
30
+ * Mark it up in [Markdown syntax][5].
31
+ * The entry line should start with `* ` (an asterisk and a space).
32
+ * If the change has a related GitHub issue (e.g. a bug fix for a reported issue), put a link to the issue as `[#11](https://github.com/sarslanoglu/turkish_cities/issues/11): `.
33
+
34
+ [1]: https://github.com/sarslanoglu/turkish_cities/issues
35
+ [2]: https://www.gun.io/blog/how-to-github-fork-branch-and-pull-request
36
+ [3]: https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
37
+ [4]: http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
38
+ [5]: https://daringfireball.net/projects/markdown/syntax
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- turkish_cities (0.1.2)
4
+ turkish_cities (0.1.3)
5
5
  i18n (>= 0.6.4, <= 2)
6
6
 
7
7
  GEM
@@ -22,7 +22,7 @@ GEM
22
22
  jaro_winkler (1.5.4)
23
23
  json (2.3.0)
24
24
  parallel (1.19.1)
25
- parser (2.7.1.0)
25
+ parser (2.7.1.1)
26
26
  ast (~> 2.4.0)
27
27
  rainbow (3.0.0)
28
28
  rexml (3.2.4)
@@ -39,14 +39,14 @@ GEM
39
39
  diff-lcs (>= 1.2.0, < 2.0)
40
40
  rspec-support (~> 3.9.0)
41
41
  rspec-support (3.9.2)
42
- rubocop (0.80.1)
42
+ rubocop (0.82.0)
43
43
  jaro_winkler (~> 1.5.1)
44
44
  parallel (~> 1.10)
45
45
  parser (>= 2.7.0.1)
46
46
  rainbow (>= 2.2.2, < 4.0)
47
47
  rexml
48
48
  ruby-progressbar (~> 1.7)
49
- unicode-display_width (>= 1.4.0, < 1.7)
49
+ unicode-display_width (>= 1.4.0, < 2.0)
50
50
  ruby-progressbar (1.10.1)
51
51
  simplecov (0.16.1)
52
52
  docile (~> 1.1)
@@ -59,7 +59,7 @@ GEM
59
59
  thor (1.0.1)
60
60
  tins (1.24.1)
61
61
  sync
62
- unicode-display_width (1.6.1)
62
+ unicode-display_width (1.7.0)
63
63
 
64
64
  PLATFORMS
65
65
  ruby
@@ -68,7 +68,7 @@ DEPENDENCIES
68
68
  bundler (~> 2.1.4)
69
69
  coveralls (~> 0.8.23)
70
70
  rspec (~> 3.9.0)
71
- rubocop (~> 0.80.1)
71
+ rubocop (~> 0.82.0)
72
72
  turkish_cities!
73
73
 
74
74
  BUNDLED WITH
data/README.md CHANGED
@@ -49,6 +49,22 @@ TurkishCities.find_name_by_plate_number('78') # => "Karabük"
49
49
  TurkishCities.find_name_by_plate_number(100) # => 'Given value [100] is outside bounds of 1 to 81.'
50
50
  ```
51
51
 
52
+ ### Finding city name by phone code
53
+
54
+ There are 81 cities in Turkey. By calling a phone code between 212-488 will give city_name. All phone codes are even sending odd number will give error without searching
55
+
56
+ ```ruby
57
+ TurkishCities.find_name_by_phone_code(312) # => "Ankara"
58
+ TurkishCities.find_name_by_phone_code(242) # => "Antalya"
59
+ TurkishCities.find_name_by_phone_code(000222) # => "Eskişehir"
60
+ TurkishCities.find_name_by_phone_code(274.0) # => "Kütahya"
61
+ TurkishCities.find_name_by_phone_code('212') # => "İstanbul"
62
+ TurkishCities.find_name_by_phone_code(216) # => "İstanbul"
63
+ TurkishCities.find_name_by_phone_code(360) # => 'Couldn't find city name with phone code 360'
64
+ TurkishCities.find_name_by_phone_code(0) # => 'Given value [0] is outside bounds of 212 to 488.'
65
+ TurkishCities.find_name_by_phone_code(213) # => 'Given value [213] must be an even number.'
66
+ ```
67
+
52
68
  ### Finding plate number by city name
53
69
 
54
70
  City name can be given case and turkish character insensitive
@@ -57,10 +73,24 @@ City name can be given case and turkish character insensitive
57
73
  TurkishCities.find_plate_number_by_name('Ankara') # => 6
58
74
  TurkishCities.find_plate_number_by_name('Eskişehir') # => 26
59
75
  TurkishCities.find_plate_number_by_name('Canakkale') # => 17
76
+ TurkishCities.find_plate_number_by_name('Istanbul') # => 34
60
77
  TurkishCities.find_plate_number_by_name('kirsehir') # => 40
61
78
  TurkishCities.find_plate_number_by_name('falansehir') # => "Couldn't find city name with 'falansehir'"
62
79
  ```
63
80
 
81
+ ### Finding phone number by city name
82
+
83
+ City name can be given case and turkish character insensitive
84
+
85
+ ```ruby
86
+ TurkishCities.find_phone_code_by_name('Ankara') # => 312
87
+ TurkishCities.find_phone_code_by_name('Eskişehir') # => 222
88
+ TurkishCities.find_phone_code_by_name('Canakkale') # => 286
89
+ TurkishCities.find_phone_code_by_name('Istanbul') # => [212, 216]
90
+ TurkishCities.find_phone_code_by_name('kirsehir') # => 386
91
+ TurkishCities.find_phone_code_by_name('filansehir') # => "Couldn't find city name with 'filansehir'"
92
+ ```
93
+
64
94
  ### Listing all cities
65
95
 
66
96
  By default cities will be listed by their plate number ascending.
@@ -69,13 +99,19 @@ By default cities will be listed by their plate number ascending.
69
99
  TurkishCities.list_cities # => ["Adana", "Adıyaman" ... "Kilis", "Osmaniye", "Düzce"]
70
100
  ```
71
101
 
72
- While listing cities two additional parameters can be send ```alphabetically_sorted``` and ```metropolitan_municipality``` Both parameters can be send seperately and together.
102
+ While listing cities three additional parameters can be send ```alphabetically_sorted```, ```metropolitan_municipality``` and ```region```. All parameters can be send seperately and together.
73
103
 
74
104
  ```ruby
75
105
  TurkishCities.list_cities({ alphabetically_sorted: true })
76
106
  # => ["Adana", "Adıyaman" ... "Yalova", "Yozgat", "Zonguldak"]
77
107
  TurkishCities.list_cities({ metropolitan_municipality: true })
78
108
  # => ["Adana", "Ankara" ... "Trabzon", "Şanlıurfa", "Van"]
109
+ TurkishCities.list_cities({ region: 'Karadeniz' })
110
+ # => ["Amasya", "Artvin" ... "Bartın", "Karabük", "Düzce"]
111
+ TurkishCities.list_cities({ alphabetically_sorted: true, region: 'Karadeniz' })
112
+ # => ["Amasya", "Artvin" ... "Tokat", "Trabzon", "Zonguldak"]
113
+ TurkishCities.list_cities({ metropolitan_municipality: true, region: 'Karadeniz' })
114
+ # => ["Ordu", "Samsun", "Trabzon"]
79
115
  TurkishCities.list_cities({ alphabetically_sorted: true, metropolitan_municipality: true })
80
116
  # => ["Adana", "Ankara" ... "Tekirdağ", "Trabzon", "Van"]
81
117
  ```
@@ -90,15 +126,11 @@ TurkishCities.list_cities({ alphabetically_sorted: true, metropolitan_municipali
90
126
 
91
127
  ## Contributing
92
128
 
93
- 1. Fork it ( https://github.com/sarslanoglu/turkish_cities/fork )
94
- 2. Create your feature branch (`git checkout -b my-new-feature`)
95
- 3. Commit your changes (`git commit -am 'Add some feature'`)
96
- 4. Push to the branch (`git push origin my-new-feature`)
97
- 5. Create new Pull Request
129
+ Contributing guidelines are available [here](CONTRIBUTING.md).
98
130
 
99
131
  ## Changelog
100
132
 
101
- turkish_cities changelog is available [here](CHANGELOG.md).
133
+ Changelog is available [here](CHANGELOG.md).
102
134
 
103
135
  ## Copyright
104
136
 
@@ -6,45 +6,75 @@ require 'yaml'
6
6
  class City
7
7
  I18n.enforce_available_locales = false
8
8
 
9
- CITY_LIST = YAML.load_file('lib/turkish_cities/data/cities.yaml')
9
+ file_path = File.join(File.dirname(__FILE__), 'data/cities.yaml')
10
+ CITY_LIST = YAML.load_file(file_path)
10
11
 
11
12
  def find_by_id(plate_number)
12
- unless plate_number.to_i.between?(1, 81)
13
- raise RangeError, "Given value [#{plate_number}] is outside bounds of 1 to 81."
14
- end
13
+ check_input_range(plate_number, 1, 81)
15
14
 
16
15
  CITY_LIST.each do |city|
17
16
  return city['name'] if city['plate_number'] == plate_number.to_i
18
17
  end
19
18
  end
20
19
 
21
- def find_by_name(city_name)
20
+ def find_by_phone_code(phone_code)
21
+ check_input_range(phone_code, 212, 488)
22
+ check_phone_code(phone_code)
23
+
22
24
  CITY_LIST.each do |city|
23
- if convert_chars(city['name'].downcase(:turkic)) == convert_chars(city_name.downcase(:turkic))
24
- return city['plate_number']
25
+ if city['phone_code'].is_a?(Array)
26
+ return city['name'] if city['phone_code'].include?(phone_code.to_i)
27
+ elsif city['phone_code'] == phone_code.to_i
28
+ return city['name']
25
29
  end
26
30
  end
27
- "Couldn't find city name with '#{city_name}'"
31
+ "Couldn't find city name with phone code #{phone_code}"
28
32
  end
29
33
 
30
- def list_cities(options)
31
- if options[:metropolitan_municipality]
32
- city_list = CITY_LIST.map do |city|
33
- city unless city['metropolitan_municipality_since'].nil?
34
+ def find_by_name(city_name, return_type)
35
+ CITY_LIST.each do |city|
36
+ if convert_chars(city['name']) == convert_chars(city_name)
37
+ return return_type == 'plate_number' ? city['plate_number'] : city['phone_code']
34
38
  end
35
- city_list
36
- else
37
- city_list = CITY_LIST
38
39
  end
40
+ "Couldn't find city name with '#{city_name}'"
41
+ end
42
+
43
+ def list_cities(options)
44
+ city_list = CITY_LIST
45
+
46
+ city_list = filter_metropolitan_municipalities(city_list) if options[:metropolitan_municipality]
47
+ city_list = filter_regions(city_list, options[:region]) if options[:region]
39
48
 
40
- final_city_list = prepare_city_list(city_list.compact)
49
+ final_city_list = prepare_city_list(city_list)
41
50
  options[:alphabetically_sorted] ? sort_cities(final_city_list) : final_city_list
42
51
  end
43
52
 
44
53
  private
45
54
 
55
+ def check_input_range(input, min, max)
56
+ return if input.to_i.between?(min, max)
57
+
58
+ raise RangeError, "Given value [#{input}] is outside bounds of #{min} to #{max}."
59
+ end
60
+
61
+ def check_phone_code(input)
62
+ return if input.to_i.even?
63
+
64
+ raise ArgumentError, "Given value [#{input}] must be an even number."
65
+ end
66
+
46
67
  def convert_chars(string)
47
- I18n.transliterate(string)
68
+ I18n.transliterate(string.downcase(:turkic))
69
+ end
70
+
71
+ def filter_metropolitan_municipalities(city_list)
72
+ city_list.map { |city| city unless city['metropolitan_municipality_since'].nil? }.compact
73
+ end
74
+
75
+ def filter_regions(city_list, region)
76
+ region = convert_chars(region.to_s)
77
+ city_list.map { |city| city if convert_chars(city['region']) == region }.compact
48
78
  end
49
79
 
50
80
  def prepare_city_list(city_list)
@@ -3,403 +3,484 @@
3
3
  name: 'Adana'
4
4
  phone_code: 322
5
5
  metropolitan_municipality_since: 1986
6
+ region: 'Akdeniz'
6
7
  -
7
8
  plate_number: 2
8
9
  name: 'Adıyaman'
9
10
  phone_code: 416
10
11
  metropolitan_municipality_since: null
12
+ region: 'Güneydoğu Anadolu'
11
13
  -
12
14
  plate_number: 3
13
15
  name: 'Afyon'
14
16
  phone_code: 272
15
17
  metropolitan_municipality_since: null
18
+ region: 'Ege'
16
19
  -
17
20
  plate_number: 4
18
21
  name: 'Ağrı'
19
22
  phone_code: 472
20
23
  metropolitan_municipality_since: null
24
+ region: 'Doğu Anadolu'
21
25
  -
22
26
  plate_number: 5
23
27
  name: 'Amasya'
24
28
  phone_code: 358
25
29
  metropolitan_municipality_since: null
30
+ region: 'Karadeniz'
26
31
  -
27
32
  plate_number: 6
28
33
  name: 'Ankara'
29
34
  phone_code: 312
30
35
  metropolitan_municipality_since: 1984
36
+ region: 'İç Anadolu'
31
37
  -
32
38
  plate_number: 7
33
39
  name: 'Antalya'
34
40
  phone_code: 242
35
41
  metropolitan_municipality_since: 1993
42
+ region: 'Akdeniz'
36
43
  -
37
44
  plate_number: 8
38
45
  name: 'Artvin'
39
46
  phone_code: 466
40
47
  metropolitan_municipality_since: null
48
+ region: 'Karadeniz'
41
49
  -
42
50
  plate_number: 9
43
51
  name: 'Aydın'
44
52
  phone_code: 256
45
53
  metropolitan_municipality_since: 2012
54
+ region: 'Ege'
46
55
  -
47
56
  plate_number: 10
48
57
  name: 'Balıkesir'
49
58
  phone_code: 266
50
59
  metropolitan_municipality_since: 2012
60
+ region: 'Marmara'
51
61
  -
52
62
  plate_number: 11
53
63
  name: 'Bilecik'
54
64
  phone_code: 228
55
65
  metropolitan_municipality_since: null
66
+ region: 'Marmara'
56
67
  -
57
68
  plate_number: 12
58
69
  name: 'Bingöl'
59
70
  phone_code: 426
60
71
  metropolitan_municipality_since: null
72
+ region: 'Doğu Anadolu'
61
73
  -
62
74
  plate_number: 13
63
75
  name: 'Bitlis'
64
76
  phone_code: 434
65
77
  metropolitan_municipality_since: null
78
+ region: 'Doğu Anadolu'
66
79
  -
67
80
  plate_number: 14
68
81
  name: 'Bolu'
69
82
  phone_code: 374
70
83
  metropolitan_municipality_since: null
84
+ region: 'Karadeniz'
71
85
  -
72
86
  plate_number: 15
73
87
  name: 'Burdur'
74
88
  phone_code: 248
75
89
  metropolitan_municipality_since: null
90
+ region: 'Akdeniz'
76
91
  -
77
92
  plate_number: 16
78
93
  name: 'Bursa'
79
94
  phone_code: 224
80
95
  metropolitan_municipality_since: 1987
96
+ region: 'Marmara'
81
97
  -
82
98
  plate_number: 17
83
99
  name: 'Çanakkale'
84
100
  phone_code: 286
85
101
  metropolitan_municipality_since: null
102
+ region: 'Marmara'
86
103
  -
87
104
  plate_number: 18
88
105
  name: 'Çankırı'
89
106
  phone_code: 376
90
107
  metropolitan_municipality_since: null
108
+ region: 'İç Anadolu'
91
109
  -
92
110
  plate_number: 19
93
111
  name: 'Çorum'
94
112
  phone_code: 364
95
113
  metropolitan_municipality_since: null
114
+ region: 'Karadeniz'
96
115
  -
97
116
  plate_number: 20
98
117
  name: 'Denizli'
99
118
  phone_code: 258
100
119
  metropolitan_municipality_since: 2012
120
+ region: 'Ege'
101
121
  -
102
122
  plate_number: 21
103
123
  name: 'Diyarbakır'
104
124
  phone_code: 412
105
125
  metropolitan_municipality_since: 1993
126
+ region: 'Güneydoğu Anadolu'
106
127
  -
107
128
  plate_number: 22
108
129
  name: 'Edirne'
109
130
  phone_code: 284
110
131
  metropolitan_municipality_since: null
132
+ region: 'Marmara'
111
133
  -
112
134
  plate_number: 23
113
135
  name: 'Elazığ'
114
136
  phone_code: 424
115
137
  metropolitan_municipality_since: null
138
+ region: 'Doğu Anadolu'
116
139
  -
117
140
  plate_number: 24
118
141
  name: 'Erzincan'
119
142
  phone_code: 446
120
143
  metropolitan_municipality_since: null
144
+ region: 'Doğu Anadolu'
121
145
  -
122
146
  plate_number: 25
123
147
  name: 'Erzurum'
124
148
  phone_code: 442
125
149
  metropolitan_municipality_since: 1993
150
+ region: 'Doğu Anadolu'
126
151
  -
127
152
  plate_number: 26
128
153
  name: 'Eskişehir'
129
154
  phone_code: 222
130
155
  metropolitan_municipality_since: 1993
156
+ region: 'İç Anadolu'
131
157
  -
132
158
  plate_number: 27
133
159
  name: 'Gaziantep'
134
160
  phone_code: 342
135
161
  metropolitan_municipality_since: 1987
162
+ region: 'Güneydoğu Anadolu'
136
163
  -
137
164
  plate_number: 28
138
165
  name: 'Giresun'
139
166
  phone_code: 454
140
167
  metropolitan_municipality_since: null
168
+ region: 'Karadeniz'
141
169
  -
142
170
  plate_number: 29
143
171
  name: 'Gümüşhane'
144
172
  phone_code: 456
145
173
  metropolitan_municipality_since: null
174
+ region: 'Karadeniz'
146
175
  -
147
176
  plate_number: 30
148
177
  name: 'Hakkari'
149
178
  phone_code: 438
150
179
  metropolitan_municipality_since: null
180
+ region: 'Doğu Anadolu'
151
181
  -
152
182
  plate_number: 31
153
183
  name: 'Hatay'
154
184
  phone_code: 326
155
185
  metropolitan_municipality_since: 2012
186
+ region: 'Akdeniz'
156
187
  -
157
188
  plate_number: 32
158
189
  name: 'Isparta'
159
190
  phone_code: 246
160
191
  metropolitan_municipality_since: null
192
+ region: 'Akdeniz'
161
193
  -
162
194
  plate_number: 33
163
195
  name: 'Mersin'
164
196
  phone_code: 324
165
197
  metropolitan_municipality_since: 1993
198
+ region: 'Akdeniz'
166
199
  -
167
200
  plate_number: 34
168
201
  name: 'İstanbul'
169
202
  phone_code: [212,216]
170
203
  metropolitan_municipality_since: 1984
204
+ region: 'Marmara'
171
205
  -
172
206
  plate_number: 35
173
207
  name: 'İzmir'
174
208
  phone_code: 232
175
209
  metropolitan_municipality_since: 1984
210
+ region: 'Ege'
176
211
  -
177
212
  plate_number: 36
178
213
  name: 'Kars'
179
214
  phone_code: 474
180
215
  metropolitan_municipality_since: null
216
+ region: 'Doğu Anadolu'
181
217
  -
182
218
  plate_number: 37
183
219
  name: 'Kastamonu'
184
220
  phone_code: 366
185
221
  metropolitan_municipality_since: null
222
+ region: 'Karadeniz'
186
223
  -
187
224
  plate_number: 38
188
225
  name: 'Kayseri'
189
226
  phone_code: 352
190
227
  metropolitan_municipality_since: 1988
228
+ region: 'İç Anadolu'
191
229
  -
192
230
  plate_number: 39
193
231
  name: 'Kırklareli'
194
232
  phone_code: 288
195
233
  metropolitan_municipality_since: null
234
+ region: 'Marmara'
196
235
  -
197
236
  plate_number: 40
198
237
  name: 'Kırşehir'
199
238
  phone_code: 386
200
239
  metropolitan_municipality_since: null
240
+ region: 'İç Anadolu'
201
241
  -
202
242
  plate_number: 41
203
243
  name: 'Kocaeli'
204
244
  phone_code: 262
205
245
  metropolitan_municipality_since: 1993
246
+ region: 'Marmara'
206
247
  -
207
248
  plate_number: 42
208
249
  name: 'Konya'
209
250
  phone_code: 332
210
251
  metropolitan_municipality_since: 1987
252
+ region: 'İç Anadolu'
211
253
  -
212
254
  plate_number: 43
213
255
  name: 'Kütahya'
214
256
  phone_code: 274
215
257
  metropolitan_municipality_since: null
258
+ region: 'Ege'
216
259
  -
217
260
  plate_number: 44
218
261
  name: 'Malatya'
219
262
  phone_code: 422
220
263
  metropolitan_municipality_since: 2012
264
+ region: 'Doğu Anadolu'
221
265
  -
222
266
  plate_number: 45
223
267
  name: 'Manisa'
224
268
  phone_code: 236
225
269
  metropolitan_municipality_since: 2012
270
+ region: 'Ege'
226
271
  -
227
272
  plate_number: 46
228
273
  name: 'Kahramanmaraş'
229
274
  phone_code: 344
230
275
  metropolitan_municipality_since: 2012
276
+ region: 'Akdeniz'
231
277
  -
232
278
  plate_number: 47
233
279
  name: 'Mardin'
234
280
  phone_code: 482
235
281
  metropolitan_municipality_since: 2012
282
+ region: 'Güneydoğu Anadolu'
236
283
  -
237
284
  plate_number: 48
238
285
  name: 'Muğla'
239
286
  phone_code: 252
240
287
  metropolitan_municipality_since: 2012
288
+ region: 'Ege'
241
289
  -
242
290
  plate_number: 49
243
291
  name: 'Muş'
244
292
  phone_code: 436
245
293
  metropolitan_municipality_since: null
294
+ region: 'Doğu Anadolu'
246
295
  -
247
296
  plate_number: 50
248
297
  name: 'Nevşehir'
249
298
  phone_code: 384
250
299
  metropolitan_municipality_since: null
300
+ region: 'İç Anadolu'
251
301
  -
252
302
  plate_number: 51
253
303
  name: 'Niğde'
254
304
  phone_code: 388
255
305
  metropolitan_municipality_since: null
306
+ region: 'İç Anadolu'
256
307
  -
257
308
  plate_number: 52
258
309
  name: 'Ordu'
259
310
  phone_code: 452
260
311
  metropolitan_municipality_since: 2012
312
+ region: 'Karadeniz'
261
313
  -
262
314
  plate_number: 53
263
315
  name: 'Rize'
264
316
  phone_code: 464
265
317
  metropolitan_municipality_since: null
318
+ region: 'Karadeniz'
266
319
  -
267
320
  plate_number: 54
268
321
  name: 'Sakarya'
269
322
  phone_code: 264
270
323
  metropolitan_municipality_since: 2000
324
+ region: 'Marmara'
271
325
  -
272
326
  plate_number: 55
273
327
  name: 'Samsun'
274
328
  phone_code: 362
275
329
  metropolitan_municipality_since: 1993
330
+ region: 'Karadeniz'
276
331
  -
277
332
  plate_number: 56
278
333
  name: 'Siirt'
279
334
  phone_code: 484
280
335
  metropolitan_municipality_since: null
336
+ region: 'Güneydoğu Anadolu'
281
337
  -
282
338
  plate_number: 57
283
339
  name: 'Sinop'
284
340
  phone_code: 368
285
341
  metropolitan_municipality_since: null
342
+ region: 'Karadeniz'
286
343
  -
287
344
  plate_number: 58
288
345
  name: 'Sivas'
289
346
  phone_code: 346
290
347
  metropolitan_municipality_since: null
348
+ region: 'İç Anadolu'
291
349
  -
292
350
  plate_number: 59
293
351
  name: 'Tekirdağ'
294
352
  phone_code: 282
295
353
  metropolitan_municipality_since: 2012
354
+ region: 'Marmara'
296
355
  -
297
356
  plate_number: 60
298
357
  name: 'Tokat'
299
358
  phone_code: 356
300
359
  metropolitan_municipality_since: null
360
+ region: 'Karadeniz'
301
361
  -
302
362
  plate_number: 61
303
363
  name: 'Trabzon'
304
364
  phone_code: 462
305
365
  metropolitan_municipality_since: 2012
366
+ region: 'Karadeniz'
306
367
  -
307
368
  plate_number: 62
308
369
  name: 'Tunceli'
309
370
  phone_code: 428
310
371
  metropolitan_municipality_since: null
372
+ region: 'Doğu Anadolu'
311
373
  -
312
374
  plate_number: 63
313
375
  name: 'Şanlıurfa'
314
376
  phone_code: 414
315
377
  metropolitan_municipality_since: 2012
378
+ region: 'Güneydoğu Anadolu'
316
379
  -
317
380
  plate_number: 64
318
381
  name: 'Uşak'
319
382
  phone_code: 276
320
383
  metropolitan_municipality_since: null
384
+ region: 'Ege'
321
385
  -
322
386
  plate_number: 65
323
387
  name: 'Van'
324
388
  phone_code: 432
325
389
  metropolitan_municipality_since: 2012
390
+ region: 'Doğu Anadolu'
326
391
  -
327
392
  plate_number: 66
328
393
  name: 'Yozgat'
329
394
  phone_code: 354
330
395
  metropolitan_municipality_since: null
396
+ region: 'İç Anadolu'
331
397
  -
332
398
  plate_number: 67
333
399
  name: 'Zonguldak'
334
400
  phone_code: 372
335
401
  metropolitan_municipality_since: null
402
+ region: 'Karadeniz'
336
403
  -
337
404
  plate_number: 68
338
405
  name: 'Aksaray'
339
406
  phone_code: 382
340
407
  metropolitan_municipality_since: null
408
+ region: 'İç Anadolu'
341
409
  -
342
410
  plate_number: 69
343
411
  name: 'Bayburt'
344
412
  phone_code: 458
345
413
  metropolitan_municipality_since: null
414
+ region: 'Karadeniz'
346
415
  -
347
416
  plate_number: 70
348
417
  name: 'Karaman'
349
418
  phone_code: 338
350
419
  metropolitan_municipality_since: null
420
+ region: 'İç Anadolu'
351
421
  -
352
422
  plate_number: 71
353
423
  name: 'Kırıkkale'
354
424
  phone_code: 318
355
425
  metropolitan_municipality_since: null
426
+ region: 'İç Anadolu'
356
427
  -
357
428
  plate_number: 72
358
429
  name: 'Batman'
359
430
  phone_code: 488
360
431
  metropolitan_municipality_since: null
432
+ region: 'Güneydoğu Anadolu'
361
433
  -
362
434
  plate_number: 73
363
435
  name: 'Şırnak'
364
436
  phone_code: 486
365
437
  metropolitan_municipality_since: null
438
+ region: 'Güneydoğu Anadolu'
366
439
  -
367
440
  plate_number: 74
368
441
  name: 'Bartın'
369
442
  phone_code: 378
370
443
  metropolitan_municipality_since: null
444
+ region: 'Karadeniz'
371
445
  -
372
446
  plate_number: 75
373
447
  name: 'Ardahan'
374
448
  phone_code: 478
375
449
  metropolitan_municipality_since: null
450
+ region: 'Doğu Anadolu'
376
451
  -
377
452
  plate_number: 76
378
453
  name: 'Iğdır'
379
454
  phone_code: 476
380
455
  metropolitan_municipality_since: null
456
+ region: 'Doğu Anadolu'
381
457
  -
382
458
  plate_number: 77
383
459
  name: 'Yalova'
384
460
  phone_code: 226
385
461
  metropolitan_municipality_since: null
462
+ region: 'Marmara'
386
463
  -
387
464
  plate_number: 78
388
465
  name: 'Karabük'
389
466
  phone_code: 370
390
467
  metropolitan_municipality_since: null
468
+ region: 'Karadeniz'
391
469
  -
392
470
  plate_number: 79
393
471
  name: 'Kilis'
394
472
  phone_code: 348
395
473
  metropolitan_municipality_since: null
474
+ region: 'Güneydoğu Anadolu'
396
475
  -
397
476
  plate_number: 80
398
477
  name: 'Osmaniye'
399
478
  phone_code: 328
400
479
  metropolitan_municipality_since: null
480
+ region: 'Akdeniz'
401
481
  -
402
482
  plate_number: 81
403
483
  name: 'Düzce'
404
484
  phone_code: 380
405
- metropolitan_municipality_since: null
485
+ metropolitan_municipality_since: null
486
+ region: 'Karadeniz'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class TurkishCities
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
@@ -8,8 +8,16 @@ class TurkishCities
8
8
  City.new.find_by_id(plate_number)
9
9
  end
10
10
 
11
+ def self.find_name_by_phone_code(phone_code)
12
+ City.new.find_by_phone_code(phone_code)
13
+ end
14
+
11
15
  def self.find_plate_number_by_name(city_name)
12
- City.new.find_by_name(city_name)
16
+ City.new.find_by_name(city_name, 'plate_number')
17
+ end
18
+
19
+ def self.find_phone_code_by_name(city_name)
20
+ City.new.find_by_name(city_name, 'phone_code')
13
21
  end
14
22
 
15
23
  def self.list_cities(options = {})
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_development_dependency 'bundler', '~> 2.1.4'
25
25
  s.add_development_dependency 'coveralls', '~> 0.8.23'
26
26
  s.add_development_dependency 'rspec', '~> 3.9.0'
27
- s.add_development_dependency 'rubocop', '~> 0.80.1'
27
+ s.add_development_dependency 'rubocop', '~> 0.82.0'
28
28
 
29
29
  if s.respond_to?(:metadata)
30
30
  s.metadata['changelog_uri'] = 'https://github.com/sarslanoglu/turkish_cities/blob/master/CHANGELOG.md'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turkish_cities
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Semih Arslanoglu
@@ -78,14 +78,14 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.80.1
81
+ version: 0.82.0
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: 0.80.1
88
+ version: 0.82.0
89
89
  description: Simple ruby gem for listing and finding Turkish cities via name, plate
90
90
  number or size
91
91
  email: arslanoglusemih93@gmail.com
@@ -100,6 +100,7 @@ files:
100
100
  - ".travis.yml"
101
101
  - CHANGELOG.md
102
102
  - CODE_OF_CONDUCT.md
103
+ - CONTRIBUTING.md
103
104
  - Gemfile
104
105
  - Gemfile.lock
105
106
  - LICENSE.txt