ppbert 0.10.0

Simple pretty printer for Erlang's External Term Format
Documentation
use crate::bertterm::BertTerm;
use crate::error::Result;
use crate::parsers::Parser;
use crate::parsers::basic::BasicParser;

pub struct Bert1Parser {
    basic_parser: BasicParser
}

impl Bert1Parser {
    pub fn new() -> Self {
        Bert1Parser {
            basic_parser: BasicParser::new(vec![])
        }
    }
}

impl Parser for Bert1Parser {
    fn set_input(&mut self, bytes: Vec<u8>) {
        self.basic_parser = BasicParser::new(bytes);
    }

    fn next(&mut self) -> Option<Result<BertTerm>> {
        if self.basic_parser.eof() {
            return None;
        }
        let result =
            self.basic_parser.magic_number()
            .and_then(|_| self.basic_parser.bert_term());
        return Some(result);
    }
}