toonify_core/
lib.rs

1mod decoder;
2mod encoder;
3mod error;
4mod input;
5mod options;
6mod quoting;
7mod tokens;
8mod validator;
9
10pub use crate::decoder::{decode_reader, decode_str};
11pub use crate::encoder::encode_value;
12pub use crate::error::ToonifyError;
13pub use crate::input::{load_from_reader, load_from_str, SourceFormat};
14pub use crate::options::{
15    DecoderOptions, Delimiter, EncoderOptions, KeyFoldingMode, PathExpansionMode,
16};
17pub use crate::tokens::{count_tokens, TokenModel};
18pub use crate::validator::{validate_reader, validate_str};
19
20/// Convert the provided string in the given `SourceFormat` into TOON.
21pub fn convert_str(
22    input: &str,
23    format: SourceFormat,
24    options: EncoderOptions,
25) -> Result<String, ToonifyError> {
26    let value = load_from_str(input, format)?;
27    encode_value(&value, &options)
28}
29
30/// Convert readable input (JSON/YAML/XML/CSV) into TOON.
31pub fn convert_reader<R: std::io::Read>(
32    mut reader: R,
33    format: SourceFormat,
34    options: EncoderOptions,
35) -> Result<String, ToonifyError> {
36    let mut buf = String::new();
37    std::io::Read::read_to_string(&mut reader, &mut buf)?;
38    convert_str(&buf, format, options)
39}