Skip to content

Commit 2601b4d

Browse files
committed
rust and vue parser added
1 parent 5ccc922 commit 2601b4d

File tree

8 files changed

+4223
-2
lines changed

8 files changed

+4223
-2
lines changed

src/knowcode/data_models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class RelationshipKind(str, Enum):
3636
IMPORTS = "imports" # Module import / dependency
3737
CONTAINS = "contains" # Structural containment (Class -> Method)
3838
INHERITS = "inherits" # Class inheritance / Interface implementation
39+
IMPLEMENTS = "implements" # Type implements Trait/Interface (Rust/Java)
40+
USES_TYPE = "uses_type" # Variable/Field uses a Type
3941
REFERENCES = "references" # General reference (e.g., config usage)
4042
# Temporal relationships
4143
CHANGED_BY = "changed_by" # Entity -> Commit

src/knowcode/indexing/graph_builder.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
from knowcode.parsers import MarkdownParser, PythonParser, YamlParser
99
from knowcode.parsers.javascript_parser import JavaScriptParser
1010
from knowcode.parsers.java_parser import JavaParser
11+
from knowcode.parsers.rust_parser import RustParser
12+
from knowcode.parsers.vue_parser import VueParser
1113
from knowcode.indexing.scanner import FileInfo, Scanner
1214
from knowcode.analysis.signals import CoverageProcessor
1315
from knowcode.analysis.temporal import TemporalAnalyzer
@@ -23,6 +25,8 @@ def __init__(self) -> None:
2325
self.yaml_parser = YamlParser()
2426
self.js_parser = JavaScriptParser()
2527
self.java_parser = JavaParser()
28+
self.rust_parser = RustParser()
29+
self.vue_parser = VueParser()
2630

2731
self.entities: dict[str, Entity] = {}
2832
self.relationships: list[Relationship] = []
@@ -99,6 +103,10 @@ def _parse_file(self, file_info: FileInfo) -> ParseResult:
99103
return self.js_parser.parse_file(file_info.path)
100104
elif file_info.extension == ".java":
101105
return self.java_parser.parse_file(file_info.path)
106+
elif file_info.extension == ".rs":
107+
return self.rust_parser.parse_file(file_info.path)
108+
elif file_info.extension == ".vue":
109+
return self.vue_parser.parse_file(file_info.path)
102110
else:
103111
return ParseResult(
104112
file_path=str(file_info.path),

src/knowcode/indexing/scanner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class FileInfo:
2222
class Scanner:
2323
"""Scans directories for source files with gitignore support."""
2424

25-
SUPPORTED_EXTENSIONS = {".py", ".md", ".yaml", ".yml", ".js", ".ts", ".java"}
25+
SUPPORTED_EXTENSIONS = {".py", ".md", ".yaml", ".yml", ".js", ".ts", ".java", ".rs", ".vue"}
2626

2727
def __init__(
2828
self,

src/knowcode/parsers/__init__.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,17 @@
33
from knowcode.parsers.python_parser import PythonParser
44
from knowcode.parsers.markdown_parser import MarkdownParser
55
from knowcode.parsers.yaml_parser import YamlParser
6+
from knowcode.parsers.javascript_parser import JavaScriptParser
7+
from knowcode.parsers.java_parser import JavaParser
8+
from knowcode.parsers.rust_parser import RustParser
9+
from knowcode.parsers.vue_parser import VueParser
610

7-
__all__ = ["PythonParser", "MarkdownParser", "YamlParser"]
11+
__all__ = [
12+
"PythonParser",
13+
"MarkdownParser",
14+
"YamlParser",
15+
"JavaScriptParser",
16+
"JavaParser",
17+
"RustParser",
18+
"VueParser",
19+
]

0 commit comments

Comments
 (0)