arvados 0.1.20141114230720 → 0.1.20150116063758
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/arvados/keep.rb +47 -26
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3e69c326ebdfbd4759f072b1143baa76bb8f215
|
4
|
+
data.tar.gz: b17e6cbcd637f0cfbed773f71459344d21eaa9d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc23ff188453b70428cd851ce3d13e34973ed7e229f696ce9a413a1e3bdadeb1ffe84a30eeccf0c411e7b45f349d5378335c450a2b95e29864b6e9c828337359
|
7
|
+
data.tar.gz: d67bcfd4e0af3a717b4648608e7d5c91041fcb701499c0058eb3fdb0198341d54cef66637f3bb14bb3c5969d5866a7a2d3c5c304e8bb5c350058607eab6c73f1
|
data/lib/arvados/keep.rb
CHANGED
@@ -18,12 +18,18 @@ module Keep
|
|
18
18
|
# sign-timestamp ::= <8 lowercase hex digits>
|
19
19
|
attr_reader :hash, :hints, :size
|
20
20
|
|
21
|
+
LOCATOR_REGEXP = /^([[:xdigit:]]{32})(\+([[:digit:]]+))?(\+([[:upper:]][[:alnum:]+@_-]*))?$/
|
22
|
+
|
21
23
|
def initialize(hasharg, sizearg, hintarg)
|
22
24
|
@hash = hasharg
|
23
25
|
@size = sizearg
|
24
26
|
@hints = hintarg
|
25
27
|
end
|
26
28
|
|
29
|
+
def self.valid? tok
|
30
|
+
!!(LOCATOR_REGEXP.match tok)
|
31
|
+
end
|
32
|
+
|
27
33
|
# Locator.parse returns a Locator object parsed from the string tok.
|
28
34
|
# Returns nil if tok could not be parsed as a valid locator.
|
29
35
|
def self.parse(tok)
|
@@ -41,7 +47,7 @@ module Keep
|
|
41
47
|
raise ArgumentError.new "locator is nil or empty"
|
42
48
|
end
|
43
49
|
|
44
|
-
m =
|
50
|
+
m = LOCATOR_REGEXP.match(tok.strip)
|
45
51
|
unless m
|
46
52
|
raise ArgumentError.new "not a valid locator #{tok}"
|
47
53
|
end
|
@@ -100,15 +106,21 @@ module Keep
|
|
100
106
|
def each_line
|
101
107
|
return to_enum(__method__) unless block_given?
|
102
108
|
@text.each_line do |line|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
109
|
+
stream_name = nil
|
110
|
+
block_tokens = []
|
111
|
+
file_tokens = []
|
112
|
+
line.scan /\S+/ do |token|
|
113
|
+
if stream_name.nil?
|
114
|
+
stream_name = unescape token
|
115
|
+
elsif file_tokens.empty? and Locator.valid? token
|
116
|
+
block_tokens << token
|
117
|
+
else
|
118
|
+
file_tokens << unescape(token)
|
119
|
+
end
|
110
120
|
end
|
111
|
-
|
121
|
+
# Ignore blank lines
|
122
|
+
next if stream_name.nil?
|
123
|
+
yield [stream_name, block_tokens, file_tokens]
|
112
124
|
end
|
113
125
|
end
|
114
126
|
|
@@ -124,21 +136,33 @@ module Keep
|
|
124
136
|
end
|
125
137
|
end
|
126
138
|
|
127
|
-
def
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
139
|
+
def split_file_token token
|
140
|
+
start_pos, filesize, filename = token.split(':', 3)
|
141
|
+
[start_pos.to_i, filesize.to_i, filename]
|
142
|
+
end
|
143
|
+
|
144
|
+
def each_file_spec
|
145
|
+
return to_enum(__method__) unless block_given?
|
146
|
+
@text.each_line do |line|
|
147
|
+
stream_name = nil
|
148
|
+
in_file_tokens = false
|
149
|
+
line.scan /\S+/ do |token|
|
150
|
+
if stream_name.nil?
|
151
|
+
stream_name = unescape token
|
152
|
+
elsif in_file_tokens or not Locator.valid? token
|
153
|
+
in_file_tokens = true
|
154
|
+
yield [stream_name] + split_file_token(token)
|
155
|
+
end
|
156
|
+
end
|
132
157
|
end
|
158
|
+
true
|
133
159
|
end
|
134
160
|
|
135
161
|
def files
|
136
162
|
if @files.nil?
|
137
163
|
file_sizes = Hash.new(0)
|
138
|
-
|
139
|
-
|
140
|
-
file_sizes[[streamname, filename]] += filesize
|
141
|
-
end
|
164
|
+
each_file_spec do |streamname, _, filesize, filename|
|
165
|
+
file_sizes[[streamname, filename]] += filesize
|
142
166
|
end
|
143
167
|
@files = file_sizes.each_pair.map do |(streamname, filename), size|
|
144
168
|
[streamname, filename, size]
|
@@ -157,11 +181,9 @@ module Keep
|
|
157
181
|
return files.size
|
158
182
|
end
|
159
183
|
seen_files = {}
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
return stop_after if (seen_files.size >= stop_after)
|
164
|
-
end
|
184
|
+
each_file_spec do |streamname, _, _, filename|
|
185
|
+
seen_files[[streamname, filename]] = true
|
186
|
+
return stop_after if (seen_files.size >= stop_after)
|
165
187
|
end
|
166
188
|
seen_files.size
|
167
189
|
end
|
@@ -178,9 +200,8 @@ module Keep
|
|
178
200
|
if want_file.nil?
|
179
201
|
want_stream, want_file = File.split(want_stream)
|
180
202
|
end
|
181
|
-
|
182
|
-
if
|
183
|
-
each_file_spec(filelist).any? { |_, _, name| name == want_file }
|
203
|
+
each_file_spec do |streamname, _, _, name|
|
204
|
+
if streamname == want_stream and name == want_file
|
184
205
|
return true
|
185
206
|
end
|
186
207
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arvados
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20150116063758
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-api-client
|
@@ -104,7 +104,7 @@ dependencies:
|
|
104
104
|
- - "<"
|
105
105
|
- !ruby/object:Gem::Version
|
106
106
|
version: 1.0.0
|
107
|
-
description: Arvados client library, git commit
|
107
|
+
description: Arvados client library, git commit 3fec99e70492e163763ed185aafbf022bf5e16b7
|
108
108
|
email: gem-dev@curoverse.com
|
109
109
|
executables: []
|
110
110
|
extensions: []
|