From 25314fd2aed81aa5281bc3d93dbcc7919368ebe1 Mon Sep 17 00:00:00 2001 From: Bicker Date: Wed, 22 May 2019 17:45:37 +0200 Subject: Initial commit --- ql/ast/visitors/question_visitor.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 ql/ast/visitors/question_visitor.py (limited to 'ql/ast/visitors/question_visitor.py') 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, + }) -- cgit v1.2.3