Method: RMTools.write

Defined in:
lib/rmtools/fs/io.rb

.write(df, value = '', pos = 0) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rmtools/fs/io.rb', line 33

def write(df, value='', pos=0)
  RMTools::prepare_write df, value do
    if pos == 0
      File.open(df, File::CREAT|File::WRONLY|File::APPEND) {|f| f << value}
    else
      if pos < 0
        if !File.file?(df)  
          raise IndexError, "file #{df} does not exist, can't write from position #{pos}" 
        elsif (size = File.size(df)) < -pos 
          raise IndexError, "file #{df} is shorter than #{(-pos).bytes}, can't write from position #{pos}"
        end
        pos = size - pos
      end
      File.open(df, File::CREAT|File::WRONLY) {|f| f.pos = pos; f << value}
    end
  end
end