aboutsummaryrefslogtreecommitdiffstats
path: root/src/construct
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-21 18:09:24 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-21 18:09:24 +0200
commitf5bb9ab57b9153775a9ffca7322173ec424d4669 (patch)
tree5364784b9634e5debc6cd43e7e72c97f822d8211 /src/construct
parentd1063268e62633a334bb9464f7cba2385da5812d (diff)
downloadmarkdown-rs-f5bb9ab57b9153775a9ffca7322173ec424d4669.tar.gz
markdown-rs-f5bb9ab57b9153775a9ffca7322173ec424d4669.tar.bz2
markdown-rs-f5bb9ab57b9153775a9ffca7322173ec424d4669.zip
Add support for capping destination (raw) balance
Diffstat (limited to 'src/construct')
-rw-r--r--src/construct/definition.rs1
-rw-r--r--src/construct/partial_destination.rs7
2 files changed, 4 insertions, 4 deletions
diff --git a/src/construct/definition.rs b/src/construct/definition.rs
index 69d8d9b..f8dc249 100644
--- a/src/construct/definition.rs
+++ b/src/construct/definition.rs
@@ -173,6 +173,7 @@ fn destination_before(tokenizer: &mut Tokenizer, code: Code) -> StateFnResult {
t,
c,
DestinationOptions {
+ limit: usize::MAX,
destination: TokenType::DefinitionDestination,
literal: TokenType::DefinitionDestinationLiteral,
marker: TokenType::DefinitionDestinationLiteralMarker,
diff --git a/src/construct/partial_destination.rs b/src/construct/partial_destination.rs
index 823ce99..b2ceeb8 100644
--- a/src/construct/partial_destination.rs
+++ b/src/construct/partial_destination.rs
@@ -57,6 +57,8 @@ pub struct Options {
pub raw: TokenType,
/// Token for a the string.
pub string: TokenType,
+ /// Maximum unbalanced parens.
+ pub limit: usize,
}
/// State needed to parse destination.
@@ -176,12 +178,9 @@ fn enclosed_escape(tokenizer: &mut Tokenizer, code: Code, info: Info) -> StateFn
/// a|b
/// ```
fn raw(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> StateFnResult {
- // To do: configurable.
- let limit = usize::MAX;
-
match code {
Code::Char('(') => {
- if info.balance >= limit {
+ if info.balance >= info.options.limit {
(State::Nok, None)
} else {
tokenizer.consume(code);