turkish_cities 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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