lucid_lint/lib.rs
1//! # lucid-lint
2//!
3//! A cognitive accessibility linter for prose. Built on cognitive load research.
4//! Bilingual EN/FR. CI-native.
5//!
6//! **User documentation lives outside docs.rs:**
7//!
8//! - 📖 **Guide & rules reference** — <https://bastien-gallay.github.io/lucid-lint>
9//! - 📋 **Rule catalogue** — <https://github.com/bastien-gallay/lucid-lint/blob/main/RULES.md>
10//! - 🛠**Source & issues** — <https://github.com/bastien-gallay/lucid-lint>
11//!
12//! This page (docs.rs) documents the Rust API for embedding `lucid-lint` as a
13//! library. For CLI usage, configuration profiles, and the rule taxonomy, follow
14//! the links above.
15//!
16//! ## Quick overview
17//!
18//! - [`config`] — profiles and rule configuration
19//! - [`parser`] — Markdown and plain text parsing
20//! - [`language`] — language detection
21//! - [`rules`] — lint rules
22//! - [`output`] — diagnostic formatters
23//! - [`types`] — core domain types ([`Diagnostic`], [`Severity`], [`Location`], etc.)
24//!
25//! ## Example
26//!
27//! ```no_run
28//! use lucid_lint::{Engine, Profile};
29//!
30//! let engine = Engine::with_profile(Profile::Public);
31//! let report = engine.lint_str("Your text here.");
32//! println!("score: {}/{}", report.scorecard.global.value, report.scorecard.global.max);
33//! for diag in &report.diagnostics {
34//! println!("{}", diag.message);
35//! }
36//! ```
37
38#![warn(missing_docs)]
39#![warn(unreachable_pub)]
40#![forbid(unsafe_code)]
41
42pub mod condition;
43pub mod config;
44pub mod explain;
45pub mod language;
46pub mod output;
47pub mod parser;
48pub mod rules;
49pub mod scoring;
50pub mod types;
51
52mod engine;
53
54pub use condition::ConditionTag;
55pub use config::Profile;
56pub use engine::{Engine, EngineError, Report};
57pub use scoring::{CategoryScore, Score, Scorecard, ScoringConfig};
58pub use types::{Category, Diagnostic, Language, Location, Severity};