Sha256: 43917c3de0a612748c2e4d3251fc15f7372ec08340996adf6b31fa2fe5122626
Contents?: true
Size: 1.34 KB
Versions: 3
Compression:
Stored size: 1.34 KB
Contents
module Mobi class StreamSlicer attr_reader :stream, :length attr_accessor :start, :stop def initialize(stream, start=0, stop=nil) @stream = stream @start = start if stop.nil? stream.seek(0, 2) stop = stream.tell end @stop = stop @length = stop - start end def [](offset, bytes=1) stream = @stream base = @start if bytes == 1 stream.seek(base + offset) return stream.read(1) end start = offset stop = offset + bytes # Reverse if you want to pass in negative bytes start, stop = stop, start if bytes < 0 size = stop - start return "" if size <= 0 stream.seek(base + start) data = stream.read(size) return data end # def [](key) # stream = self.stream # base = self.start # if key.is_a? Integer # stream.seek(base + key) # return stream.read(1) # end # if key.is_a? Range # start = key.first # stop = key.last # # if key.max.nil? # start, stop = stop, start # end # size = stop - start # # return "" if size <= 0 # # stream.seek(base + start) # data = stream.read(size) # return data # end # end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mobi-0.1.2 | lib/mobi/stream_slicer.rb |
mobi-0.1.1 | lib/mobi/stream_slicer.rb |
mobi-0.1.0 | lib/mobi/stream_slicer.rb |