diff --git a/docs/architecture/module.mmd b/docs/architecture/module.mmd index 9fee3bb..5047c45 100644 --- a/docs/architecture/module.mmd +++ b/docs/architecture/module.mmd @@ -1,10 +1,10 @@ graph TD + Adapters[Adapters] Application[Application] Domain[Domain] Presentation[Presentation] - Adapters[Adapters] - Adapters --> Domain - Application --> Domain Presentation --> Application - Presentation --> Domain - Presentation --> Adapters \ No newline at end of file + Application --> Domain + Presentation --> Adapters + Adapters --> Domain + Presentation --> Domain \ No newline at end of file diff --git a/docs/architecture/project.mmd b/docs/architecture/project.mmd index ea5f513..36e10b2 100644 --- a/docs/architecture/project.mmd +++ b/docs/architecture/project.mmd @@ -13,16 +13,16 @@ graph TD archlens_cargo_workspace[archlens-cargo-workspace] end archlens_application --> archlens_domain - archlens --> archlens_toml_config archlens --> archlens_cargo_workspace + archlens --> archlens_walkdir archlens --> archlens_ascii - archlens --> archlens_domain archlens --> archlens_application + archlens --> archlens_domain archlens --> archlens_tree_sitter + archlens --> archlens_mermaid archlens --> archlens_file_writer archlens --> archlens_stdout_writer - archlens --> archlens_walkdir - archlens --> archlens_mermaid + archlens --> archlens_toml_config archlens_tree_sitter --> archlens_domain archlens_walkdir --> archlens_domain archlens_mermaid --> archlens_domain diff --git a/docs/architecture/type/adapters.mmd b/docs/architecture/type/adapters.mmd index ca7c426..11c0d57 100644 --- a/docs/architecture/type/adapters.mmd +++ b/docs/architecture/type/adapters.mmd @@ -1,73 +1,73 @@ classDiagram namespace Adapters { class MermaidRenderer - 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 AsciiRenderer - AsciiRenderer : +new() - AsciiRenderer : -format_kind() class WalkdirDiscovery - WalkdirDiscovery : +new() - WalkdirDiscovery : -detect_language() - WalkdirDiscovery : -is_excluded() class TreeSitterAnalyzer - TreeSitterAnalyzer : rust: RustExtractor - TreeSitterAnalyzer : python: PythonExtractor - TreeSitterAnalyzer : +new() - TreeSitterAnalyzer : -extractor_for() class LanguageExtractor class RustExtractor class PythonExtractor class FileOutputWriter - FileOutputWriter : output_path: OutputPath - FileOutputWriter : +new() - FileOutputWriter : +single_file() class OutputPath - <> OutputPath class StdoutOutputWriter - StdoutOutputWriter : +new() class RawConfig - <> RawConfig - RawConfig : analysis: RawAnalysis - RawConfig : output: RawOutput - RawConfig : modules: HashMap class RawAnalysis - <> RawAnalysis - RawAnalysis : exclude: Vec - RawAnalysis : level: Option class RawOutput - <> 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 - <> WorkspaceToml - WorkspaceToml : workspace: Option class WorkspaceSection - <> WorkspaceSection - WorkspaceSection : members: Vec class MemberToml - <> MemberToml - MemberToml : package: Option - MemberToml : dependencies: HashMap class PackageSection - <> PackageSection - PackageSection : name: String } + 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() + AsciiRenderer : +new() + AsciiRenderer : -format_kind() + WalkdirDiscovery : +new() + WalkdirDiscovery : -detect_language() + WalkdirDiscovery : -is_excluded() + TreeSitterAnalyzer : rust: RustExtractor + TreeSitterAnalyzer : python: PythonExtractor + TreeSitterAnalyzer : +new() + TreeSitterAnalyzer : -extractor_for() + FileOutputWriter : output_path: OutputPath + FileOutputWriter : +new() + FileOutputWriter : +single_file() + <> OutputPath + StdoutOutputWriter : +new() + <> RawConfig + RawConfig : analysis: RawAnalysis + RawConfig : output: RawOutput + RawConfig : modules: HashMap + <> RawAnalysis + RawAnalysis : exclude: Vec + RawAnalysis : level: Option + <> RawOutput + RawOutput : format: Option + RawOutput : path: Option + RawOutput : split_by_module: bool + TomlConfigLoader : raw: RawConfig + TomlConfigLoader : +from_path() + TomlConfigLoader : -parse_level() + CargoWorkspaceAnalyzer : +new() + <> WorkspaceToml + WorkspaceToml : workspace: Option + <> WorkspaceSection + WorkspaceSection : members: Vec + <> MemberToml + MemberToml : package: Option + MemberToml : dependencies: HashMap + <> PackageSection + PackageSection : name: String TreeSitterAnalyzer --> RustExtractor TreeSitterAnalyzer --> PythonExtractor RustExtractor <|-- LanguageExtractor diff --git a/docs/architecture/type/application.mmd b/docs/architecture/type/application.mmd index 500f6a0..b1ca6e5 100644 --- a/docs/architecture/type/application.mmd +++ b/docs/architecture/type/application.mmd @@ -1,30 +1,30 @@ classDiagram namespace Application { class AnalyzeCodebase - AnalyzeCodebase : file_discovery: F - AnalyzeCodebase : source_analyzer: S - AnalyzeCodebase : +new() - AnalyzeCodebase : +execute() class AnalyzeCodebaseResult - AnalyzeCodebaseResult : graph: CodeGraph - AnalyzeCodebaseResult : warnings: Vec - AnalyzeCodebaseResult : +graph() - AnalyzeCodebaseResult : +warnings() class FakeFileDiscovery - FakeFileDiscovery : files: Vec - FakeFileDiscovery : +new() - FakeFileDiscovery : +empty() class FakeOutputWriter - FakeOutputWriter : written: RefCell - FakeOutputWriter : +new() - FakeOutputWriter : +written_outputs() class FakeDiagramRenderer - FakeDiagramRenderer : +new() class FakeResponse - <> FakeResponse class FakeSourceAnalyzer - FakeSourceAnalyzer : results: HashMap - FakeSourceAnalyzer : +new() - FakeSourceAnalyzer : +with_result() - FakeSourceAnalyzer : +with_error() - } \ No newline at end of file + } + AnalyzeCodebase : file_discovery: F + AnalyzeCodebase : source_analyzer: S + AnalyzeCodebase : +new() + AnalyzeCodebase : +execute() + AnalyzeCodebaseResult : graph: CodeGraph + AnalyzeCodebaseResult : warnings: Vec + AnalyzeCodebaseResult : +graph() + AnalyzeCodebaseResult : +warnings() + FakeFileDiscovery : files: Vec + FakeFileDiscovery : +new() + FakeFileDiscovery : +empty() + FakeOutputWriter : written: RefCell + FakeOutputWriter : +new() + FakeOutputWriter : +written_outputs() + FakeDiagramRenderer : +new() + <> FakeResponse + FakeSourceAnalyzer : results: HashMap + FakeSourceAnalyzer : +new() + FakeSourceAnalyzer : +with_result() + FakeSourceAnalyzer : +with_error() \ No newline at end of file diff --git a/docs/architecture/type/domain.mmd b/docs/architecture/type/domain.mmd index 69ee3b3..ae718a7 100644 --- a/docs/architecture/type/domain.mmd +++ b/docs/architecture/type/domain.mmd @@ -1,113 +1,21 @@ classDiagram 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 - Relationship : source: String - Relationship : target: String - Relationship : kind: RelationshipKind - Relationship : source_file: Option - Relationship : +new() - Relationship : +with_source_file() - Relationship : +source() - Relationship : +target() - Relationship : +kind() - Relationship : +source_file() class CodeElement - CodeElement : name: String - CodeElement : kind: CodeElementKind - CodeElement : file_path: FilePath - CodeElement : line: usize - CodeElement : visibility: Visibility - CodeElement : module: Option - CodeElement : generics: Vec - CodeElement : attributes: Vec - CodeElement : fields: Vec - CodeElement : methods: Vec - CodeElement : +new() - CodeElement : +with_visibility() - CodeElement : +with_module() - CodeElement : +with_generics() - CodeElement : +with_attributes() - CodeElement : +name() - CodeElement : +kind() - CodeElement : +file_path() - CodeElement : +line() - CodeElement : +visibility() - CodeElement : +module() - CodeElement : +generics() - CodeElement : +attributes() - CodeElement : +with_fields() - CodeElement : +with_methods() - CodeElement : +fields() - CodeElement : +methods() class FileDiscovery class ConfigLoader class ProjectAnalyzer @@ -115,20 +23,112 @@ classDiagram class DiagramRenderer class SourceAnalyzer class CodeGraph - CodeGraph : elements: Vec - CodeGraph : relationships: Vec - CodeGraph : +new() - CodeGraph : +add_element() - CodeGraph : +add_relationship() - CodeGraph : +elements() - CodeGraph : +relationships() - CodeGraph : +modules() - CodeGraph : +elements_by_module() - CodeGraph : +resolve_relationships() - CodeGraph : +filter_external_imports() - CodeGraph : +subgraph_by_module() class DomainError } + 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() + RenderOutput : files: Vec + RenderOutput : +new() + RenderOutput : +single() + RenderOutput : +files() + RenderedFile : name: String + RenderedFile : content: String + RenderedFile : +new() + RenderedFile : +name() + RenderedFile : +content() + SourceFile : path: FilePath + SourceFile : language: Language + SourceFile : +new() + SourceFile : +path() + SourceFile : +language() + ModuleName : +new() + ModuleName : +from_path() + ModuleName : +from_directory_group() + ModuleName : +capitalize() + ModuleName : +as_str() + Language : +name() + FilePath : +new() + FilePath : +as_str() + 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() + AnalysisResult : elements: Vec + AnalysisResult : relationships: Vec + AnalysisResult : warnings: Vec + AnalysisResult : +new() + AnalysisResult : +empty() + AnalysisResult : +elements() + AnalysisResult : +relationships() + AnalysisResult : +warnings() + AnalysisWarning : file_path: FilePath + AnalysisWarning : line: usize + AnalysisWarning : message: String + AnalysisWarning : +new() + AnalysisWarning : +file_path() + AnalysisWarning : +line() + AnalysisWarning : +message() + Relationship : source: String + Relationship : target: String + Relationship : kind: RelationshipKind + Relationship : source_file: Option + Relationship : +new() + Relationship : +with_source_file() + Relationship : +source() + Relationship : +target() + Relationship : +kind() + Relationship : +source_file() + CodeElement : name: String + CodeElement : kind: CodeElementKind + CodeElement : file_path: FilePath + CodeElement : line: usize + CodeElement : visibility: Visibility + CodeElement : module: Option + CodeElement : generics: Vec + CodeElement : attributes: Vec + CodeElement : fields: Vec + CodeElement : methods: Vec + CodeElement : +new() + CodeElement : +with_visibility() + CodeElement : +with_module() + CodeElement : +with_generics() + CodeElement : +with_attributes() + CodeElement : +name() + CodeElement : +kind() + CodeElement : +file_path() + CodeElement : +line() + CodeElement : +visibility() + CodeElement : +module() + CodeElement : +generics() + CodeElement : +attributes() + CodeElement : +with_fields() + CodeElement : +with_methods() + CodeElement : +fields() + CodeElement : +methods() + CodeGraph : elements: Vec + CodeGraph : relationships: Vec + CodeGraph : +new() + CodeGraph : +add_element() + CodeGraph : +add_relationship() + CodeGraph : +elements() + CodeGraph : +relationships() + CodeGraph : +modules() + CodeGraph : +elements_by_module() + CodeGraph : +resolve_relationships() + CodeGraph : +filter_external_imports() + CodeGraph : +subgraph_by_module() SourceFile --> FilePath SourceFile --> Language AnalysisConfig --> DiagramLevel diff --git a/docs/architecture/type/overview.mmd b/docs/architecture/type/overview.mmd index e9e57bf..39a650c 100644 --- a/docs/architecture/type/overview.mmd +++ b/docs/architecture/type/overview.mmd @@ -1,182 +1,21 @@ classDiagram - namespace Adapters { - class MermaidRenderer - 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 AsciiRenderer - AsciiRenderer : +new() - AsciiRenderer : -format_kind() - class WalkdirDiscovery - WalkdirDiscovery : +new() - WalkdirDiscovery : -detect_language() - WalkdirDiscovery : -is_excluded() - class TreeSitterAnalyzer - TreeSitterAnalyzer : rust: RustExtractor - TreeSitterAnalyzer : python: PythonExtractor - TreeSitterAnalyzer : +new() - TreeSitterAnalyzer : -extractor_for() - class LanguageExtractor - class RustExtractor - class PythonExtractor - class FileOutputWriter - FileOutputWriter : output_path: OutputPath - FileOutputWriter : +new() - FileOutputWriter : +single_file() - class OutputPath - <> OutputPath - class StdoutOutputWriter - StdoutOutputWriter : +new() - class RawConfig - <> RawConfig - RawConfig : analysis: RawAnalysis - RawConfig : output: RawOutput - RawConfig : modules: HashMap - class RawAnalysis - <> RawAnalysis - RawAnalysis : exclude: Vec - RawAnalysis : level: Option - class RawOutput - <> 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 - <> WorkspaceToml - WorkspaceToml : workspace: Option - class WorkspaceSection - <> WorkspaceSection - WorkspaceSection : members: Vec - class MemberToml - <> MemberToml - MemberToml : package: Option - MemberToml : dependencies: HashMap - class PackageSection - <> PackageSection - PackageSection : name: String - } 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 - Relationship : source: String - Relationship : target: String - Relationship : kind: RelationshipKind - Relationship : source_file: Option - Relationship : +new() - Relationship : +with_source_file() - Relationship : +source() - Relationship : +target() - Relationship : +kind() - Relationship : +source_file() class CodeElement - CodeElement : name: String - CodeElement : kind: CodeElementKind - CodeElement : file_path: FilePath - CodeElement : line: usize - CodeElement : visibility: Visibility - CodeElement : module: Option - CodeElement : generics: Vec - CodeElement : attributes: Vec - CodeElement : fields: Vec - CodeElement : methods: Vec - CodeElement : +new() - CodeElement : +with_visibility() - CodeElement : +with_module() - CodeElement : +with_generics() - CodeElement : +with_attributes() - CodeElement : +name() - CodeElement : +kind() - CodeElement : +file_path() - CodeElement : +line() - CodeElement : +visibility() - CodeElement : +module() - CodeElement : +generics() - CodeElement : +attributes() - CodeElement : +with_fields() - CodeElement : +with_methods() - CodeElement : +fields() - CodeElement : +methods() class FileDiscovery class ConfigLoader class ProjectAnalyzer @@ -184,65 +23,226 @@ classDiagram class DiagramRenderer class SourceAnalyzer class CodeGraph - CodeGraph : elements: Vec - CodeGraph : relationships: Vec - CodeGraph : +new() - CodeGraph : +add_element() - CodeGraph : +add_relationship() - CodeGraph : +elements() - CodeGraph : +relationships() - CodeGraph : +modules() - CodeGraph : +elements_by_module() - CodeGraph : +resolve_relationships() - CodeGraph : +filter_external_imports() - CodeGraph : +subgraph_by_module() class DomainError } namespace Application { class AnalyzeCodebase - AnalyzeCodebase : file_discovery: F - AnalyzeCodebase : source_analyzer: S - AnalyzeCodebase : +new() - AnalyzeCodebase : +execute() class AnalyzeCodebaseResult - AnalyzeCodebaseResult : graph: CodeGraph - AnalyzeCodebaseResult : warnings: Vec - AnalyzeCodebaseResult : +graph() - AnalyzeCodebaseResult : +warnings() class FakeFileDiscovery - FakeFileDiscovery : files: Vec - FakeFileDiscovery : +new() - FakeFileDiscovery : +empty() class FakeOutputWriter - FakeOutputWriter : written: RefCell - FakeOutputWriter : +new() - FakeOutputWriter : +written_outputs() class FakeDiagramRenderer - FakeDiagramRenderer : +new() class FakeResponse - <> FakeResponse class FakeSourceAnalyzer - FakeSourceAnalyzer : results: HashMap - FakeSourceAnalyzer : +new() - FakeSourceAnalyzer : +with_result() - FakeSourceAnalyzer : +with_error() + } + namespace Adapters { + class MermaidRenderer + class AsciiRenderer + class WalkdirDiscovery + class TreeSitterAnalyzer + class LanguageExtractor + class RustExtractor + class PythonExtractor + class FileOutputWriter + class OutputPath + class StdoutOutputWriter + class RawConfig + class RawAnalysis + class RawOutput + class TomlConfigLoader + class CargoWorkspaceAnalyzer + class WorkspaceToml + class WorkspaceSection + class MemberToml + class PackageSection } namespace Presentation { class Cli - Cli : command: Option - Cli : path: PathBuf - 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 } + 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() + RenderOutput : files: Vec + RenderOutput : +new() + RenderOutput : +single() + RenderOutput : +files() + RenderedFile : name: String + RenderedFile : content: String + RenderedFile : +new() + RenderedFile : +name() + RenderedFile : +content() + SourceFile : path: FilePath + SourceFile : language: Language + SourceFile : +new() + SourceFile : +path() + SourceFile : +language() + ModuleName : +new() + ModuleName : +from_path() + ModuleName : +from_directory_group() + ModuleName : +capitalize() + ModuleName : +as_str() + Language : +name() + FilePath : +new() + FilePath : +as_str() + 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() + AnalysisResult : elements: Vec + AnalysisResult : relationships: Vec + AnalysisResult : warnings: Vec + AnalysisResult : +new() + AnalysisResult : +empty() + AnalysisResult : +elements() + AnalysisResult : +relationships() + AnalysisResult : +warnings() + AnalysisWarning : file_path: FilePath + AnalysisWarning : line: usize + AnalysisWarning : message: String + AnalysisWarning : +new() + AnalysisWarning : +file_path() + AnalysisWarning : +line() + AnalysisWarning : +message() + Relationship : source: String + Relationship : target: String + Relationship : kind: RelationshipKind + Relationship : source_file: Option + Relationship : +new() + Relationship : +with_source_file() + Relationship : +source() + Relationship : +target() + Relationship : +kind() + Relationship : +source_file() + CodeElement : name: String + CodeElement : kind: CodeElementKind + CodeElement : file_path: FilePath + CodeElement : line: usize + CodeElement : visibility: Visibility + CodeElement : module: Option + CodeElement : generics: Vec + CodeElement : attributes: Vec + CodeElement : fields: Vec + CodeElement : methods: Vec + CodeElement : +new() + CodeElement : +with_visibility() + CodeElement : +with_module() + CodeElement : +with_generics() + CodeElement : +with_attributes() + CodeElement : +name() + CodeElement : +kind() + CodeElement : +file_path() + CodeElement : +line() + CodeElement : +visibility() + CodeElement : +module() + CodeElement : +generics() + CodeElement : +attributes() + CodeElement : +with_fields() + CodeElement : +with_methods() + CodeElement : +fields() + CodeElement : +methods() + CodeGraph : elements: Vec + CodeGraph : relationships: Vec + CodeGraph : +new() + CodeGraph : +add_element() + CodeGraph : +add_relationship() + CodeGraph : +elements() + CodeGraph : +relationships() + CodeGraph : +modules() + CodeGraph : +elements_by_module() + CodeGraph : +resolve_relationships() + CodeGraph : +filter_external_imports() + CodeGraph : +subgraph_by_module() + AnalyzeCodebase : file_discovery: F + AnalyzeCodebase : source_analyzer: S + AnalyzeCodebase : +new() + AnalyzeCodebase : +execute() + AnalyzeCodebaseResult : graph: CodeGraph + AnalyzeCodebaseResult : warnings: Vec + AnalyzeCodebaseResult : +graph() + AnalyzeCodebaseResult : +warnings() + FakeFileDiscovery : files: Vec + FakeFileDiscovery : +new() + FakeFileDiscovery : +empty() + FakeOutputWriter : written: RefCell + FakeOutputWriter : +new() + FakeOutputWriter : +written_outputs() + FakeDiagramRenderer : +new() + <> FakeResponse + FakeSourceAnalyzer : results: HashMap + FakeSourceAnalyzer : +new() + FakeSourceAnalyzer : +with_result() + 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() + AsciiRenderer : +new() + AsciiRenderer : -format_kind() + WalkdirDiscovery : +new() + WalkdirDiscovery : -detect_language() + WalkdirDiscovery : -is_excluded() + TreeSitterAnalyzer : rust: RustExtractor + TreeSitterAnalyzer : python: PythonExtractor + TreeSitterAnalyzer : +new() + TreeSitterAnalyzer : -extractor_for() + FileOutputWriter : output_path: OutputPath + FileOutputWriter : +new() + FileOutputWriter : +single_file() + <> OutputPath + StdoutOutputWriter : +new() + <> RawConfig + RawConfig : analysis: RawAnalysis + RawConfig : output: RawOutput + RawConfig : modules: HashMap + <> RawAnalysis + RawAnalysis : exclude: Vec + RawAnalysis : level: Option + <> RawOutput + RawOutput : format: Option + RawOutput : path: Option + RawOutput : split_by_module: bool + TomlConfigLoader : raw: RawConfig + TomlConfigLoader : +from_path() + TomlConfigLoader : -parse_level() + CargoWorkspaceAnalyzer : +new() + <> WorkspaceToml + WorkspaceToml : workspace: Option + <> WorkspaceSection + WorkspaceSection : members: Vec + <> MemberToml + MemberToml : package: Option + MemberToml : dependencies: HashMap + <> PackageSection + PackageSection : name: String + Cli : command: Option + Cli : path: PathBuf + 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 SourceFile --> FilePath SourceFile --> Language AnalysisConfig --> DiagramLevel diff --git a/docs/architecture/type/presentation.mmd b/docs/architecture/type/presentation.mmd index d2fe437..53b5416 100644 --- a/docs/architecture/type/presentation.mmd +++ b/docs/architecture/type/presentation.mmd @@ -1,17 +1,17 @@ classDiagram namespace Presentation { class Cli - Cli : command: Option - Cli : path: PathBuf - 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 - } \ No newline at end of file + } + Cli : command: Option + Cli : path: PathBuf + 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 \ No newline at end of file