sdp-rs 0.2.1

SDP Rust library, parser & generator of the Session Description Protocol
Documentation
use crate::TResult;

#[derive(Debug, PartialEq, Eq, Clone)]
pub struct Tokenizer<'a> {
    pub adjustment: &'a str,
    pub offset: &'a str,
}

impl<'a> Tokenizer<'a> {
    pub fn tokenize(part: &'a str) -> TResult<'a, Self> {
        use crate::parser_utils::*;
        use nom::branch::alt;
        use nom::combinator::rest;

        let (rem, adjustment) = until_space(part)?;
        let (rem, offset) = alt((until_space, rest))(rem)?;

        Ok((rem, Self { adjustment, offset }))
    }
}

impl<'a> From<(&'a str, &'a str)> for Tokenizer<'a> {
    fn from((adjustment, offset): (&'a str, &'a str)) -> Self {
        Self { adjustment, offset }
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn tokenizer_part1() {
        let zone_part = concat!("3730928400 -1h");

        assert_eq!(
            Tokenizer::tokenize(zone_part),
            Ok(("", ("3730928400", "-1h").into())),
        );
    }

    #[test]
    fn tokenizer_part2() {
        let zone_part = concat!("3730928400 0h");

        assert_eq!(
            Tokenizer::tokenize(zone_part),
            Ok(("", ("3730928400", "0h").into())),
        );
    }
}