String closeness seems alright
Might be worth sorting by relevance
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
use clap::Parser;
|
||||
use scryfall_deser::find_matching_cards_scryfall_style;
|
||||
use scryfall_deser::get_all_mtg_words;
|
||||
use scryfall_deser::get_card_by_name;
|
||||
use scryfall_deser::get_local_cache_folder;
|
||||
use scryfall_deser::init_db;
|
||||
@@ -15,15 +16,16 @@ impl Termination for MtgCardExit {
|
||||
MtgCardExit::Success => ExitCode::SUCCESS,
|
||||
MtgCardExit::EmptySearchString => ExitCode::from(101),
|
||||
MtgCardExit::NoExactMatchCard => ExitCode::from(102),
|
||||
MtgCardExit::DidYouMean => ExitCode::from(105),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum MtgCardExit {
|
||||
// No error... unsure it should be in this enum
|
||||
Success,
|
||||
EmptySearchString,
|
||||
NoExactMatchCard,
|
||||
DidYouMean,
|
||||
}
|
||||
|
||||
#[derive(Parser, Debug)]
|
||||
@@ -88,14 +90,26 @@ fn main() -> MtgCardExit {
|
||||
let matching_cards = find_matching_cards_scryfall_style(&args.search_text);
|
||||
|
||||
if matching_cards.is_empty() {
|
||||
// Do some distance checking stuff
|
||||
let mtg_words = get_all_mtg_words();
|
||||
let mut close_names = Vec::new();
|
||||
for search_string in args.search_text {
|
||||
for mtg_card_name in &mtg_words {
|
||||
let dist = damerau_levenshtein(&search_string, &mtg_card_name);
|
||||
if dist <= 2 {
|
||||
close_names.push(mtg_card_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
for card in close_names {
|
||||
println!("{}", card);
|
||||
}
|
||||
return MtgCardExit::DidYouMean;
|
||||
} else if matching_cards.len() == 1 {
|
||||
let card = get_card_by_name(&matching_cards[0].name, GetNameType::LowercaseName).unwrap();
|
||||
println!("{}", card);
|
||||
return MtgCardExit::Success;
|
||||
} else {
|
||||
for card in matching_cards {
|
||||
dbg!(&card);
|
||||
println!(
|
||||
"{}",
|
||||
get_card_by_name(&card.lowercase_name, GetNameType::LowercaseName)
|
||||
@@ -105,5 +119,4 @@ fn main() -> MtgCardExit {
|
||||
}
|
||||
return MtgCardExit::Success;
|
||||
}
|
||||
unreachable!("Don't know how you got here - there's a real bug with this");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user