udled 0.6.2

Tokenizer and parser
Documentation
use crate::{AsChar, Buffer, Char, Item, StringExt, Tokenizer};

macro_rules! impls {
    ($($name: ident => $method: ident),+) => {
      $(
        #[derive(Debug, Clone, Copy)]
        pub struct $name;

        impl<'input, B> Tokenizer<'input, B> for $name
        where
            B: Buffer<'input>,
            B::Item: AsChar,
        {
            type Token = Item<char>;

            fn to_token(
                &self,
                reader: &mut crate::Reader<'_, 'input, B>,
            ) -> Result<Self::Token, crate::Error> {
                let char = reader.parse(Char)?;
                if !char.value.$method() {
                    return Err(reader.error(stringify!($name)));
                }

                Ok(char)
            }
        }
      )+
    };
}

impls!(
  Alphabetic => is_alphabetic,
  AlphaNumeric => is_alphanumeric,
  Punct => is_ascii_punctuation,
  Numeric => is_numeric,
  AsciiWhiteSpace => is_ascii_whitespace,
  WhiteSpace => is_whitespace,
  LineBreak => is_linebreak
);