@Override public final NodeValue exec(NodeValue v1, NodeValue v2) { DateTime d1 = toDateTime(v1); if(d1==null) { return NodeValue.makeBoolean(this.firstNonDatetime); } DateTime d2 = toDateTime(v2); if(d2==null) { return NodeValue.makeBoolean(this.secondNonDatetime); } return NodeValue.makeBoolean(compare(d1, d2)); }
@Override public NodeValue eval(NodeValue x, NodeValue y) { // Evaluation only happens as part of copySubstitute. // Proper evaluation is a special form as above. if ( ! x.isBoolean() ) throw new ExprEvalException("Not a boolean: "+x) ; if ( ! y.isBoolean() ) throw new ExprEvalException("Not a boolean: "+y) ; boolean boolX = x.getBoolean() ; boolean boolY = y.getBoolean() ; return NodeValue.makeBoolean( boolX || boolY ) ; }
@Override public NodeValue eval(NodeValue x, NodeValue y) { // Evaluation only happens as part of copySubstitute. // Proper evaluation is a special form as above. if ( ! x.isBoolean() ) throw new ExprEvalException("Not a boolean: "+x) ; if ( ! y.isBoolean() ) throw new ExprEvalException("Not a boolean: "+y) ; boolean boolX = x.getBoolean() ; boolean boolY = y.getBoolean() ; return NodeValue.makeBoolean( boolX && boolY ) ; }
@Override public NodeValue eval(NodeValue x, NodeValue y) { // Evaluation only happens as part of copySubstitute. // Proper evaluation is a special form as above. if ( ! x.isBoolean() ) throw new ExprEvalException("Not a boolean: "+x) ; if ( ! y.isBoolean() ) throw new ExprEvalException("Not a boolean: "+y) ; boolean boolX = x.getBoolean() ; boolean boolY = y.getBoolean() ; return NodeValue.makeBoolean( boolX && boolY ) ; }
@Override public NodeValue eval(NodeValue x, NodeValue y) { // Evaluation only happens as part of copySubstitute. // Proper evaluation is a special form as above. if ( ! x.isBoolean() ) throw new ExprEvalException("Not a boolean: "+x) ; if ( ! y.isBoolean() ) throw new ExprEvalException("Not a boolean: "+y) ; boolean boolX = x.getBoolean() ; boolean boolY = y.getBoolean() ; return NodeValue.makeBoolean( boolX || boolY ) ; }