ziyy-core 0.1.4

Terminal Styling using HTML-like syntax.
Documentation
use std::rc::Rc;

pub use parse::ParserOptions;

use crate::{Document, Indexer, Parser, Resolver, Splitter};

mod parse;
mod render;

pub struct Ziyy {
    doc: Rc<Document>,
}

impl Ziyy {
    pub fn parse(source: String, options: ParserOptions) -> crate::Result<Self> {
        let mut indexer = Indexer::new();
        let source = indexer.index(source);
        let mut splitter = Splitter::new();
        let frags = splitter.split(source);

        let parser = Parser::new(false);
        let chunks = match parser.parse(frags) {
            Ok(v) => v,
            Err(e) => panic!("{}", e),
        };

        let mut resolver = Resolver::new(false);
        Ok(Self {
            doc: resolver.resolve(chunks)?,
        })
    }

    pub fn render(&mut self) {}
}