[][src]Function mshio::parsers::parse_delimited_block

pub fn parse_delimited_block<I, O1, O2, O3, E: ParseError<I>, F, G, H>(
    start: F,
    end: G,
    parser: H
) -> impl Fn(I) -> IResult<I, O3, E> where
    I: Clone + InputIter + InputTake,
    F: Fn(I) -> IResult<I, O1, E>,
    G: Fn(I) -> IResult<I, O2, E>,
    H: Fn(I) -> IResult<I, O3, E>, 
use std::str::FromStr;
use nom::bytes::complete::tag;
use nom::character::complete::digit0;
use nom::combinator::map;
use nom::Err;
use nom::error::{ErrorKind, ParseError};

use mshio::parsers::parse_delimited_block;
let parser = parse_delimited_block::<_,_,_,_,(_,_),_,_,_>(tag("$Start\n"), tag("$End\n"), map(digit0, FromStr::from_str));

assert_eq!(parser("$Start\n123\n$End\n456"), Ok(("456", Ok(123))));
assert_eq!(parser("$Start\n123\n$End\n"), Ok(("", Ok(123))));
assert_eq!(parser("$Start\n$End\n"), Ok(("", i32::from_str(""))));