Add first working pipeline of parse -> ast -> instr -> render
Signed-off-by: Marcel Müller <neikos@neikos.email>
This commit is contained in:
parent
f5050e369e
commit
1ea15f0e49
5 changed files with 234 additions and 6 deletions
|
|
@ -285,6 +285,14 @@ impl<'input> TemplateToken<'input> {
|
|||
source,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn kind(&self) -> TokenKind {
|
||||
self.kind
|
||||
}
|
||||
|
||||
pub fn source(&self) -> &'input str {
|
||||
self.source
|
||||
}
|
||||
}
|
||||
|
||||
pub fn parse(input: &str) -> Result<ParsedTemplate<'_>, ParseFailure> {
|
||||
|
|
@ -321,6 +329,7 @@ fn parse_interpolate<'input>(
|
|||
) -> PResult<'input, Vec<TemplateToken<'input>>> {
|
||||
let prev_whitespace = opt(parse_whitespace).parse_next(input)?;
|
||||
let left_delim = "{{".map(TemplateToken::left_delim).parse_next(input)?;
|
||||
let wants_output = opt("=".map(TemplateToken::wants_output)).parse_next(input)?;
|
||||
|
||||
let get_tokens = repeat_till(1.., parse_interpolate_token, peek("}}"));
|
||||
let recover = take_until(0.., "}}").void();
|
||||
|
|
@ -337,6 +346,7 @@ fn parse_interpolate<'input>(
|
|||
let mut tokens = vec![];
|
||||
tokens.extend(prev_whitespace);
|
||||
tokens.push(left_delim);
|
||||
tokens.extend(wants_output);
|
||||
tokens.extend(inside_tokens);
|
||||
tokens.push(right_delim);
|
||||
tokens.extend(post_whitespace);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue