diff options
| author | Bicker <bickerkards@tuta.io> | 2019-05-22 17:45:37 +0200 |
|---|---|---|
| committer | Bicker <bickerkards@tuta.io> | 2019-05-22 17:45:37 +0200 |
| commit | 25314fd2aed81aa5281bc3d93dbcc7919368ebe1 (patch) | |
| tree | 1995521ee652e419926de5fced0f2e3b655e70fb /ql/ast/visitors/question_visitor.py | |
Diffstat (limited to 'ql/ast/visitors/question_visitor.py')
| -rw-r--r-- | ql/ast/visitors/question_visitor.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ql/ast/visitors/question_visitor.py b/ql/ast/visitors/question_visitor.py new file mode 100644 index 0000000..8037364 --- /dev/null +++ b/ql/ast/visitors/question_visitor.py @@ -0,0 +1,33 @@ +from multimethods import multimethod + +from ql.ast.nodes.statements.form_statement import FormNode +from ql.ast.nodes.statements.if_statement import IfNode +from ql.ast.nodes.statements.question_statement import QuestionNode + + +class QuestionVisitor: + def __init__(self): + self.__questions = [] + + @property + def questions(self): + return self.__questions + + @multimethod(FormNode) + def visit(self, node): + for child in node.block: + child.accept(self) + + @multimethod(IfNode) + def visit(self, node): + for child in node.block: + child.accept(self) + + @multimethod(QuestionNode) + def visit(self, node): + self.__questions.append({ + 'label': node.label, + 'identifier': node.identifier, + 'answer_type': node.answer_type, + 'metadata': node.metadata, + }) |