0
|
1 #!/usr/bin/env python3
|
|
2
|
|
3 from .valueparsers import ValueParsers
|
|
4
|
|
5
|
|
6 class ParserDict(dict):
|
|
7
|
|
8 def __init__(self, input_parser=None):
|
|
9
|
|
10 if(input_parser is None):
|
|
11 parser_class = ValueParsers
|
|
12 else:
|
|
13 parser_class = input_parser.__class__
|
|
14
|
|
15 val_parser_list = self.get_method_names(parser_class)
|
|
16
|
|
17 for parser in val_parser_list:
|
|
18 if(parser.startswith("parse_")):
|
|
19 parse_key = parser[6:]
|
|
20 self[parse_key] = getattr(parser_class, parser)
|
|
21 else:
|
|
22 raise SyntaxError(("A function in the {} class did "
|
|
23 "not start with 'parse_'. Function is "
|
|
24 "named: {}"
|
|
25 .format(parser_class.__name__, parser)))
|
|
26
|
|
27 @staticmethod
|
|
28 def get_method_names(cls):
|
|
29 return [func for func in dir(cls) if(callable(getattr(cls, func))
|
|
30 and not func.startswith("__"))]
|