tinymist_query/
document_color.rs1use crate::{SemanticRequest, analysis::ColorExprWorker, prelude::*};
2
3#[derive(Debug, Clone)]
19pub struct DocumentColorRequest {
20 pub path: PathBuf,
22}
23
24impl SemanticRequest for DocumentColorRequest {
25 type Response = Vec<ColorInformation>;
26
27 fn request(self, ctx: &mut LocalContext) -> Option<Self::Response> {
28 let source = ctx.source_by_path(&self.path).ok()?;
29
30 let mut worker = ColorExprWorker::new(ctx, source.clone());
31 worker.work(LinkedNode::new(source.root()))?;
32 Some(worker.colors)
33 }
34}
35
36#[cfg(test)]
37mod tests {
38 use super::*;
39 use crate::tests::*;
40
41 #[test]
42 fn test() {
43 snapshot_testing("document_color", &|ctx, path| {
44 let request = DocumentColorRequest { path: path.clone() };
45
46 let result = request.request(ctx);
47 assert_snapshot!(JsonRepr::new_redacted(result, &REDACT_LOC));
48 });
49 }
50}