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:
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.
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.
class Greeter # ... def hello(name) verify(:name, :long_enough) { count > 1 } "Hello, #{ name }!" end end
Then define i18n translations for error messages:
# 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}).
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.