| | """Base parser and config class.""" |
| |
|
| | from abc import abstractmethod |
| | from pathlib import Path |
| | from typing import Dict, List, Optional, Union |
| |
|
| |
|
| | class BaseParser: |
| | """Base class for all parsers.""" |
| |
|
| | def __init__(self, parser_config: Optional[Dict] = None): |
| | """Init params.""" |
| | self._parser_config = parser_config |
| |
|
| | def init_parser(self) -> None: |
| | """Init parser and store it.""" |
| | parser_config = self._init_parser() |
| | self._parser_config = parser_config |
| |
|
| | @property |
| | def parser_config_set(self) -> bool: |
| | """Check if parser config is set.""" |
| | return self._parser_config is not None |
| |
|
| | @property |
| | def parser_config(self) -> Dict: |
| | """Check if parser config is set.""" |
| | if self._parser_config is None: |
| | raise ValueError("Parser config not set.") |
| | return self._parser_config |
| |
|
| | @abstractmethod |
| | def _init_parser(self) -> Dict: |
| | """Initialize the parser with the config.""" |
| |
|
| | @abstractmethod |
| | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str, List[str]]: |
| | """Parse file.""" |
| |
|