From 73a40cf1b11ea313dae61fc6ea1cf2e8d3269d64 Mon Sep 17 00:00:00 2001 From: pantor Date: Tue, 20 Mar 2018 16:36:11 +0100 Subject: [PATCH] fix mac os x callback without parent bug --- src/inja.hpp | 6 +++--- test/src/unit-renderer.cpp | 2 +- test/src/unit-string-helper.cpp | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/inja.hpp b/src/inja.hpp index f94dca1..33011be 100644 --- a/src/inja.hpp +++ b/src/inja.hpp @@ -604,14 +604,14 @@ public: */ static Regex function_regex(std::string name, int number_arguments) { std::string pattern = name; - pattern.append("\\("); + pattern.append("(?:\\("); for (int i = 0; i < number_arguments; i++) { if (i != 0) pattern.append(","); pattern.append("(.*)"); } - pattern.append("\\)"); + pattern.append("\\))"); if (number_arguments == 0) { // Without arguments, allow to use the callback without parenthesis - pattern = "(?:" + name + "|" + pattern + ")"; + pattern.append("?"); } return Regex{"\\s*" + pattern + "\\s*"}; } diff --git a/test/src/unit-renderer.cpp b/test/src/unit-renderer.cpp index 1b307b0..41098c4 100644 --- a/test/src/unit-renderer.cpp +++ b/test/src/unit-renderer.cpp @@ -245,7 +245,7 @@ TEST_CASE("callbacks") { CHECK( env.render("{{ double(age) }}", data) == "56" ); CHECK( env.render("{{ half(age) }}", data) == "14" ); CHECK( env.render("{{ double-greetings }}", data) == "Hello Hello!" ); - // CHECK( env.render("{{ double-greetings() }}", data) == "Hello Hello!" ); + CHECK( env.render("{{ double-greetings() }}", data) == "Hello Hello!" ); CHECK( env.render("{{ multiply(4, 5) }}", data) == "20.0" ); CHECK( env.render("{{ multiply(3, 4, 5) }}", data) == "60.0" ); CHECK( env.render("{{ multiply }}", data) == "1.0" ); diff --git a/test/src/unit-string-helper.cpp b/test/src/unit-string-helper.cpp index 4696a21..f6ee964 100644 --- a/test/src/unit-string-helper.cpp +++ b/test/src/unit-string-helper.cpp @@ -158,7 +158,7 @@ TEST_CASE("match-functions") { } TEST_CASE("create-regex-functions") { - CHECK( inja::Parser::function_regex("upper", 1).pattern() == "\\s*upper\\((.*)\\)\\s*" ); - CHECK( inja::Parser::function_regex("upper", 0).pattern() == "\\s*(?:upper|upper\\(\\))\\s*" ); - CHECK( inja::Parser::function_regex("lower", 2).pattern() == "\\s*lower\\((.*),(.*)\\)\\s*" ); + CHECK( inja::Parser::function_regex("upper", 1).pattern() == "\\s*upper(?:\\((.*)\\))\\s*" ); + CHECK( inja::Parser::function_regex("upper", 0).pattern() == "\\s*upper(?:\\(\\))?\\s*" ); + CHECK( inja::Parser::function_regex("lower", 2).pattern() == "\\s*lower(?:\\((.*),(.*)\\))\\s*" ); }