I’m writing a validation that tests the presence of two optional keys
rule :foo, :bar do unless values.key?(:foo) ^ values.key?(:bar) key.failure("must have one of: foo, bar") end end
(Seldom do I get to write an XOR!)
It was surprising to me that I couldn’t write
key?(:bar) instead, since
Evaluator#key? merely forwards to
Values#key?. Doesn’t seem like this omission was intentional.
I have a working patch that implements this. Are you interested in a PR?