tempura 0.0.1

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,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in tempura.gemspec
4
+ gemspec
5
+
6
+ gem 'rake', '~> 10.0'
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Ben Cullen-Kerney
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,146 @@
1
+ # Tempura
2
+
3
+ Tempura is a library for temperature math and conversion.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'tempura'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install tempura
18
+
19
+ ## Usage
20
+
21
+ ### Arithmetic
22
+
23
+ it 'subtracts another temperature' do
24
+ fahrenheit = Tempura::Fahrenheit.new(212)
25
+ celsius = Tempura::Celsius.new(0)
26
+ result = fahrenheit - celsius
27
+ expect(result).to eq(180)
28
+ expect(result).to be_a(Tempura::Fahrenheit)
29
+ end
30
+
31
+ it 'subtracts native degrees' do
32
+ fahrenheit = Tempura::Fahrenheit.new(212)
33
+ result = fahrenheit - 32
34
+ expect(result).to eq(180)
35
+ expect(result).to be_a(Tempura::Fahrenheit)
36
+ end
37
+
38
+ it 'adds another temperature' do
39
+ fahrenheit = Tempura::Fahrenheit.new(212)
40
+ celsius = Tempura::Celsius.new(0)
41
+ result = fahrenheit + celsius
42
+ expect(result).to eq(244)
43
+ expect(result).to be_a(Tempura::Fahrenheit)
44
+ end
45
+
46
+ it 'adds native degrees' do
47
+ fahrenheit = Tempura::Fahrenheit.new(212)
48
+ result = fahrenheit + 32
49
+ expect(result).to eq(244)
50
+ expect(result).to be_a(Tempura::Fahrenheit)
51
+ end
52
+
53
+ it 'divides by a Numeric' do
54
+ fahrenheit = Tempura::Fahrenheit.new(212)
55
+ result = fahrenheit / 2
56
+ expect(result).to eq(106)
57
+ expect(result).to be_a(Tempura::Fahrenheit)
58
+ end
59
+
60
+ it 'multiplies by a Numeric' do
61
+ fahrenheit = Tempura::Fahrenheit.new(212)
62
+ result = fahrenheit * 2
63
+ expect(result).to eq(424)
64
+ expect(result).to be_a(Tempura::Fahrenheit)
65
+ end
66
+
67
+ it 'can average an array of temperatures' do
68
+ f = Tempura::Fahrenheit.new(212)
69
+ c = Tempura::Celsius.new(100)
70
+ r = Tempura::Rømer.new(60)
71
+ k = Tempura::Kelvin.new(373.15)
72
+ result = ((f + c + r + k) / 4 ).to_delisle
73
+ expect(result).to eq(0)
74
+ expect(result).to be_a(Tempura::Delisle)
75
+ end
76
+
77
+ ### Comparison
78
+
79
+ it 'has >' do
80
+ fahrenheit = Tempura::Fahrenheit.new(212)
81
+ celsius = Tempura::Celsius.new(99)
82
+ expect(fahrenheit > celsius).to be_true
83
+ end
84
+
85
+ it 'has <' do
86
+ fahrenheit = Tempura::Fahrenheit.new(212)
87
+ celsius = Tempura::Celsius.new(101)
88
+ expect(fahrenheit < celsius).to be_true
89
+ end
90
+
91
+ it 'has <=' do
92
+ fahrenheit = Tempura::Fahrenheit.new(212)
93
+ celsius = Tempura::Celsius.new(101)
94
+ expect(fahrenheit <= celsius).to be_true
95
+ end
96
+
97
+ it 'has >=' do
98
+ fahrenheit = Tempura::Fahrenheit.new(212)
99
+ celsius = Tempura::Celsius.new(99)
100
+ expect(fahrenheit >= celsius).to be_true
101
+ end
102
+
103
+ it 'has ==' do
104
+ c = Tempura::Celsius.new(100)
105
+ d = Tempura::Delisle.new(0)
106
+ f = Tempura::Fahrenheit.new(212)
107
+ n = Tempura::Newton.new(33)
108
+ ra = Tempura::Rankine.new(671.67)
109
+ ré = Tempura::Réaumur.new(80)
110
+ rø = Tempura::Rømer.new(60)
111
+
112
+ scales = [c, d, f, n, ra, ré, rø]
113
+ scales.each { |s1|
114
+ scales.each { |s2|
115
+ expect(s1 == s2).to be_true
116
+ }
117
+ }
118
+ end
119
+
120
+ ### Casting
121
+
122
+ it 'casts to_f' do
123
+ temp = Tempura::Fahrenheit.new(212)
124
+ expect(temp.to_f).to eq(212.0)
125
+ expect(temp.to_f).to be_a(Float)
126
+ end
127
+
128
+ it 'casts to_i' do
129
+ temp = Tempura::Kelvin.new(373.15)
130
+ expect(temp.to_i).to eq(373)
131
+ expect(temp.to_i).to be_a(Integer)
132
+ end
133
+
134
+ it 'casts to_d' do
135
+ temp = Tempura::Celsius.new(100)
136
+ expect(temp.to_d).to eq(100.0)
137
+ expect(temp.to_d).to be_a(BigDecimal)
138
+ end
139
+
140
+ ## Contributing
141
+
142
+ 1. Fork it
143
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
144
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
145
+ 4. Push to the branch (`git push origin my-new-feature`)
146
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bigdecimal'
4
+ require 'tempura/version'
5
+ require 'tempura/temperature'
6
+ require 'tempura/celsius'
7
+ require 'tempura/delisle'
8
+ require 'tempura/fahrenheit'
9
+ require 'tempura/kelvin'
10
+ require 'tempura/newton'
11
+ require 'tempura/rankine'
12
+ require 'tempura/réaumur'
13
+ require 'tempura/rømer'
14
+
15
+ module Tempura
16
+ end
@@ -0,0 +1 @@
1
+ class Tempura::Celsius < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Delisle < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Fahrenheit < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Kelvin < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Newton < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Rankine < Tempura::Temperature; end
@@ -0,0 +1,2 @@
1
+ # encoding: utf-8
2
+ class Tempura::Réaumur < Tempura::Temperature; end
@@ -0,0 +1,2 @@
1
+ # encoding: utf-8
2
+ class Tempura::Rømer < Tempura::Temperature; end
@@ -0,0 +1,175 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bigdecimal'
4
+
5
+ class Tempura::Temperature
6
+ include Comparable
7
+
8
+ def initialize(value)
9
+ @common = to_common(value)
10
+ end
11
+
12
+ def <=>(temp)
13
+ if temp.is_a?(Tempura::Temperature)
14
+ @common <=> temp.send(:common)
15
+ else
16
+ @common <=> to_common(temp)
17
+ end
18
+ end
19
+
20
+ def -(temp)
21
+ if temp.is_a?(Tempura::Temperature)
22
+ temp = to_native(temp)
23
+ end
24
+ self.class.new(in_native - temp)
25
+ end
26
+
27
+ def +(temp)
28
+ if temp.is_a?(Tempura::Temperature)
29
+ temp = to_native(temp)
30
+ end
31
+ self.class.new(in_native + temp)
32
+ end
33
+
34
+ def /(temp)
35
+ if temp.is_a?(Tempura::Temperature)
36
+ raise ArgumentError, "cannot divide by a Tempura::Temperature, only a Numeric"
37
+ end
38
+ self.class.new(in_native.div(temp))
39
+ end
40
+
41
+ def *(temp)
42
+ if temp.is_a?(Tempura::Temperature)
43
+ raise ArgumentError, "cannot multiply by a Tempura::Temperature, only a Numeric"
44
+ end
45
+ self.class.new(in_native * temp)
46
+ end
47
+
48
+ def to_f
49
+ in_native.to_f
50
+ end
51
+
52
+ def to_i
53
+ in_native.to_i
54
+ end
55
+
56
+ def to_d
57
+ in_native
58
+ end
59
+
60
+ def to_native(temp)
61
+ temp.send("in_#{self.class.name.split('::').last.downcase}")
62
+ end
63
+
64
+ def from_celsius(given)
65
+ given + BigDecimal("273.15")
66
+ end
67
+
68
+ def in_celsius
69
+ common - BigDecimal("273.15")
70
+ end
71
+
72
+ def to_celsius
73
+ Tempura::Celsius.new(in_celsius)
74
+ end
75
+
76
+ def from_delisle(given)
77
+ BigDecimal("373.15") - ((given * 2) / 3)
78
+ end
79
+
80
+ def in_delisle
81
+ ((BigDecimal("373.15") - common) * 3) / 2
82
+ end
83
+
84
+ def to_delisle
85
+ Tempura::Delisle.new(in_delisle)
86
+ end
87
+
88
+ def from_fahrenheit(given)
89
+ ((given + BigDecimal("459.67")) * 5) / 9
90
+ end
91
+
92
+ def in_fahrenheit
93
+ ((common * 9)/5) - BigDecimal("459.67")
94
+ end
95
+
96
+ def to_fahrenheit
97
+ Tempura::Fahrenheit.new(in_fahrenheit)
98
+ end
99
+
100
+ def from_kelvin(given)
101
+ given
102
+ end
103
+
104
+ def in_kelvin
105
+ common
106
+ end
107
+
108
+ def to_kelvin
109
+ Tempura::Kelvin.new(in_kelvin)
110
+ end
111
+
112
+ def from_newton(given)
113
+ ((given * 100) / 33) + BigDecimal("273.15")
114
+ end
115
+
116
+ def in_newton
117
+ ((common - BigDecimal("273.15")) * 33) / 100
118
+ end
119
+
120
+ def to_newton
121
+ Tempura::Newton.new(in_newton)
122
+ end
123
+
124
+ def from_rankine(given)
125
+ (given * 5) / 9
126
+ end
127
+
128
+ def in_rankine
129
+ (common * 9) / 5
130
+ end
131
+
132
+ def to_rankine
133
+ Tempura::Rankine.new(in_rankine)
134
+ end
135
+
136
+ def from_réaumur(given)
137
+ ((given * 5) / 4) + BigDecimal("273.15")
138
+ end
139
+
140
+ def in_réaumur
141
+ ((common - BigDecimal("273.15")) * 4) / 5
142
+ end
143
+ alias :in_reaumur :in_réaumur
144
+
145
+ def to_réaumur
146
+ Tempura::Réaumur.new(in_réaumur)
147
+ end
148
+ alias :to_reaumur :to_réaumur
149
+
150
+ def from_rømer(given)
151
+ (((given - BigDecimal("7.5")) * 40) / 21) + BigDecimal("273.15")
152
+ end
153
+
154
+ def in_rømer
155
+ (((common - BigDecimal("273.15")) * 21) / 40) + BigDecimal("7.5")
156
+ end
157
+ alias :in_romer :in_rømer
158
+
159
+ def to_rømer
160
+ Tempura::Rømer.new(in_rømer)
161
+ end
162
+ alias :to_romer :to_rømer
163
+
164
+ private
165
+
166
+ attr_reader :common
167
+
168
+ def to_common(given)
169
+ self.send("from_#{self.class.name.split('::').last.downcase}", BigDecimal(given.to_s))
170
+ end
171
+
172
+ def in_native
173
+ to_native(self)
174
+ end
175
+ end
@@ -0,0 +1,3 @@
1
+ module Tempura
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+
3
+ require 'tempura'
4
+
5
+ shared_examples_for '373.15 K' do
6
+ it 'is expressable in Celsius (C)' do
7
+ expect(subject.to_celsius).to eq(100)
8
+ expect(subject.to_celsius).to be_a(Tempura::Celsius)
9
+ end
10
+
11
+ it 'is expressable in Delisle (De)' do
12
+ expect(subject.to_delisle).to eq(0)
13
+ expect(subject.to_delisle).to be_a(Tempura::Delisle)
14
+ end
15
+
16
+ it 'is expressable in Fahrenheit (F)' do
17
+ expect(subject.to_fahrenheit).to eq(212)
18
+ expect(subject.to_fahrenheit).to be_a(Tempura::Fahrenheit)
19
+ end
20
+
21
+ it 'is expressable in Kelvin (K)' do
22
+ expect(subject.to_kelvin).to eq(373.15)
23
+ expect(subject.to_kelvin).to be_a(Tempura::Kelvin)
24
+ end
25
+
26
+ it 'is expressable in Newton (N)' do
27
+ expect(subject.to_newton).to eq(33)
28
+ expect(subject.to_newton).to be_a(Tempura::Newton)
29
+ end
30
+
31
+ it 'is expressable in Rankine (R)' do
32
+ expect(subject.to_rankine).to eq(671.67)
33
+ expect(subject.to_rankine).to be_a(Tempura::Rankine)
34
+ end
35
+
36
+ it 'is expressable in Réaumur (Ré)' do
37
+ expect(subject.to_réaumur).to eq(80)
38
+ expect(subject.to_réaumur).to be_a(Tempura::Réaumur)
39
+ expect(subject.to_reaumur).to eq(80)
40
+ expect(subject.to_reaumur).to be_a(Tempura::Réaumur)
41
+ end
42
+
43
+ it 'is expressable in Rømer (Rø)' do
44
+ expect(subject.to_rømer).to eq(60)
45
+ expect(subject.to_rømer).to be_a(Tempura::Rømer)
46
+ expect(subject.to_romer).to eq(60)
47
+ expect(subject.to_rømer).to be_a(Tempura::Rømer)
48
+ end
49
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Celsius do
4
+ subject { Tempura::Celsius.new(100) }
5
+
6
+ it 'is natively in Celsius (C)' do
7
+ expect(subject).to eq(100)
8
+ expect(subject).to be_a(Tempura::Celsius)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Delisle do
4
+ subject { Tempura::Delisle.new(0) }
5
+
6
+ it 'is natively in Delisle (De)' do
7
+ expect(subject).to eq(0)
8
+ expect(subject).to be_a(Tempura::Delisle)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Fahrenheit do
4
+ subject { Tempura::Fahrenheit.new(212) }
5
+
6
+ it 'is natively in Fahrenheit (F)' do
7
+ expect(subject).to eq(212)
8
+ expect(subject).to be_a(Tempura::Fahrenheit)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Kelvin do
4
+ subject { Tempura::Kelvin.new(373.15) }
5
+
6
+ it 'is natively in Kelvin (K)' do
7
+ expect(subject).to eq(373.15)
8
+ expect(subject).to be_a(Tempura::Kelvin)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Newton do
4
+ subject { Tempura::Newton.new(33) }
5
+
6
+ it 'is natively in Newton (N)' do
7
+ expect(subject).to eq(33)
8
+ expect(subject).to be_a(Tempura::Newton)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Rankine do
4
+ subject { Tempura::Rankine.new(671.67) }
5
+
6
+ it 'is natively in Rankine (R)' do
7
+ expect(subject).to eq(671.67)
8
+ expect(subject).to be_a(Tempura::Rankine)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Tempura::Réaumur do
6
+ subject { Tempura::Réaumur.new(80) }
7
+
8
+ it 'is natively in Réaumur (Ré)' do
9
+ expect(subject).to eq(80)
10
+ expect(subject).to be_a(Tempura::Réaumur)
11
+ end
12
+
13
+ it_behaves_like '373.15 K'
14
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Tempura::Rømer do
6
+ subject { Tempura::Rømer.new(60) }
7
+
8
+ it 'is natively in Rømer (Rø)' do
9
+ expect(subject).to eq(60)
10
+ expect(subject).to be_a(Tempura::Rømer)
11
+ end
12
+
13
+ it_behaves_like '373.15 K'
14
+ end
@@ -0,0 +1,137 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Tempura::Temperature do
6
+
7
+ describe 'arithmetic' do
8
+ it 'subtracts another temperature' do
9
+ fahrenheit = Tempura::Fahrenheit.new(212)
10
+ celsius = Tempura::Celsius.new(0)
11
+ result = fahrenheit - celsius
12
+ expect(result).to eq(180)
13
+ expect(result).to be_a(Tempura::Fahrenheit)
14
+ end
15
+
16
+ it 'subtracts native degrees' do
17
+ fahrenheit = Tempura::Fahrenheit.new(212)
18
+ result = fahrenheit - 32
19
+ expect(result).to eq(180)
20
+ expect(result).to be_a(Tempura::Fahrenheit)
21
+ end
22
+
23
+ it 'adds another temperature' do
24
+ fahrenheit = Tempura::Fahrenheit.new(212)
25
+ celsius = Tempura::Celsius.new(0)
26
+ result = fahrenheit + celsius
27
+ expect(result).to eq(244)
28
+ expect(result).to be_a(Tempura::Fahrenheit)
29
+ end
30
+
31
+ it 'adds native degrees' do
32
+ fahrenheit = Tempura::Fahrenheit.new(212)
33
+ result = fahrenheit + 32
34
+ expect(result).to eq(244)
35
+ expect(result).to be_a(Tempura::Fahrenheit)
36
+ end
37
+
38
+ it 'divides by a Numeric' do
39
+ fahrenheit = Tempura::Fahrenheit.new(212)
40
+ result = fahrenheit / 2
41
+ expect(result).to eq(106)
42
+ expect(result).to be_a(Tempura::Fahrenheit)
43
+ end
44
+
45
+ it 'multiplies by a Numeric' do
46
+ fahrenheit = Tempura::Fahrenheit.new(212)
47
+ result = fahrenheit * 2
48
+ expect(result).to eq(424)
49
+ expect(result).to be_a(Tempura::Fahrenheit)
50
+ end
51
+
52
+ it 'can average an array of temperatures' do
53
+ f = Tempura::Fahrenheit.new(212)
54
+ c = Tempura::Celsius.new(100)
55
+ r = Tempura::Rømer.new(60)
56
+ k = Tempura::Kelvin.new(373.15)
57
+ result = ((f + c + r + k) / 4 ).to_delisle
58
+ expect(result).to eq(0)
59
+ expect(result).to be_a(Tempura::Delisle)
60
+ end
61
+ end
62
+
63
+ describe 'comparison' do
64
+ it 'compares internal value' do
65
+ fahrenheit = Tempura::Fahrenheit.new(212)
66
+ celsius = Tempura::Celsius.new(101)
67
+ leg = fahrenheit <=> celsius
68
+ expect(leg).to eq(-1)
69
+ end
70
+
71
+ describe 'comparison operators' do
72
+ it 'has >' do
73
+ fahrenheit = Tempura::Fahrenheit.new(212)
74
+ celsius = Tempura::Celsius.new(99)
75
+ expect(fahrenheit > celsius).to be_true
76
+ end
77
+
78
+ it 'has <' do
79
+ fahrenheit = Tempura::Fahrenheit.new(212)
80
+ celsius = Tempura::Celsius.new(101)
81
+ expect(fahrenheit < celsius).to be_true
82
+ end
83
+
84
+ it 'has <=' do
85
+ fahrenheit = Tempura::Fahrenheit.new(212)
86
+ celsius = Tempura::Celsius.new(101)
87
+ expect(fahrenheit <= celsius).to be_true
88
+ end
89
+
90
+ it 'has >=' do
91
+ fahrenheit = Tempura::Fahrenheit.new(212)
92
+ celsius = Tempura::Celsius.new(99)
93
+ expect(fahrenheit >= celsius).to be_true
94
+ end
95
+
96
+ it 'has ==' do
97
+ c = Tempura::Celsius.new(100)
98
+ d = Tempura::Delisle.new(0)
99
+ f = Tempura::Fahrenheit.new(212)
100
+ n = Tempura::Newton.new(33)
101
+ ra = Tempura::Rankine.new(671.67)
102
+ ré = Tempura::Réaumur.new(80)
103
+ rø = Tempura::Rømer.new(60)
104
+
105
+ scales = [c, d, f, n, ra, ré, rø]
106
+ scales.each { |s1|
107
+ scales.each { |s2|
108
+ expect(s1 == s2).to be_true
109
+ }
110
+ }
111
+ end
112
+ end
113
+ end
114
+
115
+ describe 'casting to Numerics' do
116
+
117
+ it 'casts to_f' do
118
+ temp = Tempura::Fahrenheit.new(212)
119
+ expect(temp.to_f).to eq(212.0)
120
+ expect(temp.to_f).to be_a(Float)
121
+ end
122
+
123
+ it 'casts to_i' do
124
+ temp = Tempura::Kelvin.new(373.15)
125
+ expect(temp.to_i).to eq(373)
126
+ expect(temp.to_i).to be_a(Integer)
127
+ end
128
+
129
+ it 'casts to_d' do
130
+ temp = Tempura::Celsius.new(100)
131
+ expect(temp.to_d).to eq(100.0)
132
+ expect(temp.to_d).to be_a(BigDecimal)
133
+ end
134
+
135
+ end
136
+
137
+ end
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'tempura/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "tempura"
8
+ gem.version = Tempura::VERSION
9
+ gem.authors = ["Ben Cullen-Kerney"]
10
+ gem.email = ["ben@beancuke.com"]
11
+ gem.description = %q{Tempura is a library for temperature math and conversion. Currently supported scales are Fahrenheit, Celsius, Kelvin, Delisle, Newton, Rankine, Réaumer, and Rømer.}
12
+ gem.summary = %q{Tempura is a library for temperature math and conversion.}
13
+ gem.homepage = "https://github.com/bak/tempura"
14
+ gem.files = %W(
15
+ .gitignore
16
+ Gemfile
17
+ LICENSE.txt
18
+ README.md
19
+ Rakefile
20
+ lib/tempura.rb
21
+ lib/tempura/celsius.rb
22
+ lib/tempura/delisle.rb
23
+ lib/tempura/fahrenheit.rb
24
+ lib/tempura/kelvin.rb
25
+ lib/tempura/newton.rb
26
+ lib/tempura/rankine.rb
27
+ lib/tempura/réaumur.rb
28
+ lib/tempura/rømer.rb
29
+ lib/tempura/temperature.rb
30
+ lib/tempura/version.rb
31
+ spec/spec_helper.rb
32
+ spec/tempura/celsius_spec.rb
33
+ spec/tempura/delisle_spec.rb
34
+ spec/tempura/fahrenheit_spec.rb
35
+ spec/tempura/kelvin_spec.rb
36
+ spec/tempura/newton_spec.rb
37
+ spec/tempura/rankine_spec.rb
38
+ spec/tempura/réaumur_spec.rb
39
+ spec/tempura/rømer_spec.rb
40
+ spec/tempura/temperature_spec.rb
41
+ tempura.gemspec
42
+ )
43
+
44
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
45
+ gem.require_paths = ["lib"]
46
+
47
+ gem.add_development_dependency 'rspec'
48
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tempura
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ben Cullen-Kerney
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Tempura is a library for temperature math and conversion. Currently supported
31
+ scales are Fahrenheit, Celsius, Kelvin, Delisle, Newton, Rankine, Réaumer, and Rømer.
32
+ email:
33
+ - ben@beancuke.com
34
+ executables: []
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - .gitignore
39
+ - Gemfile
40
+ - LICENSE.txt
41
+ - README.md
42
+ - Rakefile
43
+ - lib/tempura.rb
44
+ - lib/tempura/celsius.rb
45
+ - lib/tempura/delisle.rb
46
+ - lib/tempura/fahrenheit.rb
47
+ - lib/tempura/kelvin.rb
48
+ - lib/tempura/newton.rb
49
+ - lib/tempura/rankine.rb
50
+ - lib/tempura/réaumur.rb
51
+ - lib/tempura/rømer.rb
52
+ - lib/tempura/temperature.rb
53
+ - lib/tempura/version.rb
54
+ - spec/spec_helper.rb
55
+ - spec/tempura/celsius_spec.rb
56
+ - spec/tempura/delisle_spec.rb
57
+ - spec/tempura/fahrenheit_spec.rb
58
+ - spec/tempura/kelvin_spec.rb
59
+ - spec/tempura/newton_spec.rb
60
+ - spec/tempura/rankine_spec.rb
61
+ - spec/tempura/réaumur_spec.rb
62
+ - spec/tempura/rømer_spec.rb
63
+ - spec/tempura/temperature_spec.rb
64
+ - tempura.gemspec
65
+ homepage: https://github.com/bak/tempura
66
+ licenses: []
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ segments:
78
+ - 0
79
+ hash: -301657800019721027
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ segments:
87
+ - 0
88
+ hash: -301657800019721027
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.23
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: Tempura is a library for temperature math and conversion.
95
+ test_files:
96
+ - spec/spec_helper.rb
97
+ - spec/tempura/celsius_spec.rb
98
+ - spec/tempura/delisle_spec.rb
99
+ - spec/tempura/fahrenheit_spec.rb
100
+ - spec/tempura/kelvin_spec.rb
101
+ - spec/tempura/newton_spec.rb
102
+ - spec/tempura/rankine_spec.rb
103
+ - spec/tempura/réaumur_spec.rb
104
+ - spec/tempura/rømer_spec.rb
105
+ - spec/tempura/temperature_spec.rb