Skip to main content

gram_data/
lib.rs

1mod analyze;
2mod elements;
3pub mod markdown;
4mod parse;
5mod record_keys;
6mod symbols;
7mod top_level;
8pub mod utf16;
9
10pub use gram_diagnostics::{Diagnostic, FileResult, LintResult, Position, Range, Severity};
11pub use parse::parse;
12pub use symbols::SymbolIndex;
13
14pub mod lint {
15    use std::path::Path;
16
17    pub use gram_diagnostics::{Diagnostic, Severity};
18
19    pub struct LintOptions {
20        pub strict: bool,
21    }
22
23    pub fn lint_source(source: &str, _opts: &LintOptions) -> Vec<Diagnostic> {
24        let (_, raw) = crate::analyze::analyze_source(source);
25        raw.iter().map(|d| crate::analyze::to_public(source, d)).collect()
26    }
27
28    pub fn lint_file(path: &Path, opts: &LintOptions) -> anyhow::Result<Vec<Diagnostic>> {
29        let source = std::fs::read_to_string(path)?;
30        Ok(lint_source(&source, opts))
31    }
32}