rsedn 0.2.0

A Rust library for reading and writing EDN (Extensible Data Notation) data.
Documentation
#[cfg(test)]
mod tests {
    use std::collections::LinkedList;

    use rsedn::{
        lexer::{source::Source, token::Token},
        parser::{self, form::FormKind},
    };

    #[test]
    fn simple_list() {
        let raw = "(+ 1 2)";
        let mut source: Source = raw.into();
        let lexemes = source.lex();
        let tokens = lexemes
            .into_iter()
            .map(|lexeme| Token::parse(&source, lexeme))
            .map(|token| token.unwrap())
            .collect::<LinkedList<_>>();
        let form = parser::parse_form(&mut tokens.iter()).unwrap().unwrap();

        assert!(matches!(form.kind, FormKind::List(_)));
    }

    #[test]
    fn hello_world() {
        let mut source: Source = r#"
        (defn hello_world 
            "Documentation string" 
            [arg1 & args] 
            (println "Hello World " arg1 args))"#
            .into();
        let lexemes = source.lex();
        let tokens = lexemes
            .into_iter()
            .map(|lexeme| Token::parse(&source, lexeme))
            .map(|token| token.unwrap())
            .collect::<LinkedList<_>>();
        let form = parser::parse_form(&mut tokens.iter()).unwrap().unwrap();

        assert!(matches!(form.kind, FormKind::List(_)));
    }
}