beerdb 0.6.14 → 0.6.15
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.
- data/lib/beerdb/models/beer.rb +5 -1
- data/lib/beerdb/models/brewery.rb +5 -79
- data/lib/beerdb/version.rb +1 -1
- metadata +11 -11
data/lib/beerdb/models/beer.rb
CHANGED
@@ -55,7 +55,11 @@ class Beer < ActiveRecord::Base
|
|
55
55
|
logger = LogKernel::Logger.root
|
56
56
|
|
57
57
|
value_tag_keys = []
|
58
|
-
|
58
|
+
|
59
|
+
## check for grades (e.g. ***/**/*) in titles (will add new_attributes[:grade] to hash)
|
60
|
+
## if grade missing; set default to 4; lets us update overwrite 1,2,3 values on update
|
61
|
+
new_attributes[ :grade ] ||= 4
|
62
|
+
|
59
63
|
### check for "default" tags - that is, if present new_attributes[:tags] remove from hash
|
60
64
|
|
61
65
|
if new_attributes[:tags].present?
|
@@ -7,6 +7,7 @@ class Brewery < ActiveRecord::Base
|
|
7
7
|
# NB: use extend - is_<type>? become class methods e.g. self.is_<type>? for use in
|
8
8
|
# self.create_or_update_from_values
|
9
9
|
extend TextUtils::ValueHelper # e.g. is_year?, is_region?, is_address?, is_taglist? etc.
|
10
|
+
extend TextUtils::AddressHelper # e.g normalize_address, find_city_for_country, etc.
|
10
11
|
|
11
12
|
self.table_name = 'breweries'
|
12
13
|
|
@@ -41,82 +42,6 @@ class Brewery < ActiveRecord::Base
|
|
41
42
|
|
42
43
|
|
43
44
|
|
44
|
-
## todo/fix:
|
45
|
-
# move to textutils - use AddressHelper ??
|
46
|
-
# todo: add _in_adr or _in_addr to name
|
47
|
-
|
48
|
-
def self.find_city_for_country( country_key, address )
|
49
|
-
|
50
|
-
return nil if address.blank? # do NOT process nil or empty address lines; sorry
|
51
|
-
|
52
|
-
lines = address.split( '//' )
|
53
|
-
|
54
|
-
if country_key == 'at' || country_key == 'de'
|
55
|
-
# first line strip numbers (assuming zip code) and whitespace
|
56
|
-
line1 = lines[0]
|
57
|
-
line1 = line1.gsub( /\b[0-9]+\b/, '' ) # use word boundries (why? why not?)
|
58
|
-
line1 = line1.strip
|
59
|
-
|
60
|
-
return nil if line1.blank? # nothing left sorry; better return nil
|
61
|
-
|
62
|
-
line1 # assume its the city
|
63
|
-
else
|
64
|
-
nil # unsupported country/address schema for now; sorry
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
|
69
|
-
def self.find_grade( text ) # NB: returns ary [grade,text] / two values
|
70
|
-
grade = 4 # defaults to grade 4 e.g *** => 1, ** => 2, * => 3, -/- => 4
|
71
|
-
|
72
|
-
text = text.sub( /\s+(\*{1,3})\s*$/ ) do |_| # NB: stars must end field/value
|
73
|
-
if $1 == '***'
|
74
|
-
grade = 1
|
75
|
-
elsif $1 == '**'
|
76
|
-
grade = 2
|
77
|
-
elsif $1 == '*'
|
78
|
-
grade = 3
|
79
|
-
else
|
80
|
-
# unknown grade; not possible, is'it?
|
81
|
-
end
|
82
|
-
'' # remove * from title if found
|
83
|
-
end
|
84
|
-
|
85
|
-
[grade,text]
|
86
|
-
end
|
87
|
-
|
88
|
-
## todo/fix: move to helper for reuse in textutils!!! (use for beer model too)
|
89
|
-
|
90
|
-
def self.find_grade_in_titles!( new_attributes )
|
91
|
-
|
92
|
-
# NB: will add a new attributes grade to hash e.g. new_attributes[:grade] = grade
|
93
|
-
|
94
|
-
if new_attributes[:title].present?
|
95
|
-
grade, title = find_grade( new_attributes[:title] )
|
96
|
-
|
97
|
-
if grade == 1 || grade == 2 || grade == 3 # grade found/present; use stripped title
|
98
|
-
new_attributes[:title] = title
|
99
|
-
new_attributes[:grade] = grade
|
100
|
-
return grade
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
if new_attributes[:synonyms].present?
|
105
|
-
grade, synonyms = find_grade( new_attributes[:synonyms] )
|
106
|
-
|
107
|
-
if grade == 1 || grade == 2 || grade == 3 # grade found/present; use stripped title
|
108
|
-
new_attributes[:synonyms] = synonyms
|
109
|
-
new_attributes[:grade] = grade
|
110
|
-
return grade
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
grade = 4 # defaults to grade 4 e.g *** => 1, ** => 2, * => 3, -/- => 4
|
115
|
-
new_attributes[:grade] = grade
|
116
|
-
grade
|
117
|
-
end
|
118
|
-
|
119
|
-
|
120
45
|
def self.create_or_update_from_values( new_attributes, values )
|
121
46
|
|
122
47
|
## fix: add/configure logger for ActiveRecord!!!
|
@@ -126,7 +51,8 @@ class Brewery < ActiveRecord::Base
|
|
126
51
|
value_brands = ''
|
127
52
|
|
128
53
|
## check for grades (e.g. ***/**/*) in titles (will add new_attributes[:grade] to hash)
|
129
|
-
|
54
|
+
## if grade missing; set default to 4; lets us update overwrite 1,2,3 values on update
|
55
|
+
new_attributes[ :grade ] ||= 4
|
130
56
|
|
131
57
|
### check for "default" tags - that is, if present new_attributes[:tags] remove from hash
|
132
58
|
|
@@ -182,7 +108,7 @@ class Brewery < ActiveRecord::Base
|
|
182
108
|
# fix: support more url format (e.g. w/o www. - look for .com .country code etc.)
|
183
109
|
new_attributes[ :web ] = value
|
184
110
|
elsif is_address?( value ) # if value includes // assume address e.g. 3970 Weitra // Sparkasseplatz 160
|
185
|
-
new_attributes[ :address ] =
|
111
|
+
new_attributes[ :address ] = normalize_address( value )
|
186
112
|
elsif value =~ /^brands:/ # brands:
|
187
113
|
value_brands = value[7..-1] ## cut off brands: prefix
|
188
114
|
value_brands = value_brands.strip # remove leading and trailing spaces
|
@@ -266,7 +192,7 @@ class Brewery < ActiveRecord::Base
|
|
266
192
|
city_attributes[ :key ] = city_key # NB: new record; include/update key
|
267
193
|
end
|
268
194
|
|
269
|
-
logger.
|
195
|
+
logger.debug city_attributes.to_json
|
270
196
|
|
271
197
|
city.update_attributes!( city_attributes )
|
272
198
|
|
data/lib/beerdb/version.rb
CHANGED
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.
|
4
|
+
version: 0.6.15
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-05-14 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &87568670 !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: *
|
24
|
+
version_requirements: *87568670
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: worlddb
|
27
|
-
requirement: &
|
27
|
+
requirement: &87568420 !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: *
|
35
|
+
version_requirements: *87568420
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: commander
|
38
|
-
requirement: &
|
38
|
+
requirement: &87568190 !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: *
|
46
|
+
version_requirements: *87568190
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdoc
|
49
|
-
requirement: &
|
49
|
+
requirement: &87567960 !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: *
|
57
|
+
version_requirements: *87567960
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: hoe
|
60
|
-
requirement: &
|
60
|
+
requirement: &87567740 !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: *
|
68
|
+
version_requirements: *87567740
|
69
69
|
description: beerdb - beer.db command line tool
|
70
70
|
email: beerdb@googlegroups.com
|
71
71
|
executables:
|