arvados 0.1.20141114230720 → 0.1.20150116063758
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.
- 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: []
|