Parsing

Currently, bread can parse data contained in strings, byte arrays, or files. In all three cases, data parsing is done with the function parse(data, spec).

An example of parsing files:

import bread as b

format_spec = [...]

with open('raw_file.bin', 'rb') as fp:
    parsed_obj = b.parse(fp, format_spec)

An example with byte arrays and strings:

import bread as b

format_spec = [("greeting", b.string(5))]

bytes = bytearray([0x68, 0x65, 0x6c, 0x6c, 0x6f])
string = "hello"

parsed_bytes = b.parse(bytes, format_spec)
parsed_string = b.parse(string, format_spec)

Parsed Object Methods

Objects produced by bread can produce JSON representations of themselves. Calling the object’s as_json() method will produce its data as a JSON string.

Objects produced by bread can also produce representations of themselves as Pythonic list s, dict s, etc. Calling the object’s as_native() method will produce its data in this form.

Creating Empty Objects

Sometimes, you want to write a binary format without having to read anything first. To do this in Bread, you can use the function new(spec).

Here’s an example of new() in action:

format_spec = [("greeting", b.string(5)),
               ("age", b.nibble)]

empty_struct = b.new(format_spec)

empty_struct.greeting = 'hello'
empty_struct.age = 0xb

output_bytes = b.write(empty_struct)