beerdb 0.9.9 → 0.9.10

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.
@@ -17,6 +17,8 @@ lib/beerdb/models/world/city.rb
17
17
  lib/beerdb/models/world/country.rb
18
18
  lib/beerdb/models/world/region.rb
19
19
  lib/beerdb/reader.rb
20
+ lib/beerdb/reader_file.rb
21
+ lib/beerdb/reader_zip.rb
20
22
  lib/beerdb/schema.rb
21
23
  lib/beerdb/serializers/beer.rb
22
24
  lib/beerdb/serializers/brewery.rb
data/Rakefile CHANGED
@@ -32,6 +32,8 @@ Hoe.spec 'beerdb' do
32
32
  ## 3rd party
33
33
  ['gli', '>= 2.5.6'],
34
34
 
35
+ ['rubyzip'], ## NOTE: used for ZipReader (optional in textutils, thus, pull it in here)
36
+
35
37
  ['activerecord'] # NB: will include activesupport,etc.
36
38
  ### ['sqlite3', '~> 1.3'] # NB: install on your own; remove dependency
37
39
  ]
@@ -19,6 +19,9 @@ require 'uri'
19
19
 
20
20
  # 3rd party gems / libs
21
21
 
22
+ require 'zip' ## (optionally for textutils e.g. soft dependency - pull in here)
23
+
24
+
22
25
  # -- get required by worlddb
23
26
  # require 'active_record' ## todo: add sqlite3? etc.
24
27
  # require 'logutils'
@@ -46,6 +49,8 @@ require 'beerdb/serializers/brewery'
46
49
 
47
50
  require 'beerdb/schema'
48
51
  require 'beerdb/reader'
52
+ require 'beerdb/reader_file'
53
+ require 'beerdb/reader_zip'
49
54
  require 'beerdb/deleter'
50
55
  require 'beerdb/stats'
51
56
 
@@ -85,6 +90,12 @@ module BeerDb
85
90
  reader.load_setup( setup )
86
91
  end
87
92
 
93
+ def self.read_setup_from_zip( setup, zip_path, opts={} ) ## todo/check - use a better (shorter) name ??
94
+ reader = ZipReader.new( zip_path, opts )
95
+ reader.load_setup( setup )
96
+ reader.close
97
+ end
98
+
88
99
  def self.read_all( include_path, opts={} ) # load all builtins (using plain text reader); helper for convenience
89
100
  read_setup( 'setups/all', include_path, opts )
90
101
  end # method read_all
@@ -33,7 +33,7 @@ module Matcher
33
33
  end # module Matcher
34
34
 
35
35
 
36
- class Reader
36
+ class ReaderBase
37
37
 
38
38
  include LogUtils::Logging
39
39
 
@@ -42,20 +42,9 @@ class Reader
42
42
  include WorldDb::Matcher ## fix: move to BeerDb::Matcher module ??? - cleaner?? why? why not?
43
43
  include BeerDb::Matcher # lets us use match_teams_for_country etc.
44
44
 
45
- attr_reader :include_path
46
-
47
-
48
- def initialize( include_path, opts = {} )
49
- @include_path = include_path
50
- end
51
-
52
45
 
53
46
  def load_setup( name )
54
- path = "#{include_path}/#{name}.txt"
55
-
56
- logger.info "parsing data '#{name}' (#{path})..."
57
-
58
- reader = FixtureReader.new( path )
47
+ reader = create_fixture_reader( name ) ### "virtual" method - required by concrete class
59
48
 
60
49
  reader.each do |fixture_name|
61
50
  load( fixture_name )
@@ -124,7 +113,8 @@ class Reader
124
113
 
125
114
 
126
115
  def load_beers_worker( name, more_attribs={} )
127
- reader = ValuesReaderV2.new( name, include_path, more_attribs )
116
+
117
+ reader = create_beers_reader( name, more_attribs ) ### "virtual" method - required by concrete class
128
118
 
129
119
  ### todo: cleanup - check if [] works for build_title...
130
120
  # better cleaner way ???
@@ -208,7 +198,7 @@ class Reader
208
198
  ## no marker; do nothing
209
199
  end
210
200
 
211
- reader = ValuesReaderV2.new( name, include_path, more_attribs )
201
+ reader = create_breweries_reader( name, more_attribs ) ### "virtual" method - required by concrete class
212
202
 
213
203
  reader.each_line do |new_attributes, values|
214
204
 
@@ -225,5 +215,5 @@ class Reader
225
215
  end # each_line
226
216
  end
227
217
 
228
- end # class Reader
218
+ end # class ReaderBase
229
219
  end # module BeerDb
@@ -0,0 +1,31 @@
1
+ # encoding: UTF-8
2
+
3
+ module BeerDb
4
+
5
+ class Reader < ReaderBase ## todo: "old" classic reader - rename to FileReader ?? why? why not?
6
+
7
+ attr_reader :include_path
8
+
9
+ def initialize( include_path, opts = {} )
10
+ @include_path = include_path
11
+ end
12
+
13
+ def create_fixture_reader( name )
14
+ path = "#{include_path}/#{name}.txt"
15
+
16
+ logger.info "parsing data '#{name}' (#{path})..."
17
+
18
+ FixtureReader.new( path )
19
+ end
20
+
21
+ def create_beers_reader( name, more_attribs={} )
22
+ ValuesReaderV2.new( name, include_path, more_attribs )
23
+ end
24
+
25
+ def create_breweries_reader( name, more_attribs={} )
26
+ ValuesReaderV2.new( name, include_path, more_attribs )
27
+ end
28
+
29
+
30
+ end # class Reader
31
+ end # module BeerDb
@@ -0,0 +1,40 @@
1
+ # encoding: UTF-8
2
+
3
+ module BeerDb
4
+
5
+
6
+
7
+
8
+ class ZipReader < ReaderBase
9
+
10
+
11
+ ## todo/fix: add a close method - why? why not ???
12
+
13
+ def initialize( zip_path, opts = {} )
14
+ @zip_path = zip_path
15
+ ## check if zip exists
16
+
17
+ @zip_file = Zip::File.open( zip_path ) ## NOTE: do NOT create if file is missing; let it crash
18
+ end
19
+
20
+ def close
21
+ @zip_file.close
22
+ end
23
+
24
+
25
+ def create_fixture_reader( name )
26
+ FixtureReader.from_zip( @zip_file, name )
27
+ end
28
+
29
+ def create_beers_reader( name, more_attribs={} )
30
+ ValuesReader.from_zip( @zip_file, name, more_attribs )
31
+ end
32
+
33
+ def create_breweries_reader( name, more_attribs={} )
34
+ ValuesReader.from_zip( @zip_file, name, more_attribs )
35
+ end
36
+
37
+
38
+ end # class ZipReader
39
+ end # module BeerDb
40
+
@@ -2,7 +2,7 @@
2
2
  module BeerDb
3
3
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
4
4
  MINOR = 9
5
- PATCH = 9
5
+ PATCH = 10
6
6
  VERSION = [MAJOR,MINOR,PATCH].join('.')
7
7
 
8
8
  def self.version
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.9.9
4
+ version: 0.9.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-02 00:00:00.000000000 Z
12
+ date: 2014-11-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: props
16
- requirement: &74572130 !ruby/object:Gem::Requirement
16
+ requirement: &78783500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *74572130
24
+ version_requirements: *78783500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: logutils
27
- requirement: &74571860 !ruby/object:Gem::Requirement
27
+ requirement: &78783230 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *74571860
35
+ version_requirements: *78783230
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: textutils
38
- requirement: &74571590 !ruby/object:Gem::Requirement
38
+ requirement: &78782980 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *74571590
46
+ version_requirements: *78782980
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: worlddb
49
- requirement: &74571300 !ruby/object:Gem::Requirement
49
+ requirement: &78782670 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.0.2
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *74571300
57
+ version_requirements: *78782670
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: tagutils
60
- requirement: &74571090 !ruby/object:Gem::Requirement
60
+ requirement: &78782440 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *74571090
68
+ version_requirements: *78782440
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activerecord-utils
71
- requirement: &74570870 !ruby/object:Gem::Requirement
71
+ requirement: &78782200 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *74570870
79
+ version_requirements: *78782200
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: fetcher
82
- requirement: &74570590 !ruby/object:Gem::Requirement
82
+ requirement: &78779430 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0.3'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *74570590
90
+ version_requirements: *78779430
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: gli
93
- requirement: &74570350 !ruby/object:Gem::Requirement
93
+ requirement: &78778980 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,21 @@ dependencies:
98
98
  version: 2.5.6
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *74570350
101
+ version_requirements: *78778980
102
+ - !ruby/object:Gem::Dependency
103
+ name: rubyzip
104
+ requirement: &78778580 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: *78778580
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: activerecord
104
- requirement: &74570150 !ruby/object:Gem::Requirement
115
+ requirement: &78778210 !ruby/object:Gem::Requirement
105
116
  none: false
106
117
  requirements:
107
118
  - - ! '>='
@@ -109,10 +120,10 @@ dependencies:
109
120
  version: '0'
110
121
  type: :runtime
111
122
  prerelease: false
112
- version_requirements: *74570150
123
+ version_requirements: *78778210
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: rdoc
115
- requirement: &74569870 !ruby/object:Gem::Requirement
126
+ requirement: &78777770 !ruby/object:Gem::Requirement
116
127
  none: false
117
128
  requirements:
118
129
  - - ~>
@@ -120,10 +131,10 @@ dependencies:
120
131
  version: '4.0'
121
132
  type: :development
122
133
  prerelease: false
123
- version_requirements: *74569870
134
+ version_requirements: *78777770
124
135
  - !ruby/object:Gem::Dependency
125
136
  name: hoe
126
- requirement: &74569620 !ruby/object:Gem::Requirement
137
+ requirement: &78777430 !ruby/object:Gem::Requirement
127
138
  none: false
128
139
  requirements:
129
140
  - - ~>
@@ -131,7 +142,7 @@ dependencies:
131
142
  version: '3.12'
132
143
  type: :development
133
144
  prerelease: false
134
- version_requirements: *74569620
145
+ version_requirements: *78777430
135
146
  description: beerdb - beer.db command line tool
136
147
  email: beerdb@googlegroups.com
137
148
  executables:
@@ -161,6 +172,8 @@ files:
161
172
  - lib/beerdb/models/world/country.rb
162
173
  - lib/beerdb/models/world/region.rb
163
174
  - lib/beerdb/reader.rb
175
+ - lib/beerdb/reader_file.rb
176
+ - lib/beerdb/reader_zip.rb
164
177
  - lib/beerdb/schema.rb
165
178
  - lib/beerdb/serializers/beer.rb
166
179
  - lib/beerdb/serializers/brewery.rb