diff options
| author | Loic Dachary | 2018-04-03 00:05:03 +0200 |
|---|---|---|
| committer | jvoisin | 2018-04-03 21:27:38 +0200 |
| commit | 76f25212d1eef99c360b0a50cd5b88c117acf278 (patch) | |
| tree | 2ed8cfed3cdff42b22095dce814d86e0b264d53b /src | |
| parent | 04a0032e9fef6453b293cbba1464125662eba776 (diff) | |
get_parse needs to explore subclasses recusively
Diffstat (limited to 'src')
| -rw-r--r-- | src/parser_factory.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/parser_factory.py b/src/parser_factory.py index 7fd42d7..770f17c 100644 --- a/src/parser_factory.py +++ b/src/parser_factory.py | |||
| @@ -18,7 +18,10 @@ for module_loader, name, ispkg in pkgutil.walk_packages('.src'): | |||
| 18 | 18 | ||
| 19 | def get_parser(filename: str) -> (T, str): | 19 | def get_parser(filename: str) -> (T, str): |
| 20 | mtype, _ = mimetypes.guess_type(filename) | 20 | mtype, _ = mimetypes.guess_type(filename) |
| 21 | for c in abstract.AbstractParser.__subclasses__(): | 21 | def get_subclasses(cls): |
| 22 | return cls.__subclasses__() + \ | ||
| 23 | [g for s in cls.__subclasses__() for g in get_subclasses(s)] | ||
| 24 | for c in get_subclasses(abstract.AbstractParser): | ||
| 22 | if mtype in c.mimetypes: | 25 | if mtype in c.mimetypes: |
| 23 | return c(filename), mtype | 26 | return c(filename), mtype |
| 24 | return None, mtype | 27 | return None, mtype |
