use glue::prelude::*;
use std::ops::RangeBounds;
pub fn identifier_character(character: char) -> bool {
character.is_alphanumeric()
}
pub fn identifier<'a>() -> impl Parser<'a, &'a str> {
move |ctx| {
take(1.., is(identifier_character))
.parse(ctx)
.map_error(|error| error.tag("identifier"))
}
}
pub fn indentation(character: char) -> bool {
character == ' ' || character == '\t'
}
pub fn indent<'a, R>(range: R) -> impl Parser<'a, &'a str>
where
R: RangeBounds<usize> + Clone,
{
move |ctx| take(range.clone(), is(indentation)).parse(ctx)
}