Initial upload: TermDiagram v0.1.0
This commit is contained in:
81
src/termdiagram/models/diagrams.py
Normal file
81
src/termdiagram/models/diagrams.py
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
from typing import List, Optional, Dict, Any
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class SymbolType(Enum):
|
||||||
|
MODULE = "module"
|
||||||
|
CLASS = "class"
|
||||||
|
FUNCTION = "function"
|
||||||
|
METHOD = "method"
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class MethodSymbol:
|
||||||
|
name: str
|
||||||
|
params: List[str]
|
||||||
|
return_type: Optional[str] = None
|
||||||
|
line_number: int = 0
|
||||||
|
docstring: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class FunctionSymbol:
|
||||||
|
name: str
|
||||||
|
params: List[str]
|
||||||
|
return_type: Optional[str] = None
|
||||||
|
line_number: int = 0
|
||||||
|
docstring: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ClassSymbol:
|
||||||
|
name: str
|
||||||
|
bases: List[str]
|
||||||
|
methods: List[MethodSymbol] = field(default_factory=list)
|
||||||
|
line_number: int = 0
|
||||||
|
docstring: Optional[str] = None
|
||||||
|
|
||||||
|
def to_dict(self) -> Dict[str, Any]:
|
||||||
|
return {
|
||||||
|
"name": self.name,
|
||||||
|
"bases": self.bases,
|
||||||
|
"methods": [
|
||||||
|
{
|
||||||
|
"name": m.name,
|
||||||
|
"params": m.params,
|
||||||
|
"return_type": m.return_type,
|
||||||
|
"line_number": m.line_number,
|
||||||
|
}
|
||||||
|
for m in self.methods
|
||||||
|
],
|
||||||
|
"line_number": self.line_number,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Module:
|
||||||
|
name: str
|
||||||
|
path: str
|
||||||
|
classes: List[ClassSymbol] = field(default_factory=list)
|
||||||
|
functions: List[FunctionSymbol] = field(default_factory=list)
|
||||||
|
imports: List[str] = field(default_factory=list)
|
||||||
|
line_count: int = 0
|
||||||
|
|
||||||
|
def to_dict(self) -> Dict[str, Any]:
|
||||||
|
return {
|
||||||
|
"name": self.name,
|
||||||
|
"path": self.path,
|
||||||
|
"classes": [c.to_dict() for c in self.classes],
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"name": f.name,
|
||||||
|
"params": f.params,
|
||||||
|
"return_type": f.return_type,
|
||||||
|
"line_number": f.line_number,
|
||||||
|
}
|
||||||
|
for f in self.functions
|
||||||
|
],
|
||||||
|
"imports": self.imports,
|
||||||
|
"line_count": self.line_count,
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user