Skip to content

Commit 78bd593

Browse files
committed
Factor out common delimited() pattern
1 parent 69f2b5d commit 78bd593

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/readme.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use url::Url;
88
use winnow::{
99
ascii::{line_ending, space1},
1010
combinator::{delimited, preceded, repeat, rest, separated, terminated},
11+
error::ParserError,
1112
seq,
1213
token::take_till,
1314
PResult, Parser,
@@ -286,11 +287,7 @@ fn parse_readme(input: &mut &str) -> PResult<Readme> {
286287
}
287288

288289
fn badge(input: &mut &str) -> PResult<Badge> {
289-
let (image, url) = (
290-
delimited('[', image, ']'),
291-
delimited('(', take_till(1.., ')'), ')'),
292-
)
293-
.parse_next(input)?;
290+
let (image, url) = (delimited('[', image, ']'), bracketed1('(', ')')).parse_next(input)?;
294291
Ok(Badge {
295292
url: image.url,
296293
alt: image.alt,
@@ -310,17 +307,20 @@ fn image(input: &mut &str) -> PResult<Image> {
310307
fn link(input: &mut &str) -> PResult<Link> {
311308
seq! {
312309
Link {
313-
_: '[',
314-
text: take_till(1.., ']').map(String::from),
315-
_: ']',
316-
_: '(',
317-
url: take_till(1.., ')').map(String::from),
318-
_: ')',
310+
text: bracketed1('[', ']').map(String::from),
311+
url: bracketed1('(', ')').map(String::from),
319312
}
320313
}
321314
.parse_next(input)
322315
}
323316

317+
fn bracketed1<'a, E: ParserError<&'a str>>(
318+
open: char,
319+
close: char,
320+
) -> impl Parser<&'a str, &'a str, E> {
321+
delimited(open, take_till(1.., close), close)
322+
}
323+
324324
#[cfg(test)]
325325
mod tests {
326326
use super::*;

0 commit comments

Comments
 (0)