use alloc::vec::Vec;
pub struct Test<S> {
pub filter: S,
pub input: S,
pub output: Vec<S>,
}
pub struct Parser<I>(I);
impl<I> Parser<I> {
pub fn new(lines: I) -> Self {
Self(lines)
}
}
impl<S: core::ops::Deref<Target = str>, I: Iterator<Item = S>> Iterator for Parser<I> {
type Item = Test<S>;
fn next(&mut self) -> Option<Self::Item> {
let lines = &mut self.0;
Some(Test {
filter: lines.find(|l| !(l.is_empty() || l.starts_with('#')))?,
input: lines.next()?,
output: lines.take_while(|l| !l.is_empty()).collect(),
})
}
}