You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ph...@apache.org on 2018/01/23 21:47:24 UTC

nifi-minifi-cpp git commit: MINIFICPP-380 Added missing toLower EL function

Repository: nifi-minifi-cpp
Updated Branches:
  refs/heads/master 465ae42d8 -> 19881b63b


MINIFICPP-380 Added missing toLower EL function

This closes #250.

Signed-off-by: Marc Parisi <ph...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/19881b63
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/19881b63
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/19881b63

Branch: refs/heads/master
Commit: 19881b63b570331dfb93cdec47db263df0dc62c3
Parents: 465ae42
Author: Andrew I. Christianson <an...@andyic.org>
Authored: Tue Jan 23 15:12:38 2018 -0500
Committer: Marc Parisi <ph...@apache.org>
Committed: Tue Jan 23 16:47:08 2018 -0500

----------------------------------------------------------------------
 extensions/expression-language/Expression.cpp               | 8 ++++++++
 .../expression-language-tests/ExpressionLanguageTests.cpp   | 9 +++++++++
 2 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/19881b63/extensions/expression-language/Expression.cpp
----------------------------------------------------------------------
diff --git a/extensions/expression-language/Expression.cpp b/extensions/expression-language/Expression.cpp
index 2fdc541..de737ed 100644
--- a/extensions/expression-language/Expression.cpp
+++ b/extensions/expression-language/Expression.cpp
@@ -67,6 +67,12 @@ std::string expr_toUpper(const std::vector<std::string> &args) {
   return result;
 }
 
+std::string expr_toLower(const std::vector<std::string> &args) {
+  std::string result = args[0];
+  std::transform(result.begin(), result.end(), result.begin(), ::tolower);
+  return result;
+}
+
 std::string expr_substring(const std::vector<std::string> &args) {
   if (args.size() < 3) {
     return args[0].substr(std::stoul(args[1]));
@@ -306,6 +312,8 @@ Expression make_dynamic_function(const std::string &function_name,
     return make_dynamic_function_incomplete<expr_hostname>(function_name, args, 0);
   } else if (function_name == "toUpper") {
     return make_dynamic_function_incomplete<expr_toUpper>(function_name, args, 1);
+  } else if (function_name == "toLower") {
+    return make_dynamic_function_incomplete<expr_toLower>(function_name, args, 1);
   } else if (function_name == "substring") {
     return make_dynamic_function_incomplete<expr_substring>(function_name, args, 2);
   } else if (function_name == "substringBefore") {

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/19881b63/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp
----------------------------------------------------------------------
diff --git a/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp b/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp
index 27d3304..d6ab607 100644
--- a/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp
+++ b/libminifi/test/expression-language-tests/ExpressionLanguageTests.cpp
@@ -150,6 +150,15 @@ TEST_CASE("ToUpper function w/o whitespace", "[expressionLanguageTestToUpperFunc
   REQUIRE("text_before__FLOW_A_ATTR_VALUE_A__text_after" == expr({flow_file_a}));
 }
 
+TEST_CASE("ToLower function", "[expressionLanguageTestToLowerFunction]") {  // NOLINT
+  auto expr = expression::compile(R"(text_before${
+                                       attr_a : toLower()
+                                     }text_after)");
+  auto flow_file_a = std::make_shared<MockFlowFile>();
+  flow_file_a->addAttribute("attr_a", "__FLOW_A_ATTR_VALUE_A__");
+  REQUIRE("text_before__flow_a_attr_value_a__text_after" == expr({flow_file_a}));
+}
+
 TEST_CASE("GetFile PutFile dynamic attribute", "[expressionLanguageTestGetFilePutFileDynamicAttribute]") {  // NOLINT
   TestController testController;