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.
- data/lib/beerdb.rb +2 -2
- data/lib/beerdb/reader_file.rb +5 -5
- data/lib/beerdb/reader_zip.rb +76 -14
- data/lib/beerdb/version.rb +1 -1
- metadata +26 -26
data/lib/beerdb.rb
CHANGED
@@ -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,
|
94
|
-
reader = ZipReader.new(
|
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
|
data/lib/beerdb/reader_file.rb
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
module BeerDb
|
4
4
|
|
5
|
-
|
5
|
+
## todo: "old" classic reader - rename to FileReader ?? why? why not?
|
6
6
|
|
7
|
-
|
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
|
|
data/lib/beerdb/reader_zip.rb
CHANGED
@@ -3,38 +3,100 @@
|
|
3
3
|
module BeerDb
|
4
4
|
|
5
5
|
|
6
|
-
|
7
|
-
|
8
6
|
class ZipReader < ReaderBase
|
9
7
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
## check if zip exists
|
16
|
-
|
17
|
-
@zip_file = Zip::File.open(
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.9.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *82679170
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: logutils
|
27
|
-
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: *
|
35
|
+
version_requirements: *82678680
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: textutils
|
38
|
-
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: *
|
46
|
+
version_requirements: *82678340
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: worlddb
|
49
|
-
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: *
|
57
|
+
version_requirements: *82677590
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: tagutils
|
60
|
-
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: *
|
68
|
+
version_requirements: *82677180
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activerecord-utils
|
71
|
-
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: *
|
79
|
+
version_requirements: *82676660
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: fetcher
|
82
|
-
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: *
|
90
|
+
version_requirements: *82676150
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: gli
|
93
|
-
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: *
|
101
|
+
version_requirements: *82675760
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rubyzip
|
104
|
-
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: *
|
112
|
+
version_requirements: *82675400
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: activerecord
|
115
|
-
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: *
|
123
|
+
version_requirements: *82675140
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: rdoc
|
126
|
-
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: *
|
134
|
+
version_requirements: *82674800
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: hoe
|
137
|
-
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: *
|
145
|
+
version_requirements: *82674480
|
146
146
|
description: beerdb - beer.db command line tool
|
147
147
|
email: beerdb@googlegroups.com
|
148
148
|
executables:
|