beerdb 0.9.10 → 0.9.11

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.
@@ -90,8 +90,8 @@ module BeerDb
90
90
  reader.load_setup( setup )
91
91
  end
92
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 )
93
+ def self.read_setup_from_zip( zip_name, setup, include_path, opts={} ) ## todo/check - use a better (shorter) name ??
94
+ reader = ZipReader.new( zip_name, include_path, opts )
95
95
  reader.load_setup( setup )
96
96
  reader.close
97
97
  end
@@ -2,16 +2,16 @@
2
2
 
3
3
  module BeerDb
4
4
 
5
- class Reader < ReaderBase ## todo: "old" classic reader - rename to FileReader ?? why? why not?
5
+ ## todo: "old" classic reader - rename to FileReader ?? why? why not?
6
6
 
7
- attr_reader :include_path
7
+ class Reader < ReaderBase
8
8
 
9
9
  def initialize( include_path, opts = {} )
10
10
  @include_path = include_path
11
11
  end
12
12
 
13
13
  def create_fixture_reader( name )
14
- path = "#{include_path}/#{name}.txt"
14
+ path = "#{@include_path}/#{name}.txt"
15
15
 
16
16
  logger.info "parsing data '#{name}' (#{path})..."
17
17
 
@@ -19,11 +19,11 @@ class Reader < ReaderBase ## todo: "old" classic reader - rename to FileReader
19
19
  end
20
20
 
21
21
  def create_beers_reader( name, more_attribs={} )
22
- ValuesReaderV2.new( name, include_path, more_attribs )
22
+ ValuesReaderV2.new( name, @include_path, more_attribs )
23
23
  end
24
24
 
25
25
  def create_breweries_reader( name, more_attribs={} )
26
- ValuesReaderV2.new( name, include_path, more_attribs )
26
+ ValuesReaderV2.new( name, @include_path, more_attribs )
27
27
  end
28
28
 
29
29
 
@@ -3,38 +3,100 @@
3
3
  module BeerDb
4
4
 
5
5
 
6
-
7
-
8
6
  class ZipReader < ReaderBase
9
7
 
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
8
+ def initialize( name, include_path, opts = {} )
9
+
10
+ ## todo/fix: make include_path an opts (included in opts?) - why? why not??
11
+
12
+ path = "#{include_path}/#{name}.zip"
13
+ ## todo: check if zip exists
14
+
15
+ @zip_file = Zip::File.open( path ) ## NOTE: do NOT create if file is missing; let it crash
16
+
17
+ ### allow prefix (path) in name
18
+ ### e.g. assume all files relative to setup manifest
19
+ ## e.g. at-austria-master/setups/all.txt or
20
+ ## be-belgium-master/setups/all.txt
21
+ ## for
22
+ ## setups/all.txt
23
+ ###
24
+ ## will get (re)set w/ fixture/setup reader
25
+ ##
26
+ ## todo/fix: change/rename to @relative_path ?? - why? why not?
27
+ @zip_prefix = ''
18
28
  end
19
29
 
30
+
20
31
  def close
32
+ ## todo/check: add a close method - why? why not ???
21
33
  @zip_file.close
22
34
  end
23
35
 
24
36
 
25
37
  def create_fixture_reader( name )
26
- FixtureReader.from_zip( @zip_file, name )
38
+ ## e.g. pass in => setups/all or setups/test etc. e.g. w/o .txt extension
39
+ query = "**/#{name}.txt"
40
+
41
+ ## note: returns an array of Zip::Entry
42
+ candidates = @zip_file.glob( query )
43
+ pp candidates
44
+
45
+ ## use first candidates entry as match
46
+ ## todo/fix: issue warning if more than one entries/matches!!
47
+
48
+ ## get fullpath e.g. at-austria-master/setups/all.txt
49
+ path = candidates[0].name
50
+ logger.debug " zip entry path >>#{path}<<"
51
+
52
+ ## cut-off at-austria-master/ NOTE: includes trailing slash (if present)
53
+ @zip_prefix = path[ 0...(path.size-name.size) ]
54
+ logger.debug " zip entry prefix >>#{@zip_prefix}<<"
55
+
56
+ logger.info "parsing data in zip '#{name}' (#{path})..."
57
+
58
+ FixtureReader.from_zip( @zip_file, path )
27
59
  end
28
60
 
61
+
29
62
  def create_beers_reader( name, more_attribs={} )
30
- ValuesReader.from_zip( @zip_file, name, more_attribs )
63
+ path = name_to_zip_entry_path( name )
64
+ ValuesReader.from_zip( @zip_file, path, more_attribs )
31
65
  end
32
66
 
33
67
  def create_breweries_reader( name, more_attribs={} )
34
- ValuesReader.from_zip( @zip_file, name, more_attribs )
68
+ path = name_to_zip_entry_path( name )
69
+ ValuesReader.from_zip( @zip_file, path, more_attribs )
70
+ end
71
+
72
+ private
73
+
74
+ def path_to_real_path( path )
75
+ # map name to name_real_path
76
+ # name might include !/ for virtual path (gets cut off)
77
+ # e.g. at-austria!/w-wien/beers becomse w-wien/beers
78
+ pos = path.index( '!/')
79
+ if pos.nil?
80
+ path # not found; real path is the same as name
81
+ else
82
+ # cut off everything until !/ e.g.
83
+ # at-austria!/w-wien/beers becomes
84
+ # w-wien/beers
85
+ path[ (pos+2)..-1 ]
86
+ end
87
+ end
88
+
89
+ def name_to_zip_entry_path( name )
90
+ path = "#{name}.txt"
91
+
92
+ real_path = path_to_real_path( path )
93
+
94
+ # NOTE: add possible zip entry prefix path
95
+ # (if present includes trailing slash e.g. /)
96
+ entry_path = "#{@zip_prefix}#{real_path}"
97
+ entry_path
35
98
  end
36
99
 
37
100
 
38
101
  end # class ZipReader
39
102
  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 = 10
5
+ PATCH = 11
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.10
4
+ version: 0.9.11
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-05 00:00:00.000000000 Z
12
+ date: 2014-11-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: props
16
- requirement: &78783500 !ruby/object:Gem::Requirement
16
+ requirement: &82679170 !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: *78783500
24
+ version_requirements: *82679170
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: logutils
27
- requirement: &78783230 !ruby/object:Gem::Requirement
27
+ requirement: &82678680 !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: *78783230
35
+ version_requirements: *82678680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: textutils
38
- requirement: &78782980 !ruby/object:Gem::Requirement
38
+ requirement: &82678340 !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: *78782980
46
+ version_requirements: *82678340
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: worlddb
49
- requirement: &78782670 !ruby/object:Gem::Requirement
49
+ requirement: &82677590 !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: *78782670
57
+ version_requirements: *82677590
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: tagutils
60
- requirement: &78782440 !ruby/object:Gem::Requirement
60
+ requirement: &82677180 !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: *78782440
68
+ version_requirements: *82677180
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activerecord-utils
71
- requirement: &78782200 !ruby/object:Gem::Requirement
71
+ requirement: &82676660 !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: *78782200
79
+ version_requirements: *82676660
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: fetcher
82
- requirement: &78779430 !ruby/object:Gem::Requirement
82
+ requirement: &82676150 !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: *78779430
90
+ version_requirements: *82676150
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: gli
93
- requirement: &78778980 !ruby/object:Gem::Requirement
93
+ requirement: &82675760 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 2.5.6
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *78778980
101
+ version_requirements: *82675760
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rubyzip
104
- requirement: &78778580 !ruby/object:Gem::Requirement
104
+ requirement: &82675400 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *78778580
112
+ version_requirements: *82675400
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: activerecord
115
- requirement: &78778210 !ruby/object:Gem::Requirement
115
+ requirement: &82675140 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *78778210
123
+ version_requirements: *82675140
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rdoc
126
- requirement: &78777770 !ruby/object:Gem::Requirement
126
+ requirement: &82674800 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: '4.0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *78777770
134
+ version_requirements: *82674800
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: hoe
137
- requirement: &78777430 !ruby/object:Gem::Requirement
137
+ requirement: &82674480 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ~>
@@ -142,7 +142,7 @@ dependencies:
142
142
  version: '3.12'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *78777430
145
+ version_requirements: *82674480
146
146
  description: beerdb - beer.db command line tool
147
147
  email: beerdb@googlegroups.com
148
148
  executables: