@hackage named-binary-tag0.1.0.0
NBT (named binary tag) serialization and deserialization.
Categories
License
MIT
Maintainer
davidrgarland@me.com
Links
Versions
- 0.1.0.0 Tue, 11 Oct 2022
Installation
Tested Compilers
Dependencies (8)
- base >=4.16.0 && <4.18
- bytestring >=0.11.3 && <0.12
- cereal >=0.5.8 && <0.6
- containers >=0.6.6 && <0.7
- indexed-traversable >=0.1.2 && <0.2
- rrb-vector >=0.1.1.0 && <0.2 Show all…
Dependents (0)
named-binary-tag
A replacement for the old nbt package, because that one has been defunct for 2 years due to missing a single-line fix.
There are also a few improvements(?) made while I was at it:
- You can choose between a version with or without label maps using
MapNbtorNbt'respectively. - Uses konsumlamm's rrb-vector package instead of a mix of lists and unboxed arrays for more well-rounded asymptotics.
StrictDatais enabled.- Names of types and constructors are shortened a bit, with the reasoning that you should really be using qualified access for most of them.
- The code is shorter and better documented now (not that it really needed any documentation...)
- Less boilerplate is required to use it, at the expense of having
zlibas a dependency. See below.
Usage
import Data.Nbt qualified as Nbt
import Data.Serialize
main :: IO ()
main = do
shouldBeNbt <- Nbt.readCompressed "level.dat" :: IO (Either String Nbt') -- see also "Nbt.readUncompressed"
case shouldBeNbt of
Left err -> putStrLn err
Right nbt -> do
print nbt
Nbt.writeCompressed "anotherlevel.dat" nbt -- see also "Nbt.writeUncompressed"
Possible Future Work
- Drop the
cerealdependency and do bytestring parsing directly. - Conversion to/from SNBT.
- Conversion to/from JSON.