beerdb 0.6.1 → 0.6.2

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.
@@ -136,7 +136,48 @@ class Brewery < ActiveRecord::Base
136
136
 
137
137
  if value_brands.present?
138
138
  logger.debug " auto-adding brands >#{value_brands}<"
139
- # fix: to be done!
139
+
140
+ # remove optional english translation in square brackets ([]) e.g. Wien [Vienna]
141
+ value_brands = value_brands.gsub( /\[.+\]/, '' )
142
+
143
+ # remove optional longer title part in () e.g. Las Palmas (de Gran Canaria), Palma (de Mallorca)
144
+ value_brands = value_brands.gsub( /\(.+\)/, '' )
145
+
146
+ # remove optional longer title part in {} e.g. Ottakringer {Bio} or {Alkoholfrei}
147
+ value_brands = value_brands.gsub( /\{.+\}/, '' )
148
+
149
+ value_brand_titles = value_brands.split( ',' )
150
+
151
+ # pass 1) remove leading n trailing spaces
152
+ value_brand_titles = value_brand_titles.map { |value| value.strip }
153
+
154
+ value_brand_titles.each do |brand_title|
155
+
156
+ # autogenerate key from title
157
+ brand_key = title_to_key( brand_title )
158
+
159
+ brand = Brand.find_by_key( brand_key )
160
+
161
+ brand_attributes = {
162
+ title: brand_title,
163
+ brewery_id: rec.id,
164
+ country_id: rec.country_id,
165
+ region_id: rec.region_id,
166
+ city_id: rec.city_id
167
+ }
168
+
169
+ if brand.present?
170
+ logger.debug "update Brand #{brand.id}-#{brand.key}:"
171
+ else
172
+ logger.debug "create Brand:"
173
+ brand = Brand.new
174
+ brand_attributes[ :key ] = brand_key # NB: new record; include/update key
175
+ end
176
+
177
+ logger.debug brand_attributes.to_json
178
+
179
+ brand.update_attributes!( brand_attributes )
180
+ end
140
181
  end
141
182
 
142
183
  ##################
@@ -161,6 +202,93 @@ class Brewery < ActiveRecord::Base
161
202
 
162
203
  end # method create_or_update_from_values
163
204
 
205
+ ### todo/fix:
206
+ # reuse method - put into helper in textutils or somewhere else ??
207
+
208
+ def title_to_key( title )
209
+
210
+ ## NB: downcase does NOT work for accented chars (thus, include in alternatives)
211
+ key = title.downcase
212
+
213
+ ## remove all whitespace and punctuation
214
+ key = key.gsub( /[ \t_\-\.()\[\]'"\/]/, '' )
215
+
216
+ ## remove special chars (e.g. %°&)
217
+ key = key.gsub( /[%&°]/, '' )
218
+
219
+ ## turn accented char into ascii look alike if possible
220
+ ##
221
+ ## todo: add some more
222
+ ## see http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references for more
223
+
224
+ ## todo: add unicode codepoint name
225
+
226
+ alternatives = [
227
+ ['ß', 'ss'],
228
+ ['æ', 'ae'],
229
+ ['ä', 'ae'],
230
+ ['ā', 'a' ], # e.g. Liepājas
231
+ ['á', 'a' ], # e.g. Bogotá, Králové
232
+ ['ã', 'a' ], # e.g São Paulo
233
+ ['ă', 'a' ], # e.g. Chișinău
234
+ ['â', 'a' ], # e.g Goiânia
235
+ ['å', 'a' ], # e.g. Vålerenga
236
+ ['ą', 'a' ], # e.g. Śląsk
237
+ ['ç', 'c' ], # e.g. São Gonçalo, Iguaçu, Neftçi
238
+ ['ć', 'c' ], # e.g. Budućnost
239
+ ['č', 'c' ], # e.g. Tradiční, Výčepní
240
+ ['é', 'e' ], # e.g. Vélez, Králové
241
+ ['è', 'e' ], # e.g. Rivières
242
+ ['ê', 'e' ], # e.g. Grêmio
243
+ ['ě', 'e' ], # e.g. Budějovice
244
+ ['ĕ', 'e' ], # e.g. Svĕtlý
245
+ ['ė', 'e' ], # e.g. Vėtra
246
+ ['ë', 'e' ], # e.g. Skënderbeu
247
+ ['ğ', 'g' ], # e.g. Qarabağ
248
+ ['ì', 'i' ], # e.g. Potosì
249
+ ['í', 'i' ], # e.g. Ústí
250
+ ['ł', 'l' ], # e.g. Wisła, Wrocław
251
+ ['ñ', 'n' ], # e.g. Porteño
252
+ ['ň', 'n' ], # e.g. Plzeň, Třeboň
253
+ ['ö', 'oe'],
254
+ ['ő', 'o' ], # e.g. Győri
255
+ ['ó', 'o' ], # e.g. Colón, Łódź, Kraków
256
+ ['õ', 'o' ], # e.g. Nõmme
257
+ ['ø', 'o' ], # e.g. Fuglafjørdur, København
258
+ ['ř', 'r' ], # e.g. Třeboň
259
+ ['ș', 's' ], # e.g. Chișinău, București
260
+ ['ş', 's' ], # e.g. Beşiktaş
261
+ ['š', 's' ], # e.g. Košice
262
+ ['ť', 't' ], # e.g. Měšťan
263
+ ['ü', 'ue'],
264
+ ['ú', 'u' ], # e.g. Fútbol
265
+ ['ū', 'u' ], # e.g. Sūduva
266
+ ['ů', 'u' ], # e.g. Sládkův
267
+ ['ı', 'u' ], # e.g. Bakı # use u?? (Baku) why-why not?
268
+ ['ý', 'y' ], # e.g. Nefitrovaný
269
+ ['ź', 'z' ], # e.g. Łódź
270
+ ['ž', 'z' ], # e.g. Domžale, Petržalka
271
+
272
+ ['Č', 'c' ], # e.g. České
273
+ ['İ', 'i' ], # e.g. İnter
274
+ ['Í', 'i' ], # e.g. ÍBV
275
+ ['Ł', 'l' ], # e.g. Łódź
276
+ ['Ö', 'oe' ], # e.g. Örebro
277
+ ['Ř', 'r' ], # e.g. Řezák
278
+ ['Ś', 's' ], # e.g. Śląsk
279
+ ['Š', 's' ], # e.g. MŠK
280
+ ['Ş', 's' ], # e.g. Şüvälan
281
+ ['Ú', 'u' ], # e.g. Ústí, Újpest
282
+ ['Ž', 'z' ] # e.g. Žilina
283
+ ]
284
+
285
+ alternatives.each do |alt|
286
+ key = key.gsub( alt[0], alt[1] )
287
+ end
288
+
289
+ key
290
+ end # method title_to_key
291
+
164
292
  end # class Brewery
165
293
 
166
294
 
@@ -1,4 +1,4 @@
1
1
 
2
2
  module BeerDb
3
- VERSION = '0.6.1'
3
+ VERSION = '0.6.2'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beerdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-05-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &81839750 !ruby/object:Gem::Requirement
16
+ requirement: &84738480 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *81839750
24
+ version_requirements: *84738480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: worlddb
27
- requirement: &81839530 !ruby/object:Gem::Requirement
27
+ requirement: &84738260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.6'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *81839530
35
+ version_requirements: *84738260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: commander
38
- requirement: &81839310 !ruby/object:Gem::Requirement
38
+ requirement: &84738040 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 4.1.3
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *81839310
46
+ version_requirements: *84738040
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdoc
49
- requirement: &81839090 !ruby/object:Gem::Requirement
49
+ requirement: &84737820 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '3.10'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *81839090
57
+ version_requirements: *84737820
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hoe
60
- requirement: &81838870 !ruby/object:Gem::Requirement
60
+ requirement: &84737600 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '3.3'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *81838870
68
+ version_requirements: *84737600
69
69
  description: beerdb - beer.db command line tool
70
70
  email: beerdb@googlegroups.com
71
71
  executables: