Skip to content

Commit 0066e60

Browse files
authored
Fix not rendering uint64_t values greater than the int64_t max value (pantor#278)
* Fix not properly rendering uint64_t values greater than the int64_t max value * Move render check to variables subcase
1 parent 67d6fea commit 0066e60

File tree

3 files changed

+6
-0
lines changed

3 files changed

+6
-0
lines changed

include/inja/renderer.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ class Renderer : public NodeVisitor {
5656
void print_data(const std::shared_ptr<json> value) {
5757
if (value->is_string()) {
5858
*output_stream << value->get_ref<const json::string_t&>();
59+
} else if (value->is_number_unsigned()) {
60+
*output_stream << value->get<const json::number_unsigned_t>();
5961
} else if (value->is_number_integer()) {
6062
*output_stream << value->get<const json::number_integer_t>();
6163
} else if (value->is_null()) {

single_include/inja/inja.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -2125,6 +2125,8 @@ class Renderer : public NodeVisitor {
21252125
void print_data(const std::shared_ptr<json> value) {
21262126
if (value->is_string()) {
21272127
*output_stream << value->get_ref<const json::string_t&>();
2128+
} else if (value->is_number_unsigned()) {
2129+
*output_stream << value->get<const json::number_unsigned_t>();
21282130
} else if (value->is_number_integer()) {
21292131
*output_stream << value->get<const json::number_integer_t>();
21302132
} else if (value->is_null()) {

test/test-renderer.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ TEST_CASE("types") {
1818
data["relatives"]["brother"] = "Chris";
1919
data["relatives"]["sister"] = "Jenny";
2020
data["vars"] = {2, 3, 4, 0, -1, -2, -3};
21+
data["max_value"] = 18446744073709551615ull;
2122

2223
SUBCASE("basic") {
2324
CHECK(env.render("", data) == "");
@@ -38,6 +39,7 @@ TEST_CASE("types") {
3839
CHECK(env.render("{{ \"{{ no_value }}\" }}", data) == "{{ no_value }}");
3940
CHECK(env.render("{{ @name }}", data) == "@name");
4041
CHECK(env.render("{{ $name }}", data) == "$name");
42+
CHECK(env.render("{{max_value}}", data) == "18446744073709551615");
4143

4244
CHECK_THROWS_WITH(env.render("{{unknown}}", data), "[inja.exception.render_error] (at 1:3) variable 'unknown' not found");
4345
}

0 commit comments

Comments
 (0)