docs: update architecture diagrams

This commit is contained in:
Archlens Bot
2026-06-16 14:46:17 +00:00
parent 55a723d192
commit 39a87520a1
6 changed files with 329 additions and 326 deletions

View File

@@ -1,7 +1,10 @@
graph TD graph TD
Adapters[Adapters]
Domain[Domain] Domain[Domain]
Presentation[Presentation] Presentation[Presentation]
Adapters[Adapters]
Application[Application] Application[Application]
Adapters --> Domain
Application --> Domain Application --> Domain
Adapters --> Domain
Presentation --> Domain
Presentation --> Adapters
Presentation --> Application

View File

@@ -13,16 +13,16 @@ graph TD
archlens_cargo_workspace[archlens-cargo-workspace] archlens_cargo_workspace[archlens-cargo-workspace]
end end
archlens_application --> archlens_domain archlens_application --> archlens_domain
archlens --> archlens_ascii
archlens --> archlens_toml_config archlens --> archlens_toml_config
archlens --> archlens_file_writer
archlens --> archlens_tree_sitter
archlens --> archlens_cargo_workspace archlens --> archlens_cargo_workspace
archlens --> archlens_stdout_writer archlens --> archlens_ascii
archlens --> archlens_domain archlens --> archlens_domain
archlens --> archlens_application archlens --> archlens_application
archlens --> archlens_mermaid archlens --> archlens_tree_sitter
archlens --> archlens_file_writer
archlens --> archlens_stdout_writer
archlens --> archlens_walkdir archlens --> archlens_walkdir
archlens --> archlens_mermaid
archlens_tree_sitter --> archlens_domain archlens_tree_sitter --> archlens_domain
archlens_walkdir --> archlens_domain archlens_walkdir --> archlens_domain
archlens_mermaid --> archlens_domain archlens_mermaid --> archlens_domain

View File

@@ -1,31 +1,5 @@
classDiagram classDiagram
namespace Adapters { namespace Adapters {
class AsciiRenderer
AsciiRenderer : +new()
AsciiRenderer : -format_kind()
class CargoWorkspaceAnalyzer
CargoWorkspaceAnalyzer : +new()
class WorkspaceToml
<<private>> WorkspaceToml
WorkspaceToml : workspace: Option
class WorkspaceSection
<<private>> WorkspaceSection
WorkspaceSection : members: Vec
class MemberToml
<<private>> MemberToml
MemberToml : package: Option
MemberToml : dependencies: HashMap
class PackageSection
<<private>> PackageSection
PackageSection : name: String
class StdoutOutputWriter
StdoutOutputWriter : +new()
class FileOutputWriter
FileOutputWriter : output_path: OutputPath
FileOutputWriter : +new()
FileOutputWriter : +single_file()
class OutputPath
<<private>> OutputPath
class MermaidRenderer class MermaidRenderer
MermaidRenderer : level: DiagramLevel MermaidRenderer : level: DiagramLevel
MermaidRenderer : +new() MermaidRenderer : +new()
@@ -37,18 +11,29 @@ classDiagram
MermaidRenderer : -render_module_flowchart() MermaidRenderer : -render_module_flowchart()
MermaidRenderer : -render_project_flowchart() MermaidRenderer : -render_project_flowchart()
MermaidRenderer : -sanitize_id() MermaidRenderer : -sanitize_id()
class LanguageExtractor class AsciiRenderer
AsciiRenderer : +new()
AsciiRenderer : -format_kind()
class WalkdirDiscovery
WalkdirDiscovery : +new()
WalkdirDiscovery : -detect_language()
WalkdirDiscovery : -is_excluded()
class TreeSitterAnalyzer class TreeSitterAnalyzer
TreeSitterAnalyzer : rust: RustExtractor TreeSitterAnalyzer : rust: RustExtractor
TreeSitterAnalyzer : python: PythonExtractor TreeSitterAnalyzer : python: PythonExtractor
TreeSitterAnalyzer : +new() TreeSitterAnalyzer : +new()
TreeSitterAnalyzer : -extractor_for() TreeSitterAnalyzer : -extractor_for()
class LanguageExtractor
class RustExtractor class RustExtractor
class PythonExtractor class PythonExtractor
class WalkdirDiscovery class FileOutputWriter
WalkdirDiscovery : +new() FileOutputWriter : output_path: OutputPath
WalkdirDiscovery : -detect_language() FileOutputWriter : +new()
WalkdirDiscovery : -is_excluded() FileOutputWriter : +single_file()
class OutputPath
<<private>> OutputPath
class StdoutOutputWriter
StdoutOutputWriter : +new()
class RawConfig class RawConfig
<<private>> RawConfig <<private>> RawConfig
RawConfig : analysis: RawAnalysis RawConfig : analysis: RawAnalysis
@@ -67,12 +52,27 @@ classDiagram
TomlConfigLoader : raw: RawConfig TomlConfigLoader : raw: RawConfig
TomlConfigLoader : +from_path() TomlConfigLoader : +from_path()
TomlConfigLoader : -parse_level() TomlConfigLoader : -parse_level()
class CargoWorkspaceAnalyzer
CargoWorkspaceAnalyzer : +new()
class WorkspaceToml
<<private>> WorkspaceToml
WorkspaceToml : workspace: Option
class WorkspaceSection
<<private>> WorkspaceSection
WorkspaceSection : members: Vec
class MemberToml
<<private>> MemberToml
MemberToml : package: Option
MemberToml : dependencies: HashMap
class PackageSection
<<private>> PackageSection
PackageSection : name: String
} }
FileOutputWriter --> OutputPath
TreeSitterAnalyzer --> RustExtractor TreeSitterAnalyzer --> RustExtractor
TreeSitterAnalyzer --> PythonExtractor TreeSitterAnalyzer --> PythonExtractor
RustExtractor <|-- LanguageExtractor RustExtractor <|-- LanguageExtractor
PythonExtractor <|-- LanguageExtractor PythonExtractor <|-- LanguageExtractor
FileOutputWriter --> OutputPath
RawConfig --> RawAnalysis RawConfig --> RawAnalysis
RawConfig --> RawOutput RawConfig --> RawOutput
TomlConfigLoader --> RawConfig TomlConfigLoader --> RawConfig

View File

@@ -10,6 +10,14 @@ classDiagram
AnalyzeCodebaseResult : warnings: Vec AnalyzeCodebaseResult : warnings: Vec
AnalyzeCodebaseResult : +graph() AnalyzeCodebaseResult : +graph()
AnalyzeCodebaseResult : +warnings() AnalyzeCodebaseResult : +warnings()
class FakeFileDiscovery
FakeFileDiscovery : files: Vec
FakeFileDiscovery : +new()
FakeFileDiscovery : +empty()
class FakeOutputWriter
FakeOutputWriter : written: RefCell
FakeOutputWriter : +new()
FakeOutputWriter : +written_outputs()
class FakeDiagramRenderer class FakeDiagramRenderer
FakeDiagramRenderer : +new() FakeDiagramRenderer : +new()
class FakeResponse class FakeResponse
@@ -19,12 +27,4 @@ classDiagram
FakeSourceAnalyzer : +new() FakeSourceAnalyzer : +new()
FakeSourceAnalyzer : +with_result() FakeSourceAnalyzer : +with_result()
FakeSourceAnalyzer : +with_error() FakeSourceAnalyzer : +with_error()
class FakeFileDiscovery
FakeFileDiscovery : files: Vec
FakeFileDiscovery : +new()
FakeFileDiscovery : +empty()
class FakeOutputWriter
FakeOutputWriter : written: RefCell
FakeOutputWriter : +new()
FakeOutputWriter : +written_outputs()
} }

View File

@@ -1,5 +1,74 @@
classDiagram classDiagram
namespace Domain { namespace Domain {
class OutputConfig
OutputConfig : split_by_module: bool
OutputConfig : output_path: Option
OutputConfig : +with_split_by_module()
OutputConfig : +with_output_path()
OutputConfig : +split_by_module()
OutputConfig : +output_path()
class DiagramLevel
class RenderOutput
RenderOutput : files: Vec
RenderOutput : +new()
RenderOutput : +single()
RenderOutput : +files()
class RenderedFile
RenderedFile : name: String
RenderedFile : content: String
RenderedFile : +new()
RenderedFile : +name()
RenderedFile : +content()
class SourceFile
SourceFile : path: FilePath
SourceFile : language: Language
SourceFile : +new()
SourceFile : +path()
SourceFile : +language()
class ModuleName
ModuleName : +new()
ModuleName : +from_path()
ModuleName : +from_directory_group()
ModuleName : +capitalize()
ModuleName : +as_str()
class Language
Language : +name()
class FilePath
FilePath : +new()
FilePath : +as_str()
class RelationshipKind
class Visibility
class CodeElementKind
class AnalysisConfig
AnalysisConfig : excludes: Vec
AnalysisConfig : level: DiagramLevel
AnalysisConfig : module_mappings: HashMap
AnalysisConfig : scope: Option
AnalysisConfig : +with_excludes()
AnalysisConfig : +with_level()
AnalysisConfig : +with_module_mappings()
AnalysisConfig : +excludes()
AnalysisConfig : +level()
AnalysisConfig : +with_scope()
AnalysisConfig : +module_mappings()
AnalysisConfig : +scope()
class AnalysisResult
AnalysisResult : elements: Vec
AnalysisResult : relationships: Vec
AnalysisResult : warnings: Vec
AnalysisResult : +new()
AnalysisResult : +empty()
AnalysisResult : +elements()
AnalysisResult : +relationships()
AnalysisResult : +warnings()
class AnalysisWarning
AnalysisWarning : file_path: FilePath
AnalysisWarning : line: usize
AnalysisWarning : message: String
AnalysisWarning : +new()
AnalysisWarning : +file_path()
AnalysisWarning : +line()
AnalysisWarning : +message()
class Relationship class Relationship
Relationship : source: String Relationship : source: String
Relationship : target: String Relationship : target: String
@@ -39,82 +108,12 @@ classDiagram
CodeElement : +with_methods() CodeElement : +with_methods()
CodeElement : +fields() CodeElement : +fields()
CodeElement : +methods() CodeElement : +methods()
class DomainError
class DiagramRenderer
class SourceAnalyzer
class ConfigLoader
class FileDiscovery class FileDiscovery
class ConfigLoader
class ProjectAnalyzer class ProjectAnalyzer
class OutputWriter class OutputWriter
class AnalysisResult class DiagramRenderer
AnalysisResult : elements: Vec class SourceAnalyzer
AnalysisResult : relationships: Vec
AnalysisResult : warnings: Vec
AnalysisResult : +new()
AnalysisResult : +empty()
AnalysisResult : +elements()
AnalysisResult : +relationships()
AnalysisResult : +warnings()
class AnalysisConfig
AnalysisConfig : excludes: Vec
AnalysisConfig : level: DiagramLevel
AnalysisConfig : module_mappings: HashMap
AnalysisConfig : scope: Option
AnalysisConfig : +with_excludes()
AnalysisConfig : +with_level()
AnalysisConfig : +with_module_mappings()
AnalysisConfig : +excludes()
AnalysisConfig : +level()
AnalysisConfig : +with_scope()
AnalysisConfig : +module_mappings()
AnalysisConfig : +scope()
class AnalysisWarning
AnalysisWarning : file_path: FilePath
AnalysisWarning : line: usize
AnalysisWarning : message: String
AnalysisWarning : +new()
AnalysisWarning : +file_path()
AnalysisWarning : +line()
AnalysisWarning : +message()
class CodeElementKind
class RelationshipKind
class Visibility
class DiagramLevel
class OutputConfig
OutputConfig : split_by_module: bool
OutputConfig : output_path: Option
OutputConfig : +with_split_by_module()
OutputConfig : +with_output_path()
OutputConfig : +split_by_module()
OutputConfig : +output_path()
class RenderedFile
RenderedFile : name: String
RenderedFile : content: String
RenderedFile : +new()
RenderedFile : +name()
RenderedFile : +content()
class RenderOutput
RenderOutput : files: Vec
RenderOutput : +new()
RenderOutput : +single()
RenderOutput : +files()
class ModuleName
ModuleName : +new()
ModuleName : +from_path()
ModuleName : +from_directory_group()
ModuleName : +capitalize()
ModuleName : +as_str()
class Language
Language : +name()
class SourceFile
SourceFile : path: FilePath
SourceFile : language: Language
SourceFile : +new()
SourceFile : +path()
SourceFile : +language()
class FilePath
FilePath : +new()
FilePath : +as_str()
class CodeGraph class CodeGraph
CodeGraph : elements: Vec CodeGraph : elements: Vec
CodeGraph : relationships: Vec CodeGraph : relationships: Vec
@@ -128,12 +127,13 @@ classDiagram
CodeGraph : +resolve_relationships() CodeGraph : +resolve_relationships()
CodeGraph : +filter_external_imports() CodeGraph : +filter_external_imports()
CodeGraph : +subgraph_by_module() CodeGraph : +subgraph_by_module()
class DomainError
} }
SourceFile --> FilePath
SourceFile --> Language
AnalysisConfig --> DiagramLevel
AnalysisWarning --> FilePath
Relationship --> RelationshipKind Relationship --> RelationshipKind
CodeElement --> CodeElementKind CodeElement --> CodeElementKind
CodeElement --> FilePath CodeElement --> FilePath
CodeElement --> Visibility CodeElement --> Visibility
AnalysisConfig --> DiagramLevel
AnalysisWarning --> FilePath
SourceFile --> FilePath
SourceFile --> Language

View File

@@ -1,50 +1,143 @@
classDiagram classDiagram
namespace Presentation { namespace Adapters {
class Cli class MermaidRenderer
Cli : command: Option MermaidRenderer : level: DiagramLevel
Cli : path: PathBuf MermaidRenderer : +new()
Cli : level: String MermaidRenderer : +with_level()
Cli : format: String MermaidRenderer : -format_element_name()
Cli : output: Option MermaidRenderer : -format_visibility()
Cli : config: Option MermaidRenderer : -render_class_diagram()
Cli : scope: Option MermaidRenderer : -push_class_lines()
Cli : exclude: Vec MermaidRenderer : -render_module_flowchart()
Cli : split_by_module: bool MermaidRenderer : -render_project_flowchart()
Cli : strict: bool MermaidRenderer : -sanitize_id()
Cli : check: bool class AsciiRenderer
Cli : verbose: u8 AsciiRenderer : +new()
class Command AsciiRenderer : -format_kind()
} class WalkdirDiscovery
namespace Application { WalkdirDiscovery : +new()
class AnalyzeCodebase WalkdirDiscovery : -detect_language()
AnalyzeCodebase : file_discovery: F WalkdirDiscovery : -is_excluded()
AnalyzeCodebase : source_analyzer: S class TreeSitterAnalyzer
AnalyzeCodebase : +new() TreeSitterAnalyzer : rust: RustExtractor
AnalyzeCodebase : +execute() TreeSitterAnalyzer : python: PythonExtractor
class AnalyzeCodebaseResult TreeSitterAnalyzer : +new()
AnalyzeCodebaseResult : graph: CodeGraph TreeSitterAnalyzer : -extractor_for()
AnalyzeCodebaseResult : warnings: Vec class LanguageExtractor
AnalyzeCodebaseResult : +graph() class RustExtractor
AnalyzeCodebaseResult : +warnings() class PythonExtractor
class FakeDiagramRenderer class FileOutputWriter
FakeDiagramRenderer : +new() FileOutputWriter : output_path: OutputPath
class FakeResponse FileOutputWriter : +new()
<<private>> FakeResponse FileOutputWriter : +single_file()
class FakeSourceAnalyzer class OutputPath
FakeSourceAnalyzer : results: HashMap <<private>> OutputPath
FakeSourceAnalyzer : +new() class StdoutOutputWriter
FakeSourceAnalyzer : +with_result() StdoutOutputWriter : +new()
FakeSourceAnalyzer : +with_error() class RawConfig
class FakeFileDiscovery <<private>> RawConfig
FakeFileDiscovery : files: Vec RawConfig : analysis: RawAnalysis
FakeFileDiscovery : +new() RawConfig : output: RawOutput
FakeFileDiscovery : +empty() RawConfig : modules: HashMap
class FakeOutputWriter class RawAnalysis
FakeOutputWriter : written: RefCell <<private>> RawAnalysis
FakeOutputWriter : +new() RawAnalysis : exclude: Vec
FakeOutputWriter : +written_outputs() RawAnalysis : level: Option
class RawOutput
<<private>> RawOutput
RawOutput : format: Option
RawOutput : path: Option
RawOutput : split_by_module: bool
class TomlConfigLoader
TomlConfigLoader : raw: RawConfig
TomlConfigLoader : +from_path()
TomlConfigLoader : -parse_level()
class CargoWorkspaceAnalyzer
CargoWorkspaceAnalyzer : +new()
class WorkspaceToml
<<private>> WorkspaceToml
WorkspaceToml : workspace: Option
class WorkspaceSection
<<private>> WorkspaceSection
WorkspaceSection : members: Vec
class MemberToml
<<private>> MemberToml
MemberToml : package: Option
MemberToml : dependencies: HashMap
class PackageSection
<<private>> PackageSection
PackageSection : name: String
} }
namespace Domain { namespace Domain {
class OutputConfig
OutputConfig : split_by_module: bool
OutputConfig : output_path: Option
OutputConfig : +with_split_by_module()
OutputConfig : +with_output_path()
OutputConfig : +split_by_module()
OutputConfig : +output_path()
class DiagramLevel
class RenderOutput
RenderOutput : files: Vec
RenderOutput : +new()
RenderOutput : +single()
RenderOutput : +files()
class RenderedFile
RenderedFile : name: String
RenderedFile : content: String
RenderedFile : +new()
RenderedFile : +name()
RenderedFile : +content()
class SourceFile
SourceFile : path: FilePath
SourceFile : language: Language
SourceFile : +new()
SourceFile : +path()
SourceFile : +language()
class ModuleName
ModuleName : +new()
ModuleName : +from_path()
ModuleName : +from_directory_group()
ModuleName : +capitalize()
ModuleName : +as_str()
class Language
Language : +name()
class FilePath
FilePath : +new()
FilePath : +as_str()
class RelationshipKind
class Visibility
class CodeElementKind
class AnalysisConfig
AnalysisConfig : excludes: Vec
AnalysisConfig : level: DiagramLevel
AnalysisConfig : module_mappings: HashMap
AnalysisConfig : scope: Option
AnalysisConfig : +with_excludes()
AnalysisConfig : +with_level()
AnalysisConfig : +with_module_mappings()
AnalysisConfig : +excludes()
AnalysisConfig : +level()
AnalysisConfig : +with_scope()
AnalysisConfig : +module_mappings()
AnalysisConfig : +scope()
class AnalysisResult
AnalysisResult : elements: Vec
AnalysisResult : relationships: Vec
AnalysisResult : warnings: Vec
AnalysisResult : +new()
AnalysisResult : +empty()
AnalysisResult : +elements()
AnalysisResult : +relationships()
AnalysisResult : +warnings()
class AnalysisWarning
AnalysisWarning : file_path: FilePath
AnalysisWarning : line: usize
AnalysisWarning : message: String
AnalysisWarning : +new()
AnalysisWarning : +file_path()
AnalysisWarning : +line()
AnalysisWarning : +message()
class Relationship class Relationship
Relationship : source: String Relationship : source: String
Relationship : target: String Relationship : target: String
@@ -84,82 +177,12 @@ classDiagram
CodeElement : +with_methods() CodeElement : +with_methods()
CodeElement : +fields() CodeElement : +fields()
CodeElement : +methods() CodeElement : +methods()
class DomainError
class DiagramRenderer
class SourceAnalyzer
class ConfigLoader
class FileDiscovery class FileDiscovery
class ConfigLoader
class ProjectAnalyzer class ProjectAnalyzer
class OutputWriter class OutputWriter
class AnalysisResult class DiagramRenderer
AnalysisResult : elements: Vec class SourceAnalyzer
AnalysisResult : relationships: Vec
AnalysisResult : warnings: Vec
AnalysisResult : +new()
AnalysisResult : +empty()
AnalysisResult : +elements()
AnalysisResult : +relationships()
AnalysisResult : +warnings()
class AnalysisConfig
AnalysisConfig : excludes: Vec
AnalysisConfig : level: DiagramLevel
AnalysisConfig : module_mappings: HashMap
AnalysisConfig : scope: Option
AnalysisConfig : +with_excludes()
AnalysisConfig : +with_level()
AnalysisConfig : +with_module_mappings()
AnalysisConfig : +excludes()
AnalysisConfig : +level()
AnalysisConfig : +with_scope()
AnalysisConfig : +module_mappings()
AnalysisConfig : +scope()
class AnalysisWarning
AnalysisWarning : file_path: FilePath
AnalysisWarning : line: usize
AnalysisWarning : message: String
AnalysisWarning : +new()
AnalysisWarning : +file_path()
AnalysisWarning : +line()
AnalysisWarning : +message()
class CodeElementKind
class RelationshipKind
class Visibility
class DiagramLevel
class OutputConfig
OutputConfig : split_by_module: bool
OutputConfig : output_path: Option
OutputConfig : +with_split_by_module()
OutputConfig : +with_output_path()
OutputConfig : +split_by_module()
OutputConfig : +output_path()
class RenderedFile
RenderedFile : name: String
RenderedFile : content: String
RenderedFile : +new()
RenderedFile : +name()
RenderedFile : +content()
class RenderOutput
RenderOutput : files: Vec
RenderOutput : +new()
RenderOutput : +single()
RenderOutput : +files()
class ModuleName
ModuleName : +new()
ModuleName : +from_path()
ModuleName : +from_directory_group()
ModuleName : +capitalize()
ModuleName : +as_str()
class Language
Language : +name()
class SourceFile
SourceFile : path: FilePath
SourceFile : language: Language
SourceFile : +new()
SourceFile : +path()
SourceFile : +language()
class FilePath
FilePath : +new()
FilePath : +as_str()
class CodeGraph class CodeGraph
CodeGraph : elements: Vec CodeGraph : elements: Vec
CodeGraph : relationships: Vec CodeGraph : relationships: Vec
@@ -173,103 +196,80 @@ classDiagram
CodeGraph : +resolve_relationships() CodeGraph : +resolve_relationships()
CodeGraph : +filter_external_imports() CodeGraph : +filter_external_imports()
CodeGraph : +subgraph_by_module() CodeGraph : +subgraph_by_module()
class DomainError
} }
namespace Adapters { namespace Application {
class AsciiRenderer class AnalyzeCodebase
AsciiRenderer : +new() AnalyzeCodebase : file_discovery: F
AsciiRenderer : -format_kind() AnalyzeCodebase : source_analyzer: S
class CargoWorkspaceAnalyzer AnalyzeCodebase : +new()
CargoWorkspaceAnalyzer : +new() AnalyzeCodebase : +execute()
class WorkspaceToml class AnalyzeCodebaseResult
<<private>> WorkspaceToml AnalyzeCodebaseResult : graph: CodeGraph
WorkspaceToml : workspace: Option AnalyzeCodebaseResult : warnings: Vec
class WorkspaceSection AnalyzeCodebaseResult : +graph()
<<private>> WorkspaceSection AnalyzeCodebaseResult : +warnings()
WorkspaceSection : members: Vec class FakeFileDiscovery
class MemberToml FakeFileDiscovery : files: Vec
<<private>> MemberToml FakeFileDiscovery : +new()
MemberToml : package: Option FakeFileDiscovery : +empty()
MemberToml : dependencies: HashMap class FakeOutputWriter
class PackageSection FakeOutputWriter : written: RefCell
<<private>> PackageSection FakeOutputWriter : +new()
PackageSection : name: String FakeOutputWriter : +written_outputs()
class StdoutOutputWriter class FakeDiagramRenderer
StdoutOutputWriter : +new() FakeDiagramRenderer : +new()
class FileOutputWriter class FakeResponse
FileOutputWriter : output_path: OutputPath <<private>> FakeResponse
FileOutputWriter : +new() class FakeSourceAnalyzer
FileOutputWriter : +single_file() FakeSourceAnalyzer : results: HashMap
class OutputPath FakeSourceAnalyzer : +new()
<<private>> OutputPath FakeSourceAnalyzer : +with_result()
class MermaidRenderer FakeSourceAnalyzer : +with_error()
MermaidRenderer : level: DiagramLevel
MermaidRenderer : +new()
MermaidRenderer : +with_level()
MermaidRenderer : -format_element_name()
MermaidRenderer : -format_visibility()
MermaidRenderer : -render_class_diagram()
MermaidRenderer : -push_class_lines()
MermaidRenderer : -render_module_flowchart()
MermaidRenderer : -render_project_flowchart()
MermaidRenderer : -sanitize_id()
class LanguageExtractor
class TreeSitterAnalyzer
TreeSitterAnalyzer : rust: RustExtractor
TreeSitterAnalyzer : python: PythonExtractor
TreeSitterAnalyzer : +new()
TreeSitterAnalyzer : -extractor_for()
class RustExtractor
class PythonExtractor
class WalkdirDiscovery
WalkdirDiscovery : +new()
WalkdirDiscovery : -detect_language()
WalkdirDiscovery : -is_excluded()
class RawConfig
<<private>> RawConfig
RawConfig : analysis: RawAnalysis
RawConfig : output: RawOutput
RawConfig : modules: HashMap
class RawAnalysis
<<private>> RawAnalysis
RawAnalysis : exclude: Vec
RawAnalysis : level: Option
class RawOutput
<<private>> RawOutput
RawOutput : format: Option
RawOutput : path: Option
RawOutput : split_by_module: bool
class TomlConfigLoader
TomlConfigLoader : raw: RawConfig
TomlConfigLoader : +from_path()
TomlConfigLoader : -parse_level()
} }
AsciiRenderer <|-- DiagramRenderer namespace Presentation {
CargoWorkspaceAnalyzer <|-- ProjectAnalyzer class Cli
StdoutOutputWriter <|-- OutputWriter Cli : command: Option
FileOutputWriter --> OutputPath Cli : path: PathBuf
FileOutputWriter <|-- OutputWriter Cli : level: String
Cli : format: String
Cli : output: Option
Cli : config: Option
Cli : scope: Option
Cli : exclude: Vec
Cli : split_by_module: bool
Cli : strict: bool
Cli : check: bool
Cli : verbose: u8
class Command
}
SourceFile --> FilePath
SourceFile --> Language
AnalysisConfig --> DiagramLevel
AnalysisWarning --> FilePath
Relationship --> RelationshipKind
CodeElement --> CodeElementKind
CodeElement --> FilePath
CodeElement --> Visibility
MermaidRenderer --> DiagramLevel MermaidRenderer --> DiagramLevel
MermaidRenderer <|-- DiagramRenderer MermaidRenderer <|-- DiagramRenderer
AsciiRenderer <|-- DiagramRenderer
WalkdirDiscovery <|-- FileDiscovery
TreeSitterAnalyzer --> RustExtractor TreeSitterAnalyzer --> RustExtractor
TreeSitterAnalyzer --> PythonExtractor TreeSitterAnalyzer --> PythonExtractor
TreeSitterAnalyzer <|-- SourceAnalyzer TreeSitterAnalyzer <|-- SourceAnalyzer
RustExtractor <|-- LanguageExtractor RustExtractor <|-- LanguageExtractor
PythonExtractor <|-- LanguageExtractor PythonExtractor <|-- LanguageExtractor
WalkdirDiscovery <|-- FileDiscovery FileOutputWriter --> OutputPath
FileOutputWriter <|-- OutputWriter
StdoutOutputWriter <|-- OutputWriter
RawConfig --> RawAnalysis RawConfig --> RawAnalysis
RawConfig --> RawOutput RawConfig --> RawOutput
TomlConfigLoader --> RawConfig TomlConfigLoader --> RawConfig
TomlConfigLoader <|-- ConfigLoader TomlConfigLoader <|-- ConfigLoader
CargoWorkspaceAnalyzer <|-- ProjectAnalyzer
AnalyzeCodebaseResult --> CodeGraph AnalyzeCodebaseResult --> CodeGraph
FakeDiagramRenderer <|-- DiagramRenderer
FakeSourceAnalyzer <|-- SourceAnalyzer
FakeFileDiscovery <|-- FileDiscovery FakeFileDiscovery <|-- FileDiscovery
FakeOutputWriter <|-- OutputWriter FakeOutputWriter <|-- OutputWriter
Relationship --> RelationshipKind FakeDiagramRenderer <|-- DiagramRenderer
CodeElement --> CodeElementKind FakeSourceAnalyzer <|-- SourceAnalyzer
CodeElement --> FilePath
CodeElement --> Visibility
AnalysisConfig --> DiagramLevel
AnalysisWarning --> FilePath
SourceFile --> FilePath
SourceFile --> Language