1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//! A Rust library for parsing and formatting JAML (Just Another Markup Language).
//!
//! JAML is a human-readable data serialization format similar to YAML but with explicit integer and binary types.
//! It shares the same data model as JASN, providing a YAML-like syntax as an alternative to the JSON5-like JASN format.
//!
//! # Features
//! 1. **Explicit Integer Types**: Distinguish between integers and floats (2 vs 2.0).
//! 2. **Binary Data**: Support for base64 and hex-encoded binary data
//! 3. **Timestamps**: ISO8601/RFC3339 timestamps
//! 4. **YAML-inspired syntax**: Indentation-based structure, cleaner appearance
//!
//! # Usage
//!
//! ## AST Manipulation (no serde required)
//!
//! ```rust
//! use jaml::{parse, format};
//!
//! fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let value = parse(r#"
//! name: "Alice"
//! age: 30
//! balance: 1234.56
//! data: b64"SGVsbG8="
//! tags:
//! - "rust"
//! - "yaml"
//! - "parser"
//! "#)?;
//!
//! println!("{:#?}", value);
//!
//! // Format back to JAML
//! let formatted = format(&value);
//! println!("{}", formatted);
//! Ok(())
//! }
//! ```
//!
//! ## Serde Integration (default feature)
//!
//! ```
//! use serde::{Deserialize, Serialize};
//!
//! #[derive(Serialize, Deserialize)]
//! struct Person {
//! name: String,
//! age: u32,
//! }
//!
//! let person = Person { name: "Alice".into(), age: 30 };
//! let jaml_text = jaml::to_string(&person).unwrap();
//! let parsed: Person = jaml::from_str(&jaml_text).unwrap();
//! ```
//!
//! # Features
//!
//! - `serde` (default): Enable serde serialization/deserialization support
// Re-export core types
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;