Values icon indicating copy to clipboard operation
Values copied to clipboard

Values::ArgumentError - exception class containing missing/unexpected constructor arguments

Open tomeon opened this issue 9 years ago • 4 comments

I hesitate to make this PR given that part of Values' appeal is its exceptionally small size; so, apologies in advance if the changeset it unwanted, and thanks for taking the time to review it.

I use Values for input validation and would find it helpful if the exceptions raised by the .new and .with methods upon receipt of bad arguments contained lists of missing and unrecognized keys, along the same lines as how virtus's CoercionError exception class has the .attribute_name method for helping to determine which failed attribute prevented an object's instantiation.

Since Values already validates constructor arguments, this PR mostly amounts to percolating existing data up to the caller -- the exception being the second argument to the Values::ArgumentError created in .new.

The convention I've followed is that the @missing_keys and @unexpected_keys attributes will contain empty arrays if there were, respectively, no missing arguments or no extra arguments to .with. By contrast, @unexpected_keys will be nil if there were extra arguments provided to .new, since there is no way to determine the 'meaning' of additional positional parameters in the absence of handy hash keys acting a labels.

tomeon avatar Dec 08 '15 20:12 tomeon

@BaxterStockman whilst I agree on Values' small size, I like this PR and would like to merge it. I have some nitpicks that I'd like addressed first.

tom-pang avatar Dec 08 '15 21:12 tom-pang

@tcrayford -- many thanks for your feedback! I've updated the PR in response to your comments.

tomeon avatar Dec 09 '15 16:12 tomeon

@tcrayford -- are you planning to merge this and release a 1.10.0?

ms-ati avatar Dec 28 '15 16:12 ms-ati

ping

ms-ati avatar Apr 05 '16 17:04 ms-ati