diff options
Diffstat (limited to 'src/parser_factory.py')
| -rw-r--r-- | src/parser_factory.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/parser_factory.py b/src/parser_factory.py index a93595a..f4cf07b 100644 --- a/src/parser_factory.py +++ b/src/parser_factory.py | |||
| @@ -1,10 +1,19 @@ | |||
| 1 | import mimetypes | 1 | import mimetypes |
| 2 | import importlib | ||
| 3 | import pkgutil | ||
| 2 | 4 | ||
| 3 | from .parsers import abstract | 5 | from .parsers import abstract |
| 4 | from .parsers import * | 6 | |
| 7 | for module_loader, name, ispkg in pkgutil.walk_packages('.src.parsers'): | ||
| 8 | if not name.startswith('src.parsers.'): | ||
| 9 | continue | ||
| 10 | elif name == 'src.parsers.abstract': | ||
| 11 | continue | ||
| 12 | importlib.import_module(name) | ||
| 5 | 13 | ||
| 6 | def get_parser(filename: str): | 14 | def get_parser(filename: str): |
| 7 | mtype, _ = mimetypes.guess_type(filename) | 15 | mtype, _ = mimetypes.guess_type(filename) |
| 8 | for c in abstract.AbstractParser.__subclasses__(): | 16 | for c in abstract.AbstractParser.__subclasses__(): |
| 9 | if mtype in c.mimetypes: | 17 | if mtype in c.mimetypes: |
| 10 | return c(filename) | 18 | return c(filename) |
| 19 | print('Nope') | ||
