# kdleam

[日本語](README-ja.md)

`kdleam` parses, serializes, normalizes, and builds KDL v2 documents in Gleam.

## Install

```sh
gleam add kdleam
```

## Usage

```gleam
import kdleam
import kdleam/document

pub fn main() {
  let assert Ok(doc) = kdleam.parse("node \"hello\" flag=#true\n")
  let assert Some(node) = document.first_node(doc)
  let assert Some("hello") = document.first_string_arg(node)
  kdleam.serialize(doc)
}
```

## Public modules

- `kdleam`: Parsing, serialization, and normalization.
- `kdleam/document`: Document types and queries.
- `kdleam/error`: Parse errors.
- `kdleam/builder`: Document construction.
- `kdleam/value`: Conversion to and from an intermediate representation.
- `kdleam/json`: Conversion to plain JSON strings.

## Targets

The same public API is available on the Erlang and JavaScript backends.

## Limitations

The input format is KDL v2. Numbers retain their raw representation. An `Int` or `Float` is available only when that value can be represented.

## License

MIT
