mirror of
https://github.com/pantor/inja.git
synced 2026-03-29 04:12:45 +00:00
* test * improve ast * add if statement * shunting-yard start * renderer as node visitor * improve ast * improve ast further * first functions * improve ast v3 * improve ast v4 * fix parser error location * nested ifs * fix comma, activate more tests * fix line statements * fix some more tests * fix callbacks without arguments * add json literal array and object * use switch in expression * fix default function * fix loop data * improved tests and benchmark * fix minus numbers * improve all * fix warnings, optimizations * fix callbacks argument order * dont move loop parent * a few more test * fix clang-3 * fix pointers * clean * update single include
40 lines
824 B
C++
40 lines
824 B
C++
// 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_
|