Initial upload: Auto README Generator CLI v0.1.0
This commit is contained in:
39
src/auto_readme/parsers/parser_factory.py
Normal file
39
src/auto_readme/parsers/parser_factory.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""Dependency parser factory for routing to correct parser."""
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from . import DependencyParser
|
||||
from .python_parser import PythonDependencyParser
|
||||
from .javascript_parser import JavaScriptDependencyParser
|
||||
from .go_parser import GoDependencyParser
|
||||
from .rust_parser import RustDependencyParser
|
||||
|
||||
|
||||
class DependencyParserFactory:
|
||||
"""Factory for creating appropriate dependency parsers."""
|
||||
|
||||
PARSERS = [
|
||||
PythonDependencyParser(),
|
||||
JavaScriptDependencyParser(),
|
||||
GoDependencyParser(),
|
||||
RustDependencyParser(),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def get_parser(cls, path: Path) -> Optional[DependencyParser]:
|
||||
"""Get the appropriate parser for a file."""
|
||||
for parser in cls.PARSERS:
|
||||
if parser.can_parse(path):
|
||||
return parser
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def get_all_parsers(cls) -> list[DependencyParser]:
|
||||
"""Get all available parsers."""
|
||||
return cls.PARSERS.copy()
|
||||
|
||||
@classmethod
|
||||
def can_parse(cls, path: Path) -> bool:
|
||||
"""Check if any parser can handle the file."""
|
||||
return cls.get_parser(path) is not None
|
||||
Reference in New Issue
Block a user