statue 0.3.1

Easier way to query selectors for static HTML pages.
Documentation
use proc_macro::token_stream::IntoIter as TokenTreeIter;

use crate::sel_queries::{ExplKindSelQuery, SelQueries};

use super::{error::selectors_impl::Error, Parse};

impl Parse for SelQueries {
    type Error = Error;
    type OkTy = Self;
    type Wrapper<T, E> = Result<T, E>;
    fn parse(iter: &mut TokenTreeIter) -> Self::Wrapper<Self::OkTy, Self::Error> {
        let mut selectors = Self::new();
        loop {
            match ExplKindSelQuery::parse(iter) {
                Ok(selector) => selectors.push(selector),
                Err(e) => match e.try_into() {
                    Err(_unrepr_err) => break,
                    Ok(err) => return Err(err),
                },
            }
        }
        if selectors.is_empty() {
            return Err(Error::Finished);
        }
        Ok(selectors)
    }
}