songy

telegram bot as a songbook
git clone git://git.relim.de/songy.git
Log | Files | Refs | README | LICENSE

commit d7f378261c56c63834d26315ecc9ccb5d2458fe0
parent 64a9e7687d511110f7701b3943ae6d41dfcb27b2
Author: devrobinkroeker <kroekerrobin@gmail.com>
Date:   Thu, 27 Apr 2023 17:49:18 +0200

Closes #3

Diffstat:
Msrc/main.rs | 36++++++++++++++++--------------------
1 file changed, 16 insertions(+), 20 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -209,41 +209,37 @@ fn get_folder_names(songs_path: &String) -> Vec<String> { } fn find_songs(search_string: &String, songs_path: &String, strings: &langs::Strings) -> Result<Vec<fs::DirEntry>, ErrNotFound> { - let mut songs: Vec<fs::DirEntry> = vec![]; + let mut result: Vec<fs::DirEntry> = vec![]; let mut filename: String; + let ss = strings.format(search_string).to_lowercase(); + // Check for exact match for file in get_songs(songs_path, None) { filename = file.file_name().to_str().expect("Error: name").to_string(); let f: Vec<&str> = filename.split(".").collect(); let mut name: String = f.get(0).expect("Error: get(0)").to_string(); name = name.to_lowercase(); - let ss = strings.format(search_string).to_lowercase(); if name == ss { - songs.push(file) - } else if name.contains(&ss) { - songs.push(file); + result.push(file) } } - if songs.len() > 0 { - return Ok(songs); + // Check for partial match + for file in get_songs(songs_path, None) { + filename = file.file_name().to_str().expect("Error: name").to_string(); + let f: Vec<&str> = filename.split(".").collect(); + let mut name: String = f.get(0).expect("Error: get(0)").to_string(); + name = name.to_lowercase(); + if name.contains(&ss) { + result.push(file); + } + } + if result.len() > 0 { + return Ok(result); } else { return Err(ErrNotFound { message: "Didn't find any song.".to_string() }); } } -/* fn get_song(song_name: &str, songs_path: &String) -> Result<String, ErrNotFound> { - for file in get_songs(songs_path) { - let f: Vec<&str> = file.split(".").collect(); - let name: &str = f.get(0).expect("Error: get(0)"); - if name == song_name { - let mut filepath = songs_path.to_owned(); - filepath.push_str(&file); - return Ok(filepath); - } - } - return Err(ErrNotFound { message: "Didn't find song.".to_string() }); -} */ - fn get_songs(songs_path: &String, folder_name: Option<&String>) -> Vec<fs::DirEntry> { match folder_name { Some(name) => {