use std::sync::Arc;
use line_index::LineIndex;
use url::Url;
use crate::Document;
use crate::graph::DocumentGraph;
pub struct ImportedDocContext<'a> {
pub doc: &'a Document,
pub lines: &'a Arc<LineIndex>,
pub uri: &'a Url,
}
pub fn get_imported_doc_context<'a>(
namespace_name: &str,
analysis_doc: &'a Document,
graph: &'a DocumentGraph,
) -> Option<ImportedDocContext<'a>> {
let ns = analysis_doc.namespace(namespace_name)?;
let node = graph.get(graph.get_index(ns.source())?);
let doc = node.document()?;
let lines = node.parse_state().lines()?;
Some(ImportedDocContext {
doc,
lines,
uri: ns.source(),
})
}