diff options
author | Titus Wormer <tituswormer@gmail.com> | 2022-06-21 18:09:24 +0200 |
---|---|---|
committer | Titus Wormer <tituswormer@gmail.com> | 2022-06-21 18:09:24 +0200 |
commit | f5bb9ab57b9153775a9ffca7322173ec424d4669 (patch) | |
tree | 5364784b9634e5debc6cd43e7e72c97f822d8211 /src | |
parent | d1063268e62633a334bb9464f7cba2385da5812d (diff) | |
download | markdown-rs-f5bb9ab57b9153775a9ffca7322173ec424d4669.tar.gz markdown-rs-f5bb9ab57b9153775a9ffca7322173ec424d4669.tar.bz2 markdown-rs-f5bb9ab57b9153775a9ffca7322173ec424d4669.zip |
Add support for capping destination (raw) balance
Diffstat (limited to 'src')
-rw-r--r-- | src/construct/definition.rs | 1 | ||||
-rw-r--r-- | src/construct/partial_destination.rs | 7 |
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); |