[
https://issues.apache.org/jira/browse/METRON-830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15964698#comment-15964698
]
ASF GitHub Bot commented on METRON-830:
---------------------------------------
Github user mattf-horton commented on a diff in the pull request:
https://github.com/apache/incubator-metron/pull/516#discussion_r110965812
--- Diff:
metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/functions/StringFunctions.java
---
@@ -343,4 +343,120 @@ public Object apply(List<Object> args) {
return String.format(format, formatArgs);
}
}
+
+ @Stellar( name="CHOMP"
+ , description = "Removes one newline from end of a String if
it's there, otherwise leave it alone. A newline is \"\\n\", \"\\r\", or
\"\\r\\n\""
+ , params = { "the String to chomp a newline from, may be null"}
+ , returns = "String without newline, null if null String input"
+ )
+ public static class Chomp extends BaseStellarFunction {
+
+ @Override
+ public Object apply(List<Object> strings) {
+
+ if(strings.size() == 0) {
+ throw new IllegalArgumentException("[CHOMP] missing argument:
string to chomp a newline from");
+ }
+
+ String chomp = StringUtils.chomp((String) strings.get(0));
+ return chomp;
+ }
+ }
+ @Stellar( name="CHOP"
+ , description = "Remove the last character from a String"
+ , params = { "the String to chop last character from, may be
null"}
+ , returns = "String without last character, null if null String
input"
+ )
+ public static class Chop extends BaseStellarFunction {
+
+ @Override
+ public Object apply(List<Object> strings) {
+
+ if(strings.size() == 0) {
+ throw new IllegalArgumentException("[CHOP] missing argument:
string to be chopped");
+ }
+
+ String chop = StringUtils.chop((String) strings.get(0));
+ return chop;
+ }
+ }
+
+ @Stellar( name = "PREPEND_IF_MISSING"
+ , description = "Prepends the prefix to the start of the string
if the string does not already start with any of the prefixes"
+ , params = {
+ "str - The string."
+ , "prefix - The string prefix to prepend to the start of the
string"
+ , "prefixes - Optional - Additional string prefixes that are
valid"
+ }
+ , returns = "A new String if prefix was prepended, the same
string otherwise."
+ )
+ public static class PrependIfMissing extends BaseStellarFunction {
+
+ @Override
+ public Object apply(List<Object> strings) {
+
+ String prefixed;
+ switch (strings.size()) {
+ case 2: prefixed = StringUtils.prependIfMissing((String)
strings.get(0), (String) strings.get(1));
+ break;
+ case 3: prefixed = StringUtils.prependIfMissing((String)
strings.get(0), (String) strings.get(1), (String) strings.get(2));
+ break;
+ default: throw new IllegalArgumentException("[PREPEND_IF_MISSING]
incorrect arguments: " + strings.toString() + "\nUsage: PREPEND_IF_MISSING
<String> <prefix> [<prefix>...]");
+ }
+ return prefixed;
+ }
+ }
+
+ @Stellar( name = "APPEND_IF_MISSING"
+ , description = "Appends the suffix to the end of the string if
the string does not already end with any of the suffixes"
+ , params = {
+ "str - The string."
+ , "suffix - The string suffix to append to the end of the string"
+ , "suffixes - Optional - Additional string suffixes that are
valid terminators"
--- End diff --
Same doc concern as in the .md file: Is "suffixes" a string, a regex, an
array of strings, or what? If it is a single string, how does it represent
plural suffixes?
> Adding StringFunctions to Stellar - chop, prependifmissing, appendifmissing
> and countmatches
> --------------------------------------------------------------------------------------------
>
> Key: METRON-830
> URL: https://issues.apache.org/jira/browse/METRON-830
> Project: Metron
> Issue Type: Bug
> Affects Versions: 0.3.1
> Reporter: Anand Subramanian
> Assignee: Anand Subramanian
> Fix For: Next + 1
>
>
> Enhance Stellar by adding the following apache common string functions.
> - chop -> Remove the last character from a String.
> - prependifmissing -> Prepends the prefix to the start of the string if the
> string does not already start with any of the prefixes.
> - appendifmissing -> Appends the suffix to the end of the string if the
> string does not already end with any of the suffixes.
> - countmatches -> Counts how many times the substring appears in the larger
> string.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)