mdbook_lint_core/rules/standard/
md057.rs

1//! MD057: Reserved for future use
2//!
3//! This rule number is reserved in markdownlint for future implementation.
4//! It exists as a placeholder to maintain complete rule numbering.
5
6use crate::error::Result;
7use crate::rule::{Rule, RuleMetadata};
8use crate::{Document, violation::Violation};
9use comrak::nodes::AstNode;
10
11/// Placeholder for reserved rule MD057
12pub struct MD057;
13
14impl Rule for MD057 {
15    fn id(&self) -> &'static str {
16        "MD057"
17    }
18
19    fn name(&self) -> &'static str {
20        "reserved"
21    }
22
23    fn description(&self) -> &'static str {
24        "Reserved for future use"
25    }
26
27    fn metadata(&self) -> RuleMetadata {
28        RuleMetadata::reserved("Reserved for future implementation in markdownlint")
29            .introduced_in("mdbook-lint v0.1.0")
30    }
31
32    fn check_with_ast<'a>(
33        &self,
34        _document: &Document,
35        _ast: Option<&'a AstNode<'a>>,
36    ) -> Result<Vec<Violation>> {
37        // Reserved rules never produce violations
38        Ok(vec![])
39    }
40}
41
42#[cfg(test)]
43mod tests {
44    use super::*;
45    use crate::test_helpers::create_document;
46
47    #[test]
48    fn test_md057_rule_properties() {
49        let rule = MD057;
50        assert_eq!(rule.id(), "MD057");
51        assert_eq!(rule.name(), "reserved");
52        assert_eq!(rule.description(), "Reserved for future use");
53    }
54
55    #[test]
56    fn test_md057_metadata() {
57        let rule = MD057;
58        let metadata = rule.metadata();
59        assert_eq!(metadata.stability, crate::rule::RuleStability::Reserved);
60        assert!(
61            metadata
62                .introduced_in
63                .unwrap_or("")
64                .contains("mdbook-lint v0.1.0")
65        );
66    }
67
68    #[test]
69    fn test_md057_never_produces_violations() {
70        let rule = MD057;
71        let document = create_document("# Heading\n\nSome content with violations");
72        let violations = rule.check(&document).unwrap();
73        assert_eq!(violations.len(), 0);
74    }
75
76    #[test]
77    fn test_md057_with_empty_document() {
78        let rule = MD057;
79        let document = create_document("");
80        let violations = rule.check(&document).unwrap();
81        assert_eq!(violations.len(), 0);
82    }
83
84    #[test]
85    fn test_md057_with_complex_markdown() {
86        let rule = MD057;
87        let content = r#"
88# Heading 1
89
90Some **bold** and *italic* text.
91
92## Heading 2
93
94- List item 1
95- List item 2
96
97```rust
98fn main() {
99    println!("Hello, world!");
100}
101```
102
103[Link](https://example.com)
104
105| Table | Header |
106|-------|--------|
107| Cell  | Value  |
108"#;
109        let document = create_document(content);
110        let violations = rule.check(&document).unwrap();
111        assert_eq!(violations.len(), 0);
112    }
113}