5682: move logic to check if '/' in filename into each_file_spec method from files...
authorRadhika Chippada <radhika@curoverse.com>
Thu, 7 May 2015 21:06:54 +0000 (17:06 -0400)
committerRadhika Chippada <radhika@curoverse.com>
Thu, 7 May 2015 21:06:54 +0000 (17:06 -0400)
sdk/ruby/lib/arvados/keep.rb

index a1f418b2b5b6eb5756695e078e77cd88256b06cb..422dab5f5372c05d177d69a381a82b7e7f8ab1e1 100644 (file)
@@ -154,7 +154,16 @@ module Keep
             stream_name = unescape token
           elsif in_file_tokens or not Locator.valid? token
             in_file_tokens = true
-            yield [stream_name] + split_file_token(token)
+
+            file_tokens = split_file_token(token)
+            stream_name_adjuster = ''
+            if file_tokens[2].include?('/')                # '/' in filename
+              parts = file_tokens[2].rpartition('/')
+              stream_name_adjuster = parts[1] + parts[0]   # /dir_parts
+              file_tokens[2] = parts[2]
+            end
+
+            yield [stream_name + stream_name_adjuster] + file_tokens
           end
         end
       end
@@ -165,11 +174,6 @@ module Keep
       if @files.nil?
         file_sizes = Hash.new(0)
         each_file_spec do |streamname, _, filesize, filename|
-          if filename.include?('/')
-            parts = filename.rpartition('/')
-            streamname = streamname + parts[1] + parts[0]   # ./dir_parts
-            filename = parts[2]
-          end
           file_sizes[[streamname, filename]] += filesize
         end
         @files = file_sizes.each_pair.map do |(streamname, filename), size|