fix mac os x callback without parent bug

This commit is contained in:
pantor
2018-03-20 16:36:11 +01:00
parent cfa0e5cbfe
commit 73a40cf1b1
3 changed files with 7 additions and 7 deletions

View File

@@ -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*"};
}

View File

@@ -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" );

View File

@@ -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*" );
}