use crate::prelude::*;
pub struct CollectWhile<Op: ConcreteParser>(Op);
impl<Op> ConcreteSubparser<Op> for CollectWhile<Op>
where
Op: ConcreteParser
{
fn subparse
(value: <Op>::Input, parser: &mut Parser) -> Parser
where
Op: concrete_parser::ContainerCp
{
let op = Op::new(value);
let mut tokens = Tokens::new_empty();
loop {
if let Some(token) = op.try_next_token(parser) {
tokens.add_token(token);
} else {
break;
}
}
Parser::new(tokens)
}
}