class JsFunctionParser {
/**
* Constructor
*
* @param functions Functions to parse.
* @param errorManager Handles parse errors.
*/
public JsFunctionParser(Collection<String> functions, ErrorManager errorManager) {
super(errorManager);
functionsToParse = functions;
pattern = getPattern(functions);
matcher = pattern.matcher("");
}
}
class JsFunctionParser {
/**
* Constructs a pattern to extract the arguments of the given functions.
*
* @param functions Functions to parse.
* @return A pattern to extract {@code functions}' arguments.
*/
private Pattern getPattern(Collection<String> functions) {
StringBuilder sb = new StringBuilder("(?:^|;)\\s*(");
for (String function : functions) {
sb.append(Pattern.quote(function) + "|");
}
// remove last '|'
sb.deleteCharAt(sb.length() - 1);
sb.append(")\\s*\\((.*?)\\)");
return Pattern.compile(sb.toString());
}
}
|