#![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(()) }