From cc083ec2847ae9d7e7c2c69569bf5697d7db4efa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Phil=20H=C3=B6fer?= <phil.hoefer@suma-ev.de> Date: Mon, 22 Jul 2024 12:03:02 +0200 Subject: [PATCH] Start Implementing New Blocklist --- src/predictors/basic_markov.rs | 21 +++++++++++++++++---- src/predictors/basic_set.rs | 21 +++++++++++++++++---- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/predictors/basic_markov.rs b/src/predictors/basic_markov.rs index be08257..963a7fb 100644 --- a/src/predictors/basic_markov.rs +++ b/src/predictors/basic_markov.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, fs::File}; +use std::{collections::HashMap, fs::{self, File}}; use csv::ReaderBuilder; @@ -46,13 +46,26 @@ impl Predictor for MarkovChainPredictor { } fn update_from_query(&mut self, query: &str) -> Result<(), Box<dyn std::error::Error>> { - let blocklist: Vec<&str> = match self.configuration.get("blocked_words") { + let mut raw_list = String::new(); + let blocklist: Vec<&str> = match self.configuration.get("blocklist") { Some(list) => { - list.split_whitespace().collect() + match fs::read_to_string(list) { + Ok(l) => { + raw_list = l.clone(); + raw_list.lines().collect() + }, + _ => Vec::new() + } }, _ => Vec::new() - }; + }; + + for word in blocklist.clone() { + if query.contains(word) { + return Ok(()); + } + } //println!("blocklist:{:?}",self.configuration); diff --git a/src/predictors/basic_set.rs b/src/predictors/basic_set.rs index a5eb354..d208039 100644 --- a/src/predictors/basic_set.rs +++ b/src/predictors/basic_set.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, f32::consts::E, fs::File}; +use std::{collections::HashMap, f32::consts::E, fs::{self, File}}; use crate::importers::Importer; @@ -45,13 +45,26 @@ impl Predictor for SetPredictor { } fn update_from_query(&mut self, query: &str) -> Result<(), Box<dyn std::error::Error>> { - let blocklist: Vec<&str> = match self.configuration.get("blocked_words") { + let mut raw_list = String::new(); + let blocklist: Vec<&str> = match self.configuration.get("blocklist") { Some(list) => { - list.split_whitespace().collect() + match fs::read_to_string(list) { + Ok(l) => { + raw_list = l.clone(); + raw_list.lines().collect() + }, + _ => Vec::new() + } }, _ => Vec::new() - }; + }; + + for word in blocklist.clone() { + if query.contains(word) { + return Ok(()); + } + } //println!("blocklist:{:?}",self.configuration); -- GitLab