diff --git a/codetide/__init__.py b/codetide/__init__.py index 22f6077..d134df2 100644 --- a/codetide/__init__.py +++ b/codetide/__init__.py @@ -7,6 +7,7 @@ from codetide.core.common import readFile, writeFile from codetide.core.logs import logger +from codetide.parsers.generic_parser import GenericParser from codetide.parsers import BaseParser from codetide import parsers @@ -224,7 +225,7 @@ def _initialize_parsers( """Initialize parsers for all required languages.""" for language in languages: if language not in self._instantiated_parsers: - parser_obj = getattr(parsers, self.parserId(language), None) + parser_obj = getattr(parsers, self.parserId(language), GenericParser) if parser_obj is not None: self._instantiated_parsers[language] = parser_obj() logger.debug(f"Initialized parser for {language}") diff --git a/codetide/parsers/generic_parser.py b/codetide/parsers/generic_parser.py index 3e63051..6a75aec 100644 --- a/codetide/parsers/generic_parser.py +++ b/codetide/parsers/generic_parser.py @@ -1,5 +1,6 @@ from ..core.models import CodeBase, CodeFileModel, ImportStatement from ..parsers.base_parser import BaseParser +from ..core.common import readFile from concurrent.futures import ThreadPoolExecutor from typing import List, Optional, Union @@ -45,17 +46,18 @@ async def parse_file(self, file_path: Union[str, Path], root_path: Optional[Unio # Use aiofiles or run synchronous file IO in executor loop = asyncio.get_running_loop() with ThreadPoolExecutor() as pool: - + code = await loop.run_in_executor(pool, readFile, file_path, "rb") if root_path is not None: file_path = file_path.relative_to(Path(root_path)) - codeFile = await loop.run_in_executor(pool, self.parse_code, file_path) + codeFile = await loop.run_in_executor(pool, self.parse_code, file_path, code) return codeFile - def parse_code(self, file_path :Path): + def parse_code(self, file_path :Path, code :str): codeFile = CodeFileModel( - file_path=str(file_path) + file_path=str(file_path), + raw=code ) return codeFile