blob: 9de0a9632c134d6f431f4573d169ac299f73771c [file] [log] [blame]
// Copyright (c) 2019 Pantor. All rights reserved.
#ifndef INCLUDE_INJA_TEMPLATE_HPP_
#define INCLUDE_INJA_TEMPLATE_HPP_
#include <map>
#include <memory>
#include <string>
#include <vector>
#include "node.hpp"
#include "statistics.hpp"
namespace inja {
/*!
* \brief The main inja Template.
*/
struct Template {
BlockNode root;
std::string content;
explicit Template() { }
explicit Template(const std::string& content): content(content) { }
/// Return number of variables (total number, not distinct ones) in the template
int count_variables() {
auto statistic_visitor = StatisticsVisitor();
root.accept(statistic_visitor);
return statistic_visitor.variable_counter;
}
};
using TemplateStorage = std::map<std::string, Template>;
} // namespace inja
#endif // INCLUDE_INJA_TEMPLATE_HPP_