reign_view 0.2.1

Opinionated Fullstack Web Framework in Rust
Documentation
use super::{Error, Parse, ParseStream, StringPart, Tokenize, ViewFields};
use proc_macro2::TokenStream;
use quote::{quote, TokenStreamExt};

#[derive(Debug)]
pub struct Text {
    pub content: Vec<StringPart>,
}

impl Parse for Text {
    fn parse(input: &mut ParseStream) -> Result<Self, Error> {
        Ok(Text {
            content: input.parse_text()?,
        })
    }
}

impl Tokenize for Text {
    fn tokenize(&self, tokens: &mut TokenStream, idents: &mut ViewFields, scopes: &ViewFields) {
        let mut ts = TokenStream::new();
        self.content.tokenize(&mut ts, idents, scopes);

        tokens.append_all(quote! {
            write!(f, #ts)?;
        })
    }
}