balsa 0.3.2

Reference implementation for the Balsa molecular line notation.
Documentation
use lyn::Scanner;

pub fn nonzero(scanner: &mut Scanner) -> Option<u8> {
    scanner.transform(|character| match character {
        '1' => Some(1),
        '2' => Some(2),
        '3' => Some(3),
        '4' => Some(4),
        '5' => Some(5),
        '6' => Some(6),
        '7' => Some(7),
        '8' => Some(8),
        '9' => Some(9),
        _ => None,
    })
}

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

    #[test]
    fn not_found() {
        let mut scanner = Scanner::new("x");

        assert_eq!(nonzero(&mut scanner), None)
    }

    #[test]
    fn found() {
        let mut scanner = Scanner::new("1");

        assert_eq!(nonzero(&mut scanner), Some(1))
    }
}