mdbook_lint_core/
config.rs1use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8
9#[derive(Debug, Clone, Serialize, Deserialize, Default)]
11pub struct Config {
12 #[serde(rename = "enabled-categories", default)]
14 pub enabled_categories: Vec<String>,
15
16 #[serde(rename = "disabled-categories", default)]
18 pub disabled_categories: Vec<String>,
19
20 #[serde(rename = "enabled-rules", default)]
22 pub enabled_rules: Vec<String>,
23
24 #[serde(rename = "disabled-rules", default)]
26 pub disabled_rules: Vec<String>,
27
28 #[serde(rename = "deprecated-warning", default)]
30 pub deprecated_warning: DeprecatedWarningLevel,
31
32 #[serde(rename = "markdownlint-compatible", default)]
34 pub markdownlint_compatible: bool,
35
36 #[serde(flatten)]
38 pub rule_configs: HashMap<String, toml::Value>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize, Default)]
43#[serde(rename_all = "lowercase")]
44pub enum DeprecatedWarningLevel {
45 #[default]
47 Warn,
48 Info,
50 Silent,
52}
53
54impl Config {
55 pub fn should_run_rule(
57 &self,
58 rule_id: &str,
59 rule_category: &str,
60 rule_enabled_by_default: bool,
61 ) -> bool {
62 if self.enabled_rules.contains(&rule_id.to_string()) {
64 return true;
65 }
66 if self.disabled_rules.contains(&rule_id.to_string()) {
67 return false;
68 }
69
70 if self.enabled_categories.contains(&rule_category.to_string()) {
72 return true;
73 }
74 if self
75 .disabled_categories
76 .contains(&rule_category.to_string())
77 {
78 return false;
79 }
80
81 rule_enabled_by_default
83 }
84}