Function sise::serialize

source ·
pub fn serialize<'a>(
    root_node: &'a Node,
    style: &'a mut dyn SerializeStyle<'a>
) -> String
Expand description

Serializes root_node, returning the result.

Panics

Panics if there are invalid atoms (i.e. they fail check_atom).

Example

extern crate sise;
use sise::sise_expr;

let tree = sise_expr!(["example", ["1", "2", "3"], ["a", "b", "c"]]);

// Compact
let compact = sise::serialize(&tree, &mut sise::CompactSerializeStyle::new());
assert_eq!(compact, "(example (1 2 3) (a b c))");

// Spaced
let spacing_config = sise::SerializeSpacingConfig {
    line_ending: sise::SerializeLineEnding::Lf,
    indent_len: 4,
    indent_char: sise::SerializeIndentChar::Space,
};
let keep_same_line = std::collections::HashSet::new();
let spaced = sise::serialize(&tree, &mut sise::SpacedSerializeStyle::new(spacing_config, keep_same_line));
assert_eq!(spaced, "(example\n    (1\n        2\n        3\n    )\n    (a\n        b\n        c\n    )\n)\n");