c12-parser 1.1.0

Toolbox for parsing and stringifying various formats, including JSON, JSON5, JSONC, INI, TOML, and YAML.
Documentation
# ⚙️ c12-parser

<!-- automdrs:badges showCrateVersion="true" showCrateDownloads="true" showCrateDocs="true" showCommitActivity="true" showRepoStars="true" -->
![Crates.io Version](https://img.shields.io/crates/v/c12-parser)
![Crates.io Total Downloads](https://img.shields.io/crates/d/c12-parser)
![docs.rs](https://img.shields.io/docsrs/c12-parser)
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/un-rust/c12-parser)
![GitHub Repo stars](https://img.shields.io/github/stars/un-rust/c12-parser)
<!-- /automdrs -->

<!-- automdrs:description -->

Toolbox for parsing and stringifying various formats, including JSON, JSON5, JSONC, INI, TOML, and YAML.

<!-- /automdrs -->

**[Full documentation →](https://docs.rs/c12-parser/)**

## Quick start

<!-- automdrs:cargo-add -->

```sh
cargo add c12-parser
```

<!-- /automdrs -->

## Usage

<!-- automdrs:file src="./src/main.rs" -->
```rust
//! c12-parser API usage examples
//!
//! This binary demonstrates the main APIs. For full examples, see `examples/`:
//! - `cargo run --example hello_world`   — JSON parse & stringify
//! - `cargo run --example parse_json`    — JSON with FormatOptions
//! - `cargo run --example parse_json5`   — JSON5 (unquoted keys, trailing commas)
//! - `cargo run --example parse_jsonc`   — JSONC (comments, JsoncExtraOptions)
//! - `cargo run --example parse_toml`    — TOML
//! - `cargo run --example parse_yaml`    — YAML
//! - `cargo run --example parse_ini`     — INI

use c12_parser::{parse_ini, parse_json, parse_jsonc, stringify_ini, stringify_json, stringify_jsonc};
use serde_json::Value;

fn main() {
    println!("=== c12-parser API demo ===\n");

    // JSON: parse_json, stringify_json
    let json_text = r#"{ "name": "c12-parser", "version": "1.0" }"#;
    let formatted = parse_json::<Value>(json_text, None).expect("parse_json");
    let out = stringify_json(&formatted, None).expect("stringify_json");
    println!("JSON:  {} -> {:?}", json_text, out);

    // JSONC: parse_jsonc, stringify_jsonc (comments stripped)
    let jsonc_text = r#"{ /* comment */ "x": 1 }"#;
    let formatted = parse_jsonc(jsonc_text, None, None).expect("parse_jsonc");
    let out = stringify_jsonc(&formatted, None).expect("stringify_jsonc");
    println!("JSONC: {} -> {:?}", jsonc_text, out);

    // INI: parse_ini, stringify_ini
    let ini_text = r#"[section]
key = value"#;
    let map = parse_ini(ini_text);
    let out = stringify_ini(&map);
    println!("INI:   sections={:?} -> {}", map.keys().collect::<Vec<_>>(), out);

    println!("\nRun `cargo run --example <name>` for more examples.");
}
```
<!-- /automdrs -->

## License

<!-- automdrs:contributors author="UnRUST" license="Apache-2.0" -->
Published under the [Apache-2.0](./LICENSE) license.
Made by [@UnRUST](https://github.com/un-rust) 💛
<br><br>
<a href="https://github.com/un-rust/c12-parser/graphs/contributors">
<img src="https://contrib.rocks/image?repo=un-rust/c12-parser" />
</a>
<!-- /automdrs -->

<!-- automdrs:with-automdrs -->

---

_🛠️ auto updated with [automd-rs](https://github.com/betterhyq/automd-rs)_

<!-- /automdrs -->