Verifier

Gem Version Build Status Dependency Status Code Climate Coverage License

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.