use lsp_types::{SymbolInformation, Url};
use serde_json::json;
use crate::core::analysis::{document_symbols, DocumentAnalysis};
pub fn workspace_symbols(docs: &[(Url, String, DocumentAnalysis)]) -> Vec<SymbolInformation> {
let mut out = Vec::new();
for (uri, text, analysis) in docs {
for sym in document_symbols(text, analysis) {
if let Ok(si) = serde_json::from_value::<SymbolInformation>(json!({
"name": sym.name,
"kind": sym.kind,
"tags": sym.tags,
"location": {
"uri": uri,
"range": sym.range,
},
"containerName": serde_json::Value::Null,
})) {
out.push(si);
}
}
}
out
}