deltachat_message_parser 0.14.1

email, link, hashtag, md and more - parsing for deltachat messages
Documentation
use nom::{
    bytes::complete::take_while_m_n, character::complete::char, combinator::recognize,
    sequence::tuple, IResult,
};

use crate::parser::{
    parse_from_text::base_parsers::CustomError,
    utils::{is_hex_digit, is_sub_delim, is_unreserved},
};

fn is_ipvfuture_last(ch: char) -> bool {
    is_sub_delim(ch) || is_unreserved(ch) || ch == ':'
}

pub fn ipvfuture(input: &str) -> IResult<&str, &str, CustomError<&str>> {
    recognize(tuple((
        char('v'),
        take_while_m_n(1, 1, is_hex_digit),
        char('.'),
        take_while_m_n(1, 1, is_ipvfuture_last),
    )))(input)
}