yscl-rs

An efficient, minimal parser for YSCL.

Example

```rust use yscl::prelude::*;

let map = parsedoc(r#" kantuversion = "1.0.0" name = "fibonacci" license = [ "MIT" "Apache-2.0" ] dependencies = { yscl = "1.0.0" json = "1.0.0" } author = "xeklan (黒🐑)" "#).unwrap();

let expected = Map { entries: vec![ MapEntry { key: Identifier::new("kantuversion".toowned()).unwrap(), value: Node::Atom( Atom { value: "1.0.0".toowned(), }, ), }, MapEntry { key: Identifier::new("name".toowned()).unwrap(), value: Node::Atom( Atom { value: "fibonacci".toowned(), }, ), }, MapEntry { key: Identifier::new("license".toowned()).unwrap(), value: Node::List( List { elements: vec![ Node::Atom( Atom { value: "MIT".toowned(), }, ), Node::Atom( Atom { value: "Apache-2.0".toowned(), }, ), ], }, ), }, MapEntry { key: Identifier::new("dependencies".toowned()).unwrap(), value: Node::Map( Map { entries: vec![ MapEntry { key: Identifier::new("yscl".toowned()).unwrap(), value: Node::Atom( Atom { value: "1.0.0".toowned(), }, ), }, MapEntry { key: Identifier::new("json".toowned()).unwrap(), value: Node::Atom( Atom { value: "1.0.0".toowned(), }, ), }, ], }, ), }, MapEntry { key: Identifier::new("author".toowned()).unwrap(), value: Node::Atom( Atom { value: "xeklan (黒🐑)".to_owned(), }, ), }, ], };

assert_eq!(expected, map); ```

Docs

https://docs.rs/yscl/latest/yscl/

License

yscl-rs is distributed under both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.