balsa 0.3.2

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

use crate::feature::Selection;

pub fn selection(scanner: &mut Scanner) -> Option<Selection> {
    scanner.transform(|character| match character {
        'b' => Some(Selection::B),
        'c' => Some(Selection::C),
        'n' => Some(Selection::N),
        'o' => Some(Selection::O),
        'p' => Some(Selection::P),
        's' => Some(Selection::S),
        _ => None,
    })
}

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

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

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

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

        assert_eq!(selection(&mut scanner), Some(Selection::B))
    }
}