diff options
Diffstat (limited to 'include/inja/statistics.hpp')
-rw-r--r-- | include/inja/statistics.hpp | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/include/inja/statistics.hpp b/include/inja/statistics.hpp index 71fc719..da33593 100644 --- a/include/inja/statistics.hpp +++ b/include/inja/statistics.hpp @@ -1,11 +1,8 @@ -// Copyright (c) 2019 Pantor. All rights reserved. - #ifndef INCLUDE_INJA_STATISTICS_HPP_ #define INCLUDE_INJA_STATISTICS_HPP_ #include "node.hpp" - namespace inja { /*! @@ -18,24 +15,26 @@ class StatisticsVisitor : public NodeVisitor { } } - void visit(const TextNode&) { } - void visit(const ExpressionNode&) { } - void visit(const LiteralNode&) { } + void visit(const TextNode&) {} + void visit(const ExpressionNode&) {} + void visit(const LiteralNode&) {} - void visit(const JsonNode&) { + void visit(const DataNode&) { variable_counter += 1; } - void visit(const FunctionNode&) { } - - void visit(const ExpressionListNode& node) { - for (auto& n : node.rpn_output) { + void visit(const FunctionNode& node) { + for (auto& n : node.arguments) { n->accept(*this); } } - void visit(const StatementNode&) { } - void visit(const ForStatementNode&) { } + void visit(const ExpressionListNode& node) { + node.root->accept(*this); + } + + void visit(const StatementNode&) {} + void visit(const ForStatementNode&) {} void visit(const ForArrayStatementNode& node) { node.condition.accept(*this); @@ -53,14 +52,20 @@ class StatisticsVisitor : public NodeVisitor { node.false_statement.accept(*this); } - void visit(const IncludeStatementNode&) { } + void visit(const IncludeStatementNode&) {} + + void visit(const ExtendsStatementNode&) {} + + void visit(const BlockStatementNode& node) { + node.block.accept(*this); + } - void visit(const SetStatementNode&) { } + void visit(const SetStatementNode&) {} public: unsigned int variable_counter; - explicit StatisticsVisitor() : variable_counter(0) { } + explicit StatisticsVisitor(): variable_counter(0) {} }; } // namespace inja |