1use crate::{checkers::checker_result::CheckResult, config::get_config};
2use lemmeknow::Identifier;
3use log::trace;
4
5use super::{
6 checker_type::{Check, Checker},
7 english::EnglishChecker,
8 human_checker,
9 lemmeknow_checker::LemmeKnow,
10 regex_checker::RegexChecker,
11};
12
13pub struct Athena;
15
16impl Check for Checker<Athena> {
17 fn new() -> Self {
18 Checker {
19 name: "Athena Checker",
21 description: "Runs all available checkers",
22 link: "",
23 tags: vec!["athena", "all"],
24 expected_runtime: 0.01,
25 popularity: 1.0,
26 lemmeknow_config: Identifier::default(),
27 _phantom: std::marker::PhantomData,
28 }
29 }
30
31 fn check(&self, text: &str) -> CheckResult {
32 let config = get_config();
33 if config.regex.is_some() {
35 trace!("running regex");
36 let regex_checker = Checker::<RegexChecker>::new();
37 let regex_result = regex_checker.check(text);
38 if regex_result.is_identified {
39 let mut check_res = CheckResult::new(®ex_checker);
40 check_res.is_identified = human_checker::human_checker(®ex_result);
41 return check_res;
42 }
43 } else {
44 let lemmeknow = Checker::<LemmeKnow>::new();
48 let lemmeknow_result = lemmeknow.check(text);
49 if lemmeknow_result.is_identified {
50 let mut check_res = CheckResult::new(&lemmeknow);
51 check_res.is_identified = human_checker::human_checker(&lemmeknow_result);
52 return check_res;
53 }
54
55 let english = Checker::<EnglishChecker>::new();
56 let english_result = english.check(text);
57 if english_result.is_identified {
58 let mut check_res = CheckResult::new(&english);
59 check_res.is_identified = human_checker::human_checker(&english_result);
60 return check_res;
61 }
62 }
63
64 CheckResult::new(self)
65 }
66}