diff resfinder/cge/out/parserdict.py @ 0:55051a9bc58d draft default tip

Uploaded
author dcouvin
date Mon, 10 Jan 2022 20:06:07 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/resfinder/cge/out/parserdict.py	Mon Jan 10 20:06:07 2022 +0000
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+
+from .valueparsers import ValueParsers
+
+
+class ParserDict(dict):
+
+    def __init__(self, input_parser=None):
+
+        if(input_parser is None):
+            parser_class = ValueParsers
+        else:
+            parser_class = input_parser.__class__
+
+        val_parser_list = self.get_method_names(parser_class)
+
+        for parser in val_parser_list:
+            if(parser.startswith("parse_")):
+                parse_key = parser[6:]
+                self[parse_key] = getattr(parser_class, parser)
+            else:
+                raise SyntaxError(("A function in the {} class did "
+                                   "not start with 'parse_'. Function is "
+                                   "named: {}"
+                                   .format(parser_class.__name__, parser)))
+
+    @staticmethod
+    def get_method_names(cls):
+        return [func for func in dir(cls) if(callable(getattr(cls, func))
+                                             and not func.startswith("__"))]