shemerey/weight

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Weight (1.0.0 version)

* [![Code Climate](https://codeclimate.com/github/shemerey/weight.png)](https://codeclimate.com/github/shemerey/weight)
* [![Build Status](https://api.travis-ci.org/shemerey/weight.png)](https://travis-ci.org/shemerey/weight)
* [![Gem Version](https://badge.fury.io/rb/weight.png)](http://badge.fury.io/rb/weight)

It's dead simple Value object, which provides convenient way to work with
weight in a different unit systems. It could be useful if you have to work with
different unit system, for example you have to work with :kg as well as :lb for USA

## Compatible with:

 * mri 2.0.0
 * mri 1.9.3
 * mri 1.9.2
 * jruby-19mode
 * rbx-19mode
 * jruby-18mode
 * mri 1.8.7
 * ree

## Installation

Add this line to your application's Gemfile:

    gem 'weight'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install weight

## Configuration
You could configure default unit system (:kg or :lb)

just put this in your initializer: config/initializers/weight.rb

```ruby
  # new object in kg by default
  Weight.new # => <Weight: @input_value=0, @input_unit=:kg>

  Weight::Configuration.configure do |config|
    config.default_unit = :lb  # by default it uses :kg
  end

  # Now default object looks like
  Weight.new # => <Weight: @input_value=0, @input_unit=:lb>
```

## Usage

### Basic Math with Weight objects

```ruby
 Weight.new(1, :kg) + Weight.new(1, :kg) == Weight.new(2, :kg)
 Weight.new(1, :kg) - Weight.new(1, :kg) == Weight.new(0, :kg)

 Weight.new(1, :kg) * 2 == Weight.new(2, :kg)
 Weight.new(2, :kg) / 2 == Weight.new(1, :kg)
```

#### Convert result to the first object unit system

```ruby
 Weight.new(1, :kg) + Weight.new(1, :lb) # =>   #<Weight: @input_value=1.4536, @input_unit=:kg>
 Weight.new(1, :lb) + Weight.new(1, :kg) # =>   #<Weight: @input_value=3.2046, @input_unit=:lb>
```

### Basic comparison with Weight objects

```ruby
 Weight.new(3, :lb).between?(Weight.new(1, :kg), Weight.new(2, :kg))
 Weight.new(1, :kg) > Weight.new(2, :lb)
 Weight.new(1, :lb) <= Weight.new(0.5, :kg)
```

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request


[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/shemerey/weight/trend.png)](https://bitdeli.com/free "Bitdeli Badge")