Verifier
The library to verify variables are satisfy given condititions and raise ArgumentError otherwise.
Defines a #verify instance method with a block to be yielded in a variable’s scope and raised an error if the block returns false or fails.
Installation
Add this line to your application’s Gemfile:
ruby
gem "verifier"
And then execute:
$ bundle
Or install it yourself as:
$ gem install verifier
Usage
Include the module into class or Method to use it in the instance methods, or extend the class to check verifier of the class methods.
```ruby require “verifier”
class Greeter include Verifier end ```
This will define the #verify instance method.
Call it from your method with the names of the verified variable and the condition, and the block to be called in the scope of a value, returned by the method.
ruby
class Greeter
# ...
def hello(name)
verify(:name, :long_enough) { count > 1 }
"Hello, #{ name }!"
end
end
Then define i18n translations for error messages:
yaml
# config/locales/en.yml
---
en:
verifier: # the module's scope
greeter: # the class name
instance: # the scope for the method
# the message to be raised when the method raises an exception
fails: "The method fails: %{value}"
# the message to be raised when the method isn't defined
undefined: "The method undefined: %{value}"
name: # the name of the method to be verified
# the message to be raised when the block fails or returns false
long_enough: "The name to greet seems damn short: %{value}"
The block is yielded in the scope of a corresponding variable.
An ArgumentError will be raised in any case when:
* the verified method is undefined;
* the method raises an exception;
* the block raises an exception;
* the block returns a value, whose negation is true
(see the motivation [below]#negation).
```ruby greeter = Greeter.new
greeter.hello “Al” # => “Hello, Al!”
greeter.hello “A” # => <ArgumentError @message=”The name to greet seems damn short: A” …> ```
Compatibility
Tested under MRI rubies >= 2.1
RSpec 3.0+ used for testing
Collection of used testing, debugging and code metric tools is defined in the hexx-suit gem.
Contributing
- Fork the project.
- Read the styleguide.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don’t break it in a future version unintentionally.
- Commit, do not mess with Rakefile or version (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.
License
See MIT LICENSE.