tek/edn/src/lib.rs

34 lines
1.2 KiB
Rust

#![feature(type_alias_impl_trait)]
#![feature(impl_trait_in_fn_trait_return)]
mod edn_lib; pub use self::edn_lib::*;
mod edn_layout; pub use self::edn_layout::*;
#[cfg(test)] #[test] fn test_edn () -> Result<(), ParseError> {
use Item::*;
assert_eq!(Item::read_all("")?,
vec![]);
assert_eq!(Item::read_all(" ")?,
vec![]);
assert_eq!(Item::read_all("1234")?,
vec![Num(1234)]);
assert_eq!(Item::read_all("1234 5 67")?,
vec![Num(1234), Num(5), Num(67)]);
assert_eq!(Item::read_all("foo/bar")?,
vec![Key("foo/bar".into())]);
assert_eq!(Item::read_all(":symbol")?,
vec![Sym(":symbol".into())]);
assert_eq!(Item::read_all(" foo/bar :baz 456")?,
vec![Key("foo/bar".into()), Sym(":baz".into()), Num(456)]);
assert_eq!(Item::read_all(" (foo/bar :baz 456) ")?,
vec![Exp(vec![Key("foo/bar".into()), Sym(":baz".into()), Num(456)])]);
Ok(())
}
#[cfg(test)] #[test] fn test_edn_layout () -> Result<(), ParseError> {
let source = include_str!("example.edn");
let layout = Item::read_all(source)?;
panic!("{layout:?}");
let content = EdnLayout::from(&layout);
Ok(())
}