
com.bpodgursky.jbool_expressions.rules.CombineOr Maven / Gradle / Ivy
package com.bpodgursky.jbool_expressions.rules;
import com.google.common.collect.Lists;
import com.bpodgursky.jbool_expressions.ExprUtil;
import com.bpodgursky.jbool_expressions.Expression;
import com.bpodgursky.jbool_expressions.Or;
import java.util.List;
public class CombineOr extends Rule, K> {
@Override
public Expression applyInternal(Or or) {
for (Expression expr : or.expressions) {
if (expr instanceof Or) {
Or childAnd = (Or) expr;
List> newChildren = Lists.newArrayList();
ExprUtil.addAll(newChildren, ExprUtil.allExceptMatch(or.expressions, childAnd));
ExprUtil.addAll(newChildren, childAnd.expressions);
return Or.of(newChildren);
}
}
return or;
}
@Override
protected boolean isApply(Expression input) {
return input instanceof Or;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy