solidhunter_lib/rules/
factory.rs1use crate::rules::create_rules;
2use crate::rules::types::*;
3use std::collections::HashMap;
4
5pub struct RuleFactory {
6 _buildables: RulesMap,
7}
8
9impl Default for RuleFactory {
10 fn default() -> Self {
11 RuleFactory {
12 _buildables: create_rules(),
13 }
14 }
15}
16
17impl RuleFactory {
18 pub fn new() -> RuleFactory {
19 RuleFactory {
20 _buildables: HashMap::new(),
21 }
22 }
23
24 pub fn create_rule(&self, rule: RuleEntry) -> Box<dyn RuleType> {
25 let rule_type = self._buildables.get(&rule.id);
26 if rule_type.is_none() {
27 panic!("Rule {} not found", &rule.id);
28 }
29 rule_type.unwrap()(rule)
30 }
31}