Github user phrocker commented on a diff in the pull request:

    https://github.com/apache/nifi-minifi-cpp/pull/219#discussion_r156815480
  
    --- Diff: extensions/expression-language/Expression.cpp ---
    @@ -64,12 +64,44 @@ std::string expr_toUpper(const std::vector<std::string> 
&args) {
       return result;
     }
     
    +std::string expr_substring(const std::vector<std::string> &args) {
    +  if (args.size() < 3) {
    +    return args[0].substr(std::stoul(args[1]));
    +  } else {
    +    return args[0].substr(std::stoul(args[1]), std::stoul(args[2]));
    +  }
    +}
    +
    +std::string expr_substringBefore(const std::vector<std::string> &args) {
    +  return args[0].substr(0, args[0].find(args[1]));
    +}
    +
    +std::string expr_substringBeforeLast(const std::vector<std::string> &args) 
{
    +  size_t last_pos = 0;
    +  while (args[0].find(args[1], last_pos + 1) != std::string::npos) {
    +    last_pos = args[0].find(args[1], last_pos + 1);
    +  }
    +  return args[0].substr(0, last_pos);
    +}
    +
    +std::string expr_substringAfter(const std::vector<std::string> &args) {
    +  return args[0].substr(args[0].find(args[1]) + args[1].length());
    +}
    +
    +std::string expr_substringAfterLast(const std::vector<std::string> &args) {
    +  size_t last_pos = 0;
    +  while (args[0].find(args[1], last_pos + 1) != std::string::npos) {
    +    last_pos = args[0].find(args[1], last_pos + 1);
    +  }
    +  return args[0].substr(last_pos + args[1].length());
    +}
    +
     template<std::string T(const std::vector<std::string> &)>
     Expression make_dynamic_function_incomplete(const std::string 
&function_name,
                                                 const std::vector<Expression> 
&args,
                                                 std::size_t num_args) {
    -  if (args.size() == num_args) {
    --- End diff --
    
    Based on my comment below, it seems like we'll simply throw "Attempted to 
call incomplete function" Is this a correct interpretation? 


---

Reply via email to