1 package net.sourceforge.pmd.jaxen;
2
3 import org.jaxen.Context;
4 import org.jaxen.Function;
5 import org.jaxen.FunctionCallException;
6 import org.jaxen.SimpleFunctionContext;
7 import org.jaxen.XPathFunctionContext;
8
9 import java.util.List;
10 import java.util.regex.Pattern;
11 import java.util.regex.Matcher;
12
13 public class MatchesFunction implements Function {
14
15 public static void registerSelfInSimpleContext() {
16
17 ((SimpleFunctionContext) XPathFunctionContext.getInstance()).registerFunction(null, "matches", new MatchesFunction());
18 }
19
20 public Object call(Context context, List args) throws FunctionCallException {
21 if (args.isEmpty()) {
22 return Boolean.FALSE;
23 }
24 List attributes = (List) args.get(0);
25 Attribute attr = (Attribute) attributes.get(0);
26
27 Pattern check = Pattern.compile((String) args.get(1));
28 Matcher matcher = check.matcher(attr.getValue());
29 if (matcher.find()) {
30 return context.getNodeSet();
31 }
32 return Boolean.FALSE;
33 }
34 }