class GZippedTar::Tar::WriteFile

Attributes

initial[R]
io[R]
mode[R]
name[R]
writer[R]

Public Class Methods

call(writer, io, name, mode, &block) click to toggle source
# File lib/gzipped_tar/tar/write_file.rb, line 4
def self.call(writer, io, name, mode, &block)
  new(writer, io, name, mode).call(&block)
end
new(writer, io, name, mode) click to toggle source
# File lib/gzipped_tar/tar/write_file.rb, line 8
def initialize(writer, io, name, mode)
  @writer  = writer
  @io      = io
  @name    = name
  @mode    = mode
  @initial = io.pos
end

Public Instance Methods

call(&block) click to toggle source
# File lib/gzipped_tar/tar/write_file.rb, line 16
def call(&block)
  # placeholder for the header
  io.write GZippedTar::Tar::EMPTY_ROW

  block.call GZippedTar::Tar::RestrictedStream.new(io) if block

  writer.pad_rows size
  overwrite_header
end

Private Instance Methods

overwrite_header() click to toggle source
# File lib/gzipped_tar/tar/write_file.rb, line 30
def overwrite_header
  current_position = io.pos
  io.pos = initial

  writer.write_header name, mode, :size => size

  io.pos = current_position
end
size() click to toggle source
# File lib/gzipped_tar/tar/write_file.rb, line 39
def size
  @size ||= io.pos - initial - GZippedTar::Tar::ROW_WIDTH
end