pub mod config;
pub mod deduplication;
pub mod document;
pub mod engine;
pub mod error;
pub mod preprocessor;
pub mod registry;
pub mod rule;
pub mod rules;
pub mod standard_provider;
#[cfg(test)]
pub mod test_helpers;
pub mod violation;
pub use config::Config;
pub use document::Document;
pub use engine::{LintEngine, PluginRegistry, RuleProvider};
pub use error::{
ConfigError, DocumentError, ErrorContext, IntoMdBookLintError, MdBookLintError, MdlntError,
PluginError, Result, RuleError,
};
pub use preprocessor::MdBookLint;
pub use registry::RuleRegistry;
pub use rule::{AstRule, Rule, RuleCategory, RuleMetadata, RuleStability};
pub use standard_provider::StandardRuleProvider;
pub use violation::{Severity, Violation};
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const NAME: &str = "mdbook-lint";
pub const DESCRIPTION: &str = "A fast linter for mdBook projects";
pub fn create_engine_with_all_rules() -> LintEngine {
let mut registry = PluginRegistry::new();
registry
.register_provider(Box::new(StandardRuleProvider))
.unwrap();
registry
.register_provider(Box::new(rules::MdBookRuleProvider))
.unwrap();
registry.create_engine().unwrap()
}
pub fn create_standard_engine() -> LintEngine {
standard_provider::create_standard_engine()
}
pub fn create_mdbook_engine() -> LintEngine {
let mut registry = PluginRegistry::new();
registry
.register_provider(Box::new(rules::MdBookRuleProvider))
.unwrap();
registry.create_engine().unwrap()
}
pub mod prelude {
pub use crate::{
Config, Document, create_engine_with_all_rules, create_mdbook_engine,
create_standard_engine,
engine::{LintEngine, PluginRegistry, RuleProvider},
error::{ErrorContext, IntoMdBookLintError, MdBookLintError, MdlntError, Result},
registry::RuleRegistry,
rule::{AstRule, Rule, RuleCategory, RuleMetadata, RuleStability},
violation::{Severity, Violation},
};
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version_info() {
assert_eq!(NAME, "mdbook-lint");
assert!(DESCRIPTION.contains("mdBook"));
}
#[test]
fn test_create_all_rules_engine() {
let engine = create_engine_with_all_rules();
let rules = engine.available_rules();
assert!(
rules.len() >= 60,
"Expected at least 60 rules, got {}",
rules.len()
);
}
#[test]
fn test_create_standard_engine() {
let engine = create_standard_engine();
let rules = engine.available_rules();
assert!(
rules.len() >= 50,
"Expected at least 50 standard rules, got {}",
rules.len()
);
}
#[test]
fn test_create_mdbook_engine() {
let engine = create_mdbook_engine();
let rules = engine.available_rules();
assert!(
rules.len() >= 4,
"Expected at least 4 mdbook rules, got {}",
rules.len()
);
}
#[test]
fn test_basic_engine_creation() {
let engine = LintEngine::new();
assert_eq!(engine.available_rules().len(), 0);
}
#[test]
fn test_plugin_registry_creation() {
let registry = PluginRegistry::new();
assert_eq!(registry.providers().len(), 0);
}
#[test]
fn test_rule_registry_creation() {
let registry = RuleRegistry::new();
assert!(registry.is_empty());
}
}