beerdb 0.9.9 → 0.9.10

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