balsa 0.3.2

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

use crate::feature::BondKind;

pub fn bond(scanner: &mut Scanner) -> Option<BondKind> {
    scanner.transform(|target| match target {
        '-' => Some(BondKind::Single),
        '=' => Some(BondKind::Double),
        '#' => Some(BondKind::Triple),
        '/' => Some(BondKind::Up),
        '\\' => Some(BondKind::Down),
        _ => None,
    })
}

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

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

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

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

        assert_eq!(bond(&mut scanner), Some(BondKind::Single))
    }
}