aboutsummaryrefslogtreecommitdiffstats
path: root/askama_parser/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--askama_parser/src/lib.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/askama_parser/src/lib.rs b/askama_parser/src/lib.rs
index 1e48262..de88a20 100644
--- a/askama_parser/src/lib.rs
+++ b/askama_parser/src/lib.rs
@@ -324,3 +324,18 @@ impl Default for Syntax<'static> {
}
}
}
+
+#[derive(Clone, Copy, Default)]
+pub(crate) struct Level(u8);
+
+impl Level {
+ fn nest(self, i: &str) -> Result<Level, nom::Err<nom::error::Error<&str>>> {
+ if self.0 >= Self::MAX_DEPTH {
+ return Err(nom::Err::Failure(error_position!(i, ErrorKind::TooLarge)));
+ }
+
+ Ok(Level(self.0 + 1))
+ }
+
+ const MAX_DEPTH: u8 = 64;
+}