From 7aef651029fa92e472a24a04092427281bc7d6e9 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Mon, 2 Feb 2026 21:32:27 +0000 Subject: [PATCH] Add CI/CD and parser modules --- depaudit/parsers/factory.py | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 depaudit/parsers/factory.py diff --git a/depaudit/parsers/factory.py b/depaudit/parsers/factory.py new file mode 100644 index 0000000..62f1fd4 --- /dev/null +++ b/depaudit/parsers/factory.py @@ -0,0 +1,39 @@ +from __future__ import annotations + +from pathlib import Path +from typing import Optional + +from depaudit.parsers import Parser +from depaudit.parsers.javascript import JavaScriptParser +from depaudit.parsers.python import PythonParser +from depaudit.parsers.go import GoParser +from depaudit.parsers.rust import RustParser +from depaudit.parsers.java import JavaParser + + +class ParserFactory: + _parsers: list[Parser] = [ + JavaScriptParser(), + PythonParser(), + GoParser(), + RustParser(), + JavaParser(), + ] + + @classmethod + def get_parser(cls, file_path: Path) -> Optional[Parser]: + for parser in cls._parsers: + if parser.can_parse(file_path): + return parser + return None + + @classmethod + def parse(cls, file_path: Path): + parser = cls.get_parser(file_path) + if parser is None: + return None + return parser.parse(file_path) + + @classmethod + def register_parser(cls, parser: Parser) -> None: + cls._parsers.insert(0, parser)