fichu 0.1.16

A formatter for SPARQL queries
Documentation
use crate::server::{
    anaysis::{get_undeclared_prefixes, get_unused_prefixes},
    lsp::{Diagnostic, DiagnosticSeverity},
    state::ServerState,
};

pub fn collect_diagnostics(state: &ServerState, uri: &String) -> impl Iterator<Item = Diagnostic> {
    unused_prefix(state, uri).chain(undeclared_prefix(state, uri))
}

fn unused_prefix(state: &ServerState, uri: &String) -> impl Iterator<Item = Diagnostic> {
    get_unused_prefixes(state, uri).map(|(prefix, range)| Diagnostic {
        range: range.clone(),
        severity: DiagnosticSeverity::Warning,
        source: "fichu (unused_prefix)".to_string(),
        message: format!("'{}' is declared here, but was never used\n", prefix),
    })
}

fn undeclared_prefix(state: &ServerState, uri: &String) -> impl Iterator<Item = Diagnostic> {
    get_undeclared_prefixes(state, uri).map(|(prefix, range)| Diagnostic {
        range: range.clone(),
        severity: DiagnosticSeverity::Error,
        source: "fichu (undeclared_prefix)".to_string(),
        message: format!("'{}' is used here, but was never delared\n", prefix),
    })
}