[ https://issues.apache.org/jira/browse/TINKERPOP-1632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16191816#comment-16191816 ]
ASF GitHub Bot commented on TINKERPOP-1632: ------------------------------------------- Github user dkuppitz commented on the issue: https://github.com/apache/tinkerpop/pull/729 You can add a static compiled regex pattern: ``` private static final Pattern EQUATION_PATTERN = Pattern.compile("\\b(?!abs|acos|asin|atan|cbrt|ceil|cos|cosh|exp|floor|log|log10|log2|sin|sinh|sqrt|tan|tanh|signum)(_|([A-Za-z][A-Za-z0-9]*))\\b"); ``` ...then `getVariables()` can be as simple as: ``` protected static final Set<String> getVariables(final String equation) { final Matcher matcher = EQUATION_PATTERN.matcher(equation); final Set<String> variables = new LinkedHashSet<>(); while (matcher.find()) { variables.add(matcher.group()); } return variables; } ``` And perhaps to increase the readability and maintainability, we should do something like this: ``` private static final String[] FUNCTIONS = new String[] { "abs", "acos", "asin", "atan", "cbrt", "ceil", "cos", "cosh", "exp", "floor", "log", "log10", "log2", "signum", "sin", "sinh", "sqrt", "tan", "tanh" }; private static final Pattern EQUATION_PATTERN = Pattern.compile("\\b(?!" + String.join("|", FUNCTIONS) + ")(_|([A-Za-z][A-Za-z0-9]*))\\b"); ``` > Create a set of default functions > --------------------------------- > > Key: TINKERPOP-1632 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1632 > Project: TinkerPop > Issue Type: Improvement > Components: process > Affects Versions: 3.3.0 > Reporter: Daniel Kuppitz > > We already have a a set of default BiFunctions / operators, that are not > treated as lambdas. We should also have a bunch of simple functions, that can > then be used in {{map()}} or {{sack()}} and that can be serialized as > bytecode. For example: > {noformat} > ...map(sqrt) > ...map(log) > ...sack(sigmoid) // compute sigmoid of the current sack and update the > sack > ...sack(cos).by("x") // compute the cosine of the current element's "x" and > assign / overwrite the current sack value > {noformat} -- This message was sent by Atlassian JIRA (v6.4.14#64029)