refactor: deepen modules, consolidate inference, delete dead code
- Extract build_graph/load_config/create_renderer in presentation (393→~250 lines) - Move module inference into ModuleName::from_path(), delete 3 scattered copies - Move resolve_relationships/filter_external_imports into CodeGraph - Add LanguageExtractor trait in tree-sitter adapter - Add CodeGraph::elements_by_module(), replace 6 identical grouping loops - Delete dead RenderDiagrams query
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use std::collections::{HashMap, HashSet};
|
||||
|
||||
use archlens_domain::{
|
||||
CodeElement, CodeGraph, DiagramLevel, DomainError, RelationshipKind, RenderOutput,
|
||||
CodeElement, CodeGraph, DiagramLevel, DomainError, ModuleName, RelationshipKind, RenderOutput,
|
||||
RenderedFile, Visibility, ports::DiagramRenderer,
|
||||
};
|
||||
|
||||
@@ -46,20 +46,7 @@ impl MermaidRenderer {
|
||||
fn render_class_diagram(&self, graph: &CodeGraph) -> String {
|
||||
let mut lines = vec!["classDiagram".to_string()];
|
||||
|
||||
let mut grouped: HashMap<String, Vec<&CodeElement>> = HashMap::new();
|
||||
let mut ungrouped: Vec<&CodeElement> = Vec::new();
|
||||
|
||||
for element in graph.elements() {
|
||||
if let Some(module) = element.module() {
|
||||
grouped
|
||||
.entry(module.as_str().to_string())
|
||||
.or_default()
|
||||
.push(element);
|
||||
} else {
|
||||
ungrouped.push(element);
|
||||
}
|
||||
}
|
||||
|
||||
let (grouped, ungrouped) = graph.elements_by_module();
|
||||
let has_namespaces = !grouped.is_empty();
|
||||
|
||||
let mut seen: HashSet<String> = HashSet::new();
|
||||
@@ -157,7 +144,7 @@ impl MermaidRenderer {
|
||||
RelationshipKind::Import => {
|
||||
let source_mod = file_to_module.get(rel.source());
|
||||
let target_top = rel.target().split('.').next().unwrap_or("");
|
||||
let target_mod = Self::capitalize(target_top);
|
||||
let target_mod = ModuleName::capitalize(target_top);
|
||||
|
||||
if let Some(src) = source_mod
|
||||
&& modules.contains(&target_mod)
|
||||
@@ -201,29 +188,10 @@ impl MermaidRenderer {
|
||||
lines.join("\n")
|
||||
}
|
||||
|
||||
fn capitalize(s: &str) -> String {
|
||||
if s.is_empty() {
|
||||
return String::new();
|
||||
}
|
||||
format!("{}{}", s[..1].to_uppercase(), &s[1..])
|
||||
}
|
||||
|
||||
fn render_project_flowchart(&self, graph: &CodeGraph) -> String {
|
||||
let mut lines = vec!["graph TD".to_string()];
|
||||
|
||||
let mut grouped: HashMap<String, Vec<&CodeElement>> = HashMap::new();
|
||||
let mut ungrouped: Vec<&CodeElement> = Vec::new();
|
||||
|
||||
for element in graph.elements() {
|
||||
if let Some(module) = element.module() {
|
||||
grouped
|
||||
.entry(module.as_str().to_string())
|
||||
.or_default()
|
||||
.push(element);
|
||||
} else {
|
||||
ungrouped.push(element);
|
||||
}
|
||||
}
|
||||
let (grouped, ungrouped) = graph.elements_by_module();
|
||||
|
||||
for element in &ungrouped {
|
||||
let id = Self::sanitize_id(element.name());
|
||||
|
||||
Reference in New Issue
Block a user