class DataSave

Constants

VERSION

Attributes

offset[RW]
path[RW]

Public Class Methods

for(data_segment) click to toggle source
# File lib/DATA.save.rb, line 4
def self.for(data_segment)
  new data_segment.path, data_segment.pos
end
new(path, offset) click to toggle source
# File lib/DATA.save.rb, line 15
def initialize(path, offset)
  self.path   = path
  self.offset = offset
end
on(data_segment) click to toggle source
# File lib/DATA.save.rb, line 8
def self.on(data_segment)
  store = DataSave.for data_segment
  data_segment.define_singleton_method(:load) { store.load }
  data_segment.define_singleton_method(:save) { |data| store.save data }
  data_segment.define_singleton_method(:update) { |&block| store.update(&block) }
end

Public Instance Methods

load() click to toggle source
# File lib/DATA.save.rb, line 20
def load
  open_segment { |ds| ds.read }
end
save(data) click to toggle source
# File lib/DATA.save.rb, line 24
def save(data)
  open_segment do |ds|
    ds.puts data
    ds.truncate ds.pos
  end
end
update() { |load| ... } click to toggle source
# File lib/DATA.save.rb, line 31
def update
  save yield load
end

Protected Instance Methods

open_segment() { |file| ... } click to toggle source
# File lib/DATA.save.rb, line 39
def open_segment
  File.open path, 'r+' do |file|
    file.seek offset
    yield file
  end
end