beerdb 0.9.10 → 0.9.11

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