Module: ZPNG::ReadableStruct::ClassMethods

Defined in:
lib/zpng/readable_struct.rb

Instance Method Summary collapse

Instance Method Details

#read(src, size = nil) ⇒ Object

src can be IO or String, or anything that responds to :read or :unpack



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/zpng/readable_struct.rb', line 28

def read src, size = nil
  size ||= const_get 'SIZE'
  data =
    if src.respond_to?(:read)
      src.read(size).to_s
    elsif src.respond_to?(:unpack)
      src
    else
      raise "[?] don't know how to read from #{src.inspect}"
    end
  if data.size < size
    $stderr.puts "[!] #{self.to_s} want #{size} bytes, got #{data.size}"
  end
  new(*data.unpack(const_get('FORMAT')))
end