ToxicFrog / vstruct

A Lua library for packing and unpacking binary data, supporting arbitrary (byte-aligned) widths, named fields, and repetition.
https://github.com/ToxicFrog/vstruct
Other
110 stars 14 forks source link

[feature] Inter-format-string splicing #20

Open ToxicFrog opened 11 years ago

ToxicFrog commented 11 years ago

It is often convenient to incrementally build a format string, creating format strings describing individual sub-records before combining them into something larger. This is currently unwieldy and must be done with .. or string.format.

It would be nice to be able to do something like, say:

vstruct.register("toc_entry", "path:c4 size:u4")
vstruct.register("toc", "count:u4 toc:{ $count * <toc_entry> }")
vstruct.unpack("<toc>", buffer)

Syntax is still a work in progress, and this can be considered an intermediate step towards format string combinators (which I need to open an issue for).

ToxicFrog commented 10 years ago

848fd7204706b133552f2cd69c1fac2e7db9215b implements this, although the syntax and API are still a work in progress; I'm not ready to mark this closed (or cut a new release) until I'm happy with them.

Syntax uses &name, since $name is reserved for future expansion (backreferences).