codebook 0.1.0

A code-aware spell checker library (dependency for codebook-lsp)
Documentation
use codebook::queries::LanguageType;
mod utils;

#[test]
fn test_haskell_simple() {
    utils::init_logging();
    let processor = utils::get_processor();
    let sample_text = r#"
        func myArrg = do
           calculatr <- makeCowculator
           sum calculatr [ numberr1, argument2, myArrg ]
    "#;
    let expected = vec!["Arrg", "Cowculator", "calculatr", "numberr"];
    let binding = processor
        .spell_check(sample_text, Some(LanguageType::Haskell), None)
        .to_vec();
    let mut misspelled = binding
        .iter()
        .map(|r| r.word.as_str())
        .collect::<Vec<&str>>();
    misspelled.sort();
    assert_eq!(misspelled, expected);
}

#[test]
fn test_haskell_string() {
    utils::init_logging();
    let processor = utils::get_processor();
    let sample_text = r#"
        let str =  "herlo, world"
        in str
    "#;
    let expected = vec!["herlo"];
    let binding = processor
        .spell_check(sample_text, Some(LanguageType::Haskell), None)
        .to_vec();
    let mut misspelled = binding
        .iter()
        .map(|r| r.word.as_str())
        .collect::<Vec<&str>>();
    misspelled.sort();
    assert_eq!(misspelled, expected);
}

#[test]
fn test_haskell_module() {
    utils::init_logging();
    let processor = utils::get_processor();
    let sample_text = r#"
        import Data.Functoin as Func
        import Data.Function qualified as D.Funcc
    "#;
    let expected = vec!["Funcc", "Functoin"];
    let binding = processor
        .spell_check(sample_text, Some(LanguageType::Haskell), None)
        .to_vec();
    let mut misspelled = binding
        .iter()
        .map(|r| r.word.as_str())
        .collect::<Vec<&str>>();
    misspelled.sort();
    assert_eq!(misspelled, expected);
}

#[test]
fn test_haskell_types() {
    utils::init_logging();
    let processor = utils::get_processor();
    let sample_text = r#"
        func :: forall badd . (MyTypeeClass var) => varr -> Intt
        func = varToInt
    "#;
    let expected = vec!["Intt", "Typee", "badd", "varr"];
    let binding = processor
        .spell_check(sample_text, Some(LanguageType::Haskell), None)
        .to_vec();
    let mut misspelled = binding
        .iter()
        .map(|r| r.word.as_str())
        .collect::<Vec<&str>>();
    misspelled.sort();
    assert_eq!(misspelled, expected);
}