packages feed

aeson-tiled-0.0.2.0: README.md

# aeson-tiled

[![Hackage](https://img.shields.io/hackage/v/aeson-tiled.svg)](https://hackage.haskell.org/package/aeson-tiled)

Types and instances for [Tiled](https://www.mapeditor.org/) map editor map/`.tmj` and tileset/`.tsj` files.

> `aeson-tiled` is the spiritual successor to `htiled`.
> `htiled` uses `hxt` which relies too heavily on Arrows and is rather hard to work with.
> Tiled's json export supports 100% of Tiled's features, so there doesn't seem to be much of a point to maintaining a large Arrows-based project when writing Aeson instances for Tiled types is much easier.
> Hence this project!

The package is geared toward minimal divergence from Tiled type specifications.

Tiled data format is taken at version 1.8.4.
Should be compatible down to 1.6 (where the `version` field changed to string).

GHC versions are supported from 8.10 and follow Stackage LTS + Stackage Nightly + whatever is available on `ghcup`.

## Module structure

The modules are designed for qualified imports and `OverloadedRecordDot` extension.
Everyone has a `Generic` instance so you can use `generic-lens` or `generic-optics` if you wish.

- Modules under `Codec.Tiled.*` are concerned with `aeson` representation, one type at a time.
  They provide JSON `Value` translation to concrete types, but not much beyond that.
  Your application most likely should use its own representation.
- Modules under `Data.Tiled.*` are types specific to this package.
  They are more refined and may be utilized directly.