mirror of
https://github.com/pantor/inja.git
synced 2026-02-21 10:56:26 +00:00
91c2bb46e93c5b4597991ad519bccdd701f736a8
Inja
Design
json data;
data["name"] = "world";
inja::render("Hello {{ name }}!", data); // "Hello World!"
Integration
Inja is headers only. Just one dependency: json by nlohmann.
#include "json.hpp"
#include "inja.hpp"
Tutorial
Template Rendering
json data;
data["name"] = "world";
inja::render("Hello {{ name }}!", data); // "Hello World!"
// For more advanced usage, an environment is recommended
inja::Environment env = inja::Environment();
// Render a string with json data
std::string result = env.render("Hello {{ name }}!", data);
// Or directly read a template file
std::string result_template = env.render_temlate("template.txt", data);
// And read a json file for data
std::string result_template_2 = env.render_temlate_with_json_file("template.txt", "data.json");
The environment class can be configured.
// With default settings
inja::Environment env_default = inja::Environment();
// With global path to template files
inja::Environment env_default = inja::Environment("../path/templates/");
Variables
Variables can be rendered with the {{ ... }} syntax.
Statements
Statements can be written with the (% ... %) syntax. The most important statements are loops, conditions and file includes.All statements can be nested.
Loops
| Template | Json | Result |
|---|---|---|
Guests:
(% for guest in guests %){{ index1 }}: {{ guest }}
(% endfor %)
|
{
"guests": [
"Jeff",
"Pierre",
"Tom"
]
}
|
Guests:
1. Jeff
2. Pierre
3. Tom
|
In the loop, some special variables are available:
- int index
- bool is_first
- bool is_last
Conditions
Includes
Include other files like (% include "footer.html" %). Relative from file.
Comments
Comments can be rendered with the {# ... #} syntax.
inja::render("Hello{# Todo #}!", data); // "Hello!"
Supported compilers
Currently, the following compilers are tested:
- GCC 4.9 - 7.1 (and possibly later)
- Clang 3.6 - 3.7 (and possibly later)
License
The class is licensed under the MIT License.
Description
Languages
C++
87.6%
CMake
11.7%
Meson
0.5%
Python
0.1%