Skip to content

Commit

Permalink
Adds validator field to Output
Browse files Browse the repository at this point in the history
  • Loading branch information
tailhook committed Sep 7, 2017
1 parent 6b1b994 commit d3fd1bd
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 4 deletions.
5 changes: 4 additions & 1 deletion src/grammar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use parse_error::ParseError;
use preparser::{Preparser, Syntax};
use render::{self, template};
use tokenizer::{Tokenizer, TokenStream, Token, Kind};
use validators::Validator;
use {Options, Pos};


Expand Down Expand Up @@ -70,6 +71,7 @@ pub enum StatementCode {
Output {
left_ws: OutputMode,
expr: Expr,
validator: Option<Validator>,
right_ws: OutputMode,
},
Cond {
Expand Down Expand Up @@ -333,7 +335,8 @@ fn expression<'a>(input: TokenStream<'a>)
.map(|((start, expr), end)| {
let left_ws = OutputMode::start(&start);
let right_ws = OutputMode::end(&end);
StatementCode::Output { left_ws, expr, right_ws }
// TODO(tailhook) parse validator
StatementCode::Output { left_ws, expr, validator: None, right_ws }
})
.parse_stream(input)
}
Expand Down
2 changes: 1 addition & 1 deletion src/oneline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ impl Postprocess {
}
};
match st[i].code {
Output { ref mut left_ws, expr: _, ref mut right_ws } => {
Output { ref mut left_ws, ref mut right_ws, .. } => {
if *left_ws == Preserve {
*left_ws = if fix_start { Space } else { Strip };
}
Expand Down
4 changes: 2 additions & 2 deletions src/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ fn write_block<'x, 'render>(r: &mut Renderer,
}
}
}
Output { left_ws, expr: _, right_ws } => {
Output { left_ws, right_ws, .. } => {
match min(left_ws, r.tail_mode) {
Preserve => {},
Strip => {
Expand All @@ -293,7 +293,7 @@ fn write_block<'x, 'render>(r: &mut Renderer,
}
}
let e = items.clone().map(|x| match x[idx].code {
Output { left_ws: _, ref expr, right_ws: _ } => expr,
Output { ref expr, .. } => expr,
_ => unreachable!(),
});
let var = &eval_expr(r, root, &e);
Expand Down
2 changes: 2 additions & 0 deletions src/tests/body.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ fn var() {
position: line(1, 5, 6),
code: Var(String::from("x")),
},
validator: None,
right_ws: Preserve,
},
},
Expand Down Expand Up @@ -172,6 +173,7 @@ fn iteration() {
position: line(3, 8, 9),
code: Var("x".into()),
},
validator: None,
right_ws: Preserve,
},
},
Expand Down
12 changes: 12 additions & 0 deletions src/validators.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,15 @@ pub enum Validator {
Anything,
Regex(Regex),
}

impl PartialEq for Validator {
fn eq(&self, other: &Validator) -> bool {
use self::Validator::*;
match (self, other) {
(&Anything, &Anything) => true,
(&Anything, &Regex(..)) => false,
(&Regex(..), &Anything) => false,
(&Regex(ref a), &Regex(ref b)) => a.as_str() == b.as_str(),
}
}
}

0 comments on commit d3fd1bd

Please sign in to comment.