Skip to main content

ass_core/analysis/linting/rules/
mod.rs

1//! Built-in linting rules for ASS script validation.
2//!
3//! This module contains implementations of all built-in linting rules
4//! that check for common issues in ASS subtitle scripts. Each rule
5//! is implemented in a separate module for better maintainability.
6//!
7//! # Rule Categories
8//!
9//! - **Timing Rules**: Check for overlaps, negative durations, and timing issues
10//! - **Style Rules**: Validate style references and color formats
11//! - **Content Rules**: Check tag validity and text formatting
12//! - **Performance Rules**: Detect performance-impacting patterns
13//! - **Accessibility Rules**: Ensure compatibility and readability
14//!
15//! # Example
16//!
17//! ```rust
18//! use ass_core::analysis::linting::rules::BuiltinRules;
19//! use ass_core::analysis::linting::LintRule;
20//! use ass_core::{Script, ScriptAnalysis};
21//!
22//! let script = Script::parse("...")?;
23//! let rules = BuiltinRules::all_rules();
24//!
25//! for rule in rules {
26//!     let analysis = ScriptAnalysis::analyze(&script).unwrap();
27//!     let issues = rule.check_script(&analysis);
28//!     for issue in issues {
29//!         println!("{}: {}", rule.name(), issue.message());
30//!     }
31//! }
32//! # Ok::<(), Box<dyn std::error::Error>>(())
33//! ```
34
35pub mod accessibility;
36pub mod encoding;
37pub mod invalid_color;
38pub mod invalid_tag;
39pub mod missing_style;
40pub mod negative_duration;
41pub mod performance;
42pub mod timing_overlap;
43
44pub use accessibility::AccessibilityRule;
45pub use encoding::EncodingRule;
46pub use invalid_color::InvalidColorRule;
47pub use invalid_tag::InvalidTagRule;
48pub use missing_style::MissingStyleRule;
49pub use negative_duration::NegativeDurationRule;
50pub use performance::PerformanceRule;
51pub use timing_overlap::TimingOverlapRule;
52
53mod builtin;
54
55pub use builtin::BuiltinRules;
56
57#[cfg(test)]
58mod builtin_tests;