Class: Shredder::Files

Inherits:
Object
  • Object
show all
Includes:
Shredder
Defined in:
lib/shredder/files.rb

Constant Summary

Constants included from Shredder

VERSION

Instance Attribute Summary

Attributes included from Shredder

#sewn, #shreds

Instance Method Summary collapse

Methods included from Shredder

#shred_files

Constructor Details

#initialize(sewn, shreds = sewn, m = 2, n: m) ⇒ Files

this one takes filenames



5
6
7
8
9
# File 'lib/shredder/files.rb', line 5

def initialize(sewn, shreds=sewn, m=2, n: m)
  @sewn   = sewn
  @shreds = shred_files(shreds, n)
  raise "Need at least 2 shreds" unless @shreds.length > 1
end

Instance Method Details

#sew(limit = 0) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/shredder/files.rb', line 24

def sew(limit=0)
  writer = readers = count = nil
  begin
    writer  = File.open(@sewn, 'wb')
    readers = @shreds.map{File.open(_1, 'r')}
    count   = Streams.new(writer, readers).sew(limit: limit)
  ensure
    writer.close            if writer
    readers.each{_1.close}  if readers
  end
  return count
end

#shred(limit = 0) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/shredder/files.rb', line 11

def shred(limit=0)
  reader = writers = count = nil
  begin
    reader  = File.open(@sewn, 'r')
    writers = @shreds.map{File.open _1, 'wb'}
    count   = Streams.new(reader, writers).shred(limit: limit)
  ensure
    writers.each{_1.close}  if writers
    reader.close            if reader
  end
  return count
end