aboutsummaryrefslogtreecommitdiff
path: root/ql/ast/visitors/question_visitor.py
diff options
context:
space:
mode:
authorBicker <bickerkards@tuta.io>2019-05-22 17:45:37 +0200
committerBicker <bickerkards@tuta.io>2019-05-22 17:45:37 +0200
commit25314fd2aed81aa5281bc3d93dbcc7919368ebe1 (patch)
tree1995521ee652e419926de5fced0f2e3b655e70fb /ql/ast/visitors/question_visitor.py
Initial commitHEADmaster
Diffstat (limited to 'ql/ast/visitors/question_visitor.py')
-rw-r--r--ql/ast/visitors/question_visitor.py33
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,
+ })