devscout_rs/render/
read.rs1use crate::query;
2
3use super::refs::{render_refs_compact, render_refs_text};
4
5fn read_def_line(model: &query::ReadModel) -> String {
11 let sites = &model.refs.sites;
12 if sites.is_empty() {
13 return "def: -".to_string();
14 }
15 let rendered: Vec<String> = sites
16 .iter()
17 .enumerate()
18 .map(|(i, s)| match (i, &model.span) {
19 (0, Some(sp)) => format!("{}:{}-{}", sp.file, sp.start_line, sp.end_line),
20 _ => format!("{}:{}", s.file, s.line),
21 })
22 .collect();
23 format!("def: {}", rendered.join(" "))
24}
25
26pub fn render_read_text(model: &query::ReadModel) -> String {
31 let rendered = render_refs_text(&model.refs);
32 let mut out: Vec<String> = rendered.split('\n').map(str::to_string).collect();
33 if out.len() > 1 {
34 out[1] = read_def_line(model);
35 }
36 if let Some(sp) = &model.span {
37 out.splice(2..2, sp.source.split('\n').map(str::to_string));
38 }
39 out.join("\n")
40}
41
42pub fn render_read_compact(model: &query::ReadModel) -> String {
47 let rendered = render_refs_compact(&model.refs);
48 let mut out: Vec<String> = rendered.split('\n').map(str::to_string).collect();
49 if out.len() > 1 {
50 out[1] = read_def_line(model);
51 }
52 out.join("\n")
53}