weight 0.0.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f1b7de322bec0968f875b996916a86835aa776d7
4
+ data.tar.gz: 6556f54901f914c40561ef6dd608d52dca2be463
5
+ SHA512:
6
+ metadata.gz: eba77a4c2438374d5de29150cfb2592e56718a0ff54c385d99546c7d63592197a596bb681002980836b55c0a52757e8050f4d9cd504c390e345ccd152b90b2d1
7
+ data.tar.gz: 4563f7e5b8caec2d3f8a912df6842f2729ae70408f5b209dc8849a3e1592668d00fa57d10ca21e5780e87eb30da8e9a2b0c87ed94bd57273d2aef5b983655c43
@@ -3,7 +3,6 @@ rvm:
3
3
  - "1.9.3"
4
4
  - "1.9.2"
5
5
  - jruby-19mode
6
- - rbx-19mode
7
6
  - jruby-18mode
8
7
  - "1.8.7"
9
8
  - ree
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
- # Weight (0.0.2 alpha version)
1
+ # Weight (1.0.0 version)
2
2
 
3
3
  * [![Code Climate](https://codeclimate.com/github/shemerey/weight.png)](https://codeclimate.com/github/shemerey/weight)
4
4
  * [![Build Status](https://api.travis-ci.org/shemerey/weight.png)](https://travis-ci.org/shemerey/weight)
5
+ * [![Gem Version](https://badge.fury.io/rb/weight.png)](http://badge.fury.io/rb/weight)
5
6
 
6
7
  It's dead simple Value object, which provides convenient way to work with
7
8
  weight in a different unit systems. It could be useful if you have to work with
@@ -61,6 +62,13 @@ just put this in your initializer: config/initializers/weight.rb
61
62
  Weight.new(2, :kg) / 2 == Weight.new(1, :kg)
62
63
  ```
63
64
 
65
+ #### Convert result to the first object unit system
66
+
67
+ ```ruby
68
+ Weight.new(1, :kg) + Weight.new(1, :lb) # => #<Weight: @input_value=1.4536, @input_unit=:kg>
69
+ Weight.new(1, :lb) + Weight.new(1, :kg) # => #<Weight: @input_value=3.2046, @input_unit=:lb>
70
+ ```
71
+
64
72
  ### Basic comparison with Weight objects
65
73
 
66
74
  ```ruby
@@ -76,3 +84,7 @@ just put this in your initializer: config/initializers/weight.rb
76
84
  3. Commit your changes (`git commit -am 'Add some feature'`)
77
85
  4. Push to the branch (`git push origin my-new-feature`)
78
86
  5. Create new Pull Request
87
+
88
+
89
+ [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/shemerey/weight/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
90
+
@@ -51,7 +51,7 @@ class Weight
51
51
  # @raise [TypeError] When the argument passed is not a Weight
52
52
  def +(other)
53
53
  raise TypeError, 'You can only add weights' unless other.is_a?(Weight)
54
- self.class.new(raw_data_in_kg + other.to_kgs, :kg)
54
+ self.class.new(value + other_value(other), unit)
55
55
  end
56
56
 
57
57
  # Comparison operator
@@ -79,7 +79,7 @@ class Weight
79
79
  # @raise [TypeError] When the argument passed is not a Weight
80
80
  def -(other)
81
81
  raise TypeError, 'You can only substract weights' unless other.is_a?(Weight)
82
- self.class.new(raw_data_in_kg - other.to_kgs, :kg)
82
+ self.class.new(value - other_value(other), unit)
83
83
  end
84
84
 
85
85
  # Multiplication operation
@@ -102,6 +102,16 @@ class Weight
102
102
 
103
103
  private
104
104
 
105
+ # Helper method return value for other object in current object unit system
106
+ def other_value(other)
107
+ case unit
108
+ when :kg
109
+ other.to_kgs
110
+ when :lb
111
+ other.to_lbs
112
+ end
113
+ end
114
+
105
115
  def round(value)
106
116
  sprintf("%0.0#{round_level}f", value.to_f).to_f
107
117
  end
@@ -1,3 +1,3 @@
1
1
  class Weight
2
- VERSION = "0.0.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -8,6 +8,7 @@ describe Weight do
8
8
 
9
9
  let(:one_lb) { described_class.new(1, 'lb') }
10
10
  let(:two_lb) { described_class.new(2, 'lb') }
11
+ let(:three_lb) { described_class.new(3, 'lb') }
11
12
 
12
13
  let(:another_lb) { described_class.new(1, 'lb') }
13
14
 
@@ -15,6 +16,86 @@ describe Weight do
15
16
  described_class.new(1, 'lb').should be_instance_of(described_class)
16
17
  end
17
18
 
19
+ describe 'basic mas calculation' do
20
+ it 'for - operator result unit should be first == to first object unit' do
21
+ (one_kg - one_lb).unit.should == :kg
22
+ end
23
+
24
+ it 'for - operator result unit should be first == to first object unit' do
25
+ (three_lb - one_kg).unit.should == :lb
26
+ end
27
+
28
+ it 'for + operator result unit should be first == to first object unit' do
29
+ (one_kg + one_lb).unit.should == :kg
30
+ end
31
+
32
+ it 'for + operator result unit should be first == to first object unit' do
33
+ (one_lb + one_kg).unit.should == :lb
34
+ end
35
+
36
+ it '[-] should compute weight objects with different units properly' do
37
+ (one_kg - one_lb).should > one_lb
38
+ (one_kg + one_lb).should < two_kg
39
+ end
40
+
41
+ it '[+] should compute weight objects with different units properly' do
42
+ (one_kg + one_lb).should < two_kg
43
+ (one_kg + one_lb).should > two_lb
44
+ end
45
+
46
+ it '1 lb + 1 lb should be 2 lbs' do
47
+ (one_lb + one_lb).should == two_lb
48
+ end
49
+
50
+ it 'two objects with the same weight and type should be equal' do
51
+ one_lb.should == another_lb
52
+ end
53
+
54
+ it '2 lbs - 1 lb should be 1 lb' do
55
+ (two_lb - one_lb).should == one_lb
56
+ end
57
+
58
+ it '2 times 1 lb should be 2 lbs' do
59
+ (one_lb * 2).should == two_lb
60
+ end
61
+
62
+ it 'attempting to add a weight to something that is not a weight should raise an error' do
63
+ expect do
64
+ (one_lb + 1)
65
+ end.to raise_error(TypeError)
66
+ end
67
+
68
+ it 'attempting to substract from a weight something that is not a weight should raise an error' do
69
+ expect do
70
+ (one_lb - 1)
71
+ end.to raise_error(TypeError)
72
+ end
73
+
74
+ it 'attempting to multiply a weight by another weight should raise an error' do
75
+ expect do
76
+ (one_lb * one_lb)
77
+ end.to raise_error(TypeError)
78
+ end
79
+
80
+ it '1 kg multipied by two should be 2 kg' do
81
+ (one_kg * 2).should == two_kg
82
+ end
83
+
84
+ it '2 kgs divided by two should be 1 kg' do
85
+ (two_kg / 2).should == one_kg
86
+ end
87
+
88
+ it '2 lbs divided by two should be 1 lbs' do
89
+ (two_lb / 2).should == one_lb
90
+ end
91
+
92
+ it 'attempting to divide a weight by another weight should raise an error' do
93
+ expect do
94
+ (two_lb / two_lb)
95
+ end.to raise_error(TypeError)
96
+ end
97
+ end
98
+
18
99
  describe 'calculation between different units' do
19
100
  it 'should convert 1 kg to 2.2046 lbs' do
20
101
  described_class.new(1, 'kg').to_lbs.should == 2.2046
@@ -74,62 +155,10 @@ describe Weight do
74
155
  one_lb.should be < two_lb
75
156
  end
76
157
 
77
- it '1 lb + 1 lb should be 2 lbs' do
78
- (one_lb + one_lb).should == two_lb
79
- end
80
-
81
- it 'two objects with the same weight and type should be equal' do
82
- one_lb.should == another_lb
83
- end
84
-
85
- it '2 lbs - 1 lb should be 1 lb' do
86
- (two_lb - one_lb).should == one_lb
87
- end
88
-
89
- it '2 times 1 lb should be 2 lbs' do
90
- (one_lb * 2).should == two_lb
91
- end
92
-
93
158
  it 'attempting to compare a weight to something that is not a weight should raise an error' do
94
159
  expect do
95
160
  (one_lb == 1)
96
161
  end.to raise_error(TypeError)
97
162
  end
98
-
99
- it 'attempting to add a weight to something that is not a weight should raise an error' do
100
- expect do
101
- (one_lb + 1)
102
- end.to raise_error(TypeError)
103
- end
104
-
105
- it 'attempting to substract from a weight something that is not a weight should raise an error' do
106
- expect do
107
- (one_lb - 1)
108
- end.to raise_error(TypeError)
109
- end
110
-
111
- it 'attempting to multiply a weight by another weight should raise an error' do
112
- expect do
113
- (one_lb * one_lb)
114
- end.to raise_error(TypeError)
115
- end
116
-
117
- it '1 kg multipied by two should be 2 kg' do
118
- (one_kg * 2).should == two_kg
119
- end
120
-
121
- it '2 kgs divided by two should be 1 kg' do
122
- (two_kg / 2).should == one_kg
123
- end
124
-
125
- it '2 lbs divided by two should be 1 lbs' do
126
- (two_lb / 2).should == one_lb
127
- end
128
-
129
- it 'attempting to divide a weight by another weight should raise an error' do
130
- expect do
131
- (two_lb / two_lb)
132
- end.to raise_error(TypeError)
133
- end
134
163
  end
135
164
  end
metadata CHANGED
@@ -1,89 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: weight
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Anton Shemerey
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2013-11-19 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2013-11-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: bundler
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
25
17
  - - ~>
26
- - !ruby/object:Gem::Version
27
- hash: 9
28
- segments:
29
- - 1
30
- - 3
31
- version: "1.3"
32
- prerelease: false
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
33
20
  type: :development
34
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: rake
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
46
21
  prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
47
34
  type: :development
48
- requirement: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: rspec
51
- version_requirements: &id003 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
60
35
  prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
61
48
  type: :development
62
- requirement: *id003
63
- - !ruby/object:Gem::Dependency
64
- name: pry
65
- version_requirements: &id004 !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
74
49
  prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
75
62
  type: :development
76
- requirement: *id004
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
77
69
  description: Dead simple value object, with one purpose work with weight
78
- email:
70
+ email:
79
71
  - shemerey@gmail.com
80
72
  executables: []
81
-
82
73
  extensions: []
83
-
84
74
  extra_rdoc_files: []
85
-
86
- files:
75
+ files:
87
76
  - .gitignore
88
77
  - .travis.yml
89
78
  - Gemfile
@@ -99,39 +88,33 @@ files:
99
88
  - spec/weight_spec.rb
100
89
  - weight.gemspec
101
90
  homepage: https://github.com/shemerey/weight
102
- licenses:
91
+ licenses:
103
92
  - MIT
93
+ metadata: {}
104
94
  post_install_message:
105
95
  rdoc_options: []
106
-
107
- require_paths:
96
+ require_paths:
108
97
  - lib
109
- required_ruby_version: !ruby/object:Gem::Requirement
110
- none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
118
- required_rubygems_version: !ruby/object:Gem::Requirement
119
- none: false
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- hash: 3
124
- segments:
125
- - 0
126
- version: "0"
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
127
108
  requirements: []
128
-
129
109
  rubyforge_project:
130
- rubygems_version: 1.8.25
110
+ rubygems_version: 2.1.10
131
111
  signing_key:
132
- specification_version: 3
133
- summary: 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
134
- test_files:
112
+ specification_version: 4
113
+ summary: It's dead simple Value object, which provides convenient way to work with
114
+ weight in a different unit systems. It could be useful if you have to work with
115
+ different unit system, for example you have to work with :kg as well as :lb for
116
+ USA
117
+ test_files:
135
118
  - spec/spec_helper.rb
136
119
  - spec/weight/configuration_spec.rb
137
120
  - spec/weight_spec.rb