2017-08-14 15:23:57 +02:00
2017-08-14 15:22:23 +02:00
2017-08-14 08:12:39 +02:00
2017-08-14 08:12:39 +02:00
2017-08-12 13:53:50 +02:00
2017-08-14 15:23:57 +02:00

Inja

Build Status Coverage Status Codacy Status Github Issues GitHub License

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%