introduce INJA_DATA_TYPE
diff --git a/README.md b/README.md
index 0bf6de5..4c3b18e 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,6 @@
// Just for convenience
using namespace inja;
-using json = nlohmann::json;
```
If you are using the [Meson Build System](http://mesonbuild.com), then you can wrap this repository as a subproject.
diff --git a/include/inja/inja.hpp b/include/inja/inja.hpp
index 569edc2..f6d3d6e 100644
--- a/include/inja/inja.hpp
+++ b/include/inja/inja.hpp
@@ -28,7 +28,11 @@
#include <nlohmann/json.hpp>
namespace inja {
+#ifndef INJA_DATA_TYPE
using json = nlohmann::json;
+#else
+ using json = INJA_DATA_TYPE;
+#endif
}
#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(INJA_NOEXCEPTION)
diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp
index 7cbdb97..b0f571b 100644
--- a/single_include/inja/inja.hpp
+++ b/single_include/inja/inja.hpp
@@ -28,7 +28,11 @@
#include <nlohmann/json.hpp>
namespace inja {
+#ifndef INJA_DATA_TYPE
using json = nlohmann::json;
+#else
+ using json = INJA_DATA_TYPE;
+#endif
}
#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(INJA_NOEXCEPTION)
diff --git a/test/test-files.cpp b/test/test-files.cpp
index d1f859c..2de97fc 100644
--- a/test/test-files.cpp
+++ b/test/test-files.cpp
@@ -2,7 +2,7 @@
TEST_CASE("loading") {
inja::Environment env;
- json data;
+ inja::json data;
data["name"] = "Jeff";
SUBCASE("Files should be loaded") { CHECK(env.load_file(test_file_directory + "simple.txt") == "Hello {{ name }}."); }
@@ -58,7 +58,7 @@
TEST_CASE("global-path") {
inja::Environment env {test_file_directory, "./"};
inja::Environment env_result {"./"};
- json data;
+ inja::json data;
data["name"] = "Jeff";
SUBCASE("Files should be written") {
@@ -79,7 +79,7 @@
TEST_CASE("include-in-memory-and-file-template") {
inja::Environment env {test_file_directory};
- json data;
+ inja::json data;
data["name"] = "Jeff";
CHECK_THROWS_WITH(env.render_file("include-both.txt", data), "[inja.exception.file_error] failed accessing file at '../test/data/body'");
diff --git a/test/test-functions.cpp b/test/test-functions.cpp
index 8640885..92eca89 100644
--- a/test/test-functions.cpp
+++ b/test/test-functions.cpp
@@ -3,7 +3,7 @@
TEST_CASE("functions") {
inja::Environment env;
- json data;
+ inja::json data;
data["name"] = "Peter";
data["city"] = "New York";
data["names"] = {"Jeff", "Seb", "Peter", "Tom"};
@@ -199,7 +199,7 @@
TEST_CASE("assignments") {
inja::Environment env;
- json data;
+ inja::json data;
data["age"] = 28;
CHECK(env.render("{% set new_hour=23 %}{{ new_hour }}", data) == "23");
@@ -209,7 +209,7 @@
TEST_CASE("callbacks") {
inja::Environment env;
- json data;
+ inja::json data;
data["age"] = 28;
env.add_callback("double", 1, [](inja::Arguments &args) {
@@ -262,7 +262,7 @@
SUBCASE("Variadic") {
env.add_callback("argmax", [](inja::Arguments& args) {
- auto result = std::max_element(args.begin(), args.end(), [](const json* a, const json* b) { return *a < *b;});
+ auto result = std::max_element(args.begin(), args.end(), [](const inja::json* a, const inja::json* b) { return *a < *b;});
return std::distance(args.begin(), result);
});
@@ -273,7 +273,7 @@
TEST_CASE("combinations") {
inja::Environment env;
- json data;
+ inja::json data;
data["name"] = "Peter";
data["city"] = "Brunswick";
data["age"] = 29;
diff --git a/test/test-renderer.cpp b/test/test-renderer.cpp
index e06b803..35f423d 100644
--- a/test/test-renderer.cpp
+++ b/test/test-renderer.cpp
@@ -2,7 +2,7 @@
TEST_CASE("types") {
inja::Environment env;
- json data;
+ inja::json data;
data["name"] = "Peter";
data["city"] = "Brunswick";
data["age"] = 29;
@@ -74,7 +74,7 @@
}
SUBCASE("nested loops") {
- auto ldata = json::parse(R""""(
+ auto ldata = inja::json::parse(R""""(
{ "outer" : [
{ "inner" : [
{ "in2" : [ 1, 2 ] },
@@ -158,7 +158,7 @@
}
TEST_CASE("templates") {
- json data;
+ inja::json data;
data["name"] = "Peter";
data["city"] = "Brunswick";
data["is_happy"] = true;
@@ -186,8 +186,8 @@
}
SUBCASE("include-in-loop") {
- json loop_data;
- loop_data["cities"] = json::array({{{"name", "Munich"}}, {{"name", "New York"}}});
+ inja::json loop_data;
+ loop_data["cities"] = inja::json::array({{{"name", "Munich"}}, {{"name", "New York"}}});
inja::Environment env;
env.include_template("city.tpl", env.parse("{{ loop.index }}:{{ city.name }};"));
@@ -246,7 +246,7 @@
}
TEST_CASE("other syntax") {
- json data;
+ inja::json data;
data["name"] = "Peter";
data["city"] = "Brunswick";
data["age"] = 29;
diff --git a/test/test-units.cpp b/test/test-units.cpp
index 95862f2..2366dde 100644
--- a/test/test-units.cpp
+++ b/test/test-units.cpp
@@ -36,16 +36,16 @@
env.include_template("tpl", t1);
std::string test_tpl = "{% include \"tpl\" %}";
- REQUIRE(env.render(test_tpl, json()) == "4");
+ REQUIRE(env.render(test_tpl, inja::json()) == "4");
inja::Environment copy(env);
- CHECK(copy.render(test_tpl, json()) == "4");
+ CHECK(copy.render(test_tpl, inja::json()) == "4");
// overwrite template in source env
inja::Template t2 = env.parse("{{ double(4) }}");
env.include_template("tpl", t2);
- REQUIRE(env.render(test_tpl, json()) == "8");
+ REQUIRE(env.render(test_tpl, inja::json()) == "8");
// template is unchanged in copy
- CHECK(copy.render(test_tpl, json()) == "4");
+ CHECK(copy.render(test_tpl, inja::json()) == "4");
}
diff --git a/test/test.cpp b/test/test.cpp
index 50161be..7645ade 100644
--- a/test/test.cpp
+++ b/test/test.cpp
@@ -5,8 +5,6 @@
#include "doctest/doctest.h"
#include "inja/inja.hpp"
-using json = nlohmann::json;
-
const std::string test_file_directory {"../test/data/"};
#include "test-files.cpp"