use of com.virjar.vscrawler.core.selector.string.StingEvaluator in project vscrawler by virjar.
the class ChainRuleParser method create.
public static ModelSelector create(String ruleName, final String ruleValue) {
if (StringUtils.equalsIgnoreCase(ruleName, "css")) {
return new ModelSelector() {
@Override
public AbstractSelectable select(AbstractSelectable abstractSelectable) {
return abstractSelectable.css(ruleValue);
}
};
}
if (StringUtils.equalsIgnoreCase(ruleName, "xpath")) {
return new ModelSelector() {
@Override
public AbstractSelectable select(AbstractSelectable abstractSelectable) {
return abstractSelectable.xpath(ruleValue);
}
};
}
if (StringUtils.equalsIgnoreCase(ruleName, "jsonpath")) {
return new ModelSelector() {
@Override
public AbstractSelectable select(AbstractSelectable abstractSelectable) {
return abstractSelectable.jsonPath(ruleValue);
}
};
}
if (StringUtils.equalsIgnoreCase(ruleName, "stringrule")) {
final StingEvaluator stingEvaluator = new StingEvaluator(new FunctionParser(ruleValue).parse());
return new ModelSelector() {
@Override
public AbstractSelectable select(AbstractSelectable abstractSelectable) {
return abstractSelectable.stringRule(stingEvaluator);
}
};
}
if (StringUtils.equalsIgnoreCase(ruleName, "regex")) {
String regex = ruleValue;
int group = 0;
Matcher matcher = Pattern.compile("(.+)\\s*,\\s*(\\d+)").matcher(ruleValue);
if (matcher.matches()) {
regex = matcher.group(1);
group = NumberUtils.toInt(matcher.group(2));
}
final String finalRegex = regex;
final int finalGroup = group;
return new ModelSelector() {
@Override
public AbstractSelectable select(AbstractSelectable abstractSelectable) {
return abstractSelectable.regex(finalRegex, finalGroup);
}
};
}
return null;
}
Aggregations