Posted By: Dion Mendel
Date: 2011-06-14 02:39
Summary: BinData 1.4.0
Project: BinData

= BinData is a declarative way to read and write structured binary data.

This release mostly consists of internal refactoring to reduce memory usage. The sanitising code has been reworked so that instantiation should be faster.

The major change to the API is that Wrappers have been deprecated. These weren't used very often and the same effect can now be achieved by subclassing.

If you use BinData and have any comments, suggestions or questions, feel free to email me.

== What is BinData?

Do you ever find yourself writing code like this?

io = File.open(...)
len = io.read(2).unpack("v")
name = io.read(len)
width, height = io.read(8).unpack("VV")
puts "Rectangle #{name} is #{width} x #{height}"

It's ugly, violates DRY and feels like you're writing Perl, not Ruby.

Here's how you'd write the above using BinData.

class Rectangle < BinData::Record
. endian :little
. uint16 :len
. string :name, :read_length => :len
. uint32 :width
. uint32 :height
end

io = File.open(...)
r = Rectangle.read(io)
puts "Rectangle #{r.name} is #{r.width} x #{r.height}"

BinData supports all the data types you expect, including; arbitrarily sized/signed/endian integers, floats, bitstrings, strings, null terminated strings, dependent fields, arrays, choices, nested structures, and user defined structures.

Latest News
icalendar 1.4.0 Released
    Ryan Ahearn - 2013-05-21 23:17
BinData 1.5.0 - source moved to github
    Dion Mendel - 2013-05-21 11:10
v13.5.0 Released !!
    id 774 - 2013-05-18 12:28
Runt v0.9.0 Released
    Matthew Lipper - 2013-05-17 00:11
kramdown 1.0.2 released
    Thomas Leitner - 2013-05-09 06:58

 

Forums | Admin

Discussion Forums: bindata-1.4.0

Start New Thread Start New Thread

 

Topic Topic Starter Replies Last Post