aboutsummaryrefslogtreecommitdiff
path: root/include/inja/config.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/inja/config.hpp')
-rw-r--r--include/inja/config.hpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/include/inja/config.hpp b/include/inja/config.hpp
new file mode 100644
index 0000000..3f284a4
--- /dev/null
+++ b/include/inja/config.hpp
@@ -0,0 +1,76 @@
+// Copyright (c) 2019 Pantor. All rights reserved.
+
+#ifndef INCLUDE_INJA_CONFIG_HPP_
+#define INCLUDE_INJA_CONFIG_HPP_
+
+#include <functional>
+#include <string>
+
+#include "string_view.hpp"
+
+namespace inja {
+
+/*!
+ * \brief Class for lexer configuration.
+ */
+struct LexerConfig {
+ std::string statement_open {"{%"};
+ std::string statement_open_no_lstrip {"{%+"};
+ std::string statement_open_force_lstrip {"{%-"};
+ std::string statement_close {"%}"};
+ std::string statement_close_force_rstrip {"-%}"};
+ std::string line_statement {"##"};
+ std::string expression_open {"{{"};
+ std::string expression_open_force_lstrip {"{{-"};
+ std::string expression_close {"}}"};
+ std::string expression_close_force_rstrip {"-}}"};
+ std::string comment_open {"{#"};
+ std::string comment_close {"#}"};
+ std::string open_chars {"#{"};
+
+ bool trim_blocks {false};
+ bool lstrip_blocks {false};
+
+ void update_open_chars() {
+ open_chars = "";
+ if (open_chars.find(line_statement[0]) == std::string::npos) {
+ open_chars += line_statement[0];
+ }
+ if (open_chars.find(statement_open[0]) == std::string::npos) {
+ open_chars += statement_open[0];
+ }
+ if (open_chars.find(statement_open_no_lstrip[0]) == std::string::npos) {
+ open_chars += statement_open_no_lstrip[0];
+ }
+ if (open_chars.find(statement_open_force_lstrip[0]) == std::string::npos) {
+ open_chars += statement_open_force_lstrip[0];
+ }
+ if (open_chars.find(expression_open[0]) == std::string::npos) {
+ open_chars += expression_open[0];
+ }
+ if (open_chars.find(expression_open_force_lstrip[0]) == std::string::npos) {
+ open_chars += expression_open_force_lstrip[0];
+ }
+ if (open_chars.find(comment_open[0]) == std::string::npos) {
+ open_chars += comment_open[0];
+ }
+ }
+};
+
+/*!
+ * \brief Class for parser configuration.
+ */
+struct ParserConfig {
+ bool search_included_templates_in_files {true};
+};
+
+/*!
+ * \brief Class for render configuration.
+ */
+struct RenderConfig {
+ bool throw_at_missing_includes {true};
+};
+
+} // namespace inja
+
+#endif // INCLUDE_INJA_CONFIG_HPP_