unite 1.3.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/Gemfile +1 -1
- data/README.md +48 -0
- data/lib/unite/dimension.rb +4 -5
- data/lib/unite/lookup/definitions.rb +0 -13
- data/lib/unite/version.rb +1 -1
- data/spec/dimension_spec.rb +5 -5
- data/spec/lookup/derived_unit_spec.rb +5 -5
- data/spec/support/shared_examples/units/dimension/vector.rb +5 -5
- metadata +12 -14
- data/.rspec +0 -4
- data/.ruby-version +0 -1
- data/README +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9930abefcdceba86dec0ecee779267633ce949b7
|
4
|
+
data.tar.gz: ce3d5af30e42ecc00583f142aee8d9818e2cc86d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2ff02013b735e16150fb1eea3b133036f14a70962f7655a65825b865ae124079f6e0bbd170d7887a30603ce316744794955eacce9ca001e066fc17b3a73d801
|
7
|
+
data.tar.gz: fc76fd42c0adbd88e27447adf9fafbc0e4419d55dd89d59eba5918e3a12764c17fb89777c37ed38c8f3e83d097be3138d759462016065130690774fcaf01ebe0
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -7,7 +7,7 @@ group :test do
|
|
7
7
|
gem 'SystemTimer', :platform => :mri_18
|
8
8
|
gem 'ruby-debug', :platform => :mri_18
|
9
9
|
gem 'debugger', :platform => :mri_19
|
10
|
-
gem 'byebug', :
|
10
|
+
gem 'byebug', :platforms => [:mri_20, :mri_21, :mri_22]
|
11
11
|
gem 'mocha'
|
12
12
|
gem 'rspec'
|
13
13
|
gem 'shoulda-matchers', :git => 'git://github.com/thoughtbot/shoulda-matchers.git', :require => 'false'
|
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# Install
|
2
|
+
|
3
|
+
**With Bundler**
|
4
|
+
```ruby
|
5
|
+
gem 'unite'
|
6
|
+
```
|
7
|
+
|
8
|
+
**Without Bundler**
|
9
|
+
```bash
|
10
|
+
gem install unite
|
11
|
+
```
|
12
|
+
|
13
|
+
# It's Science
|
14
|
+
|
15
|
+
![It's Science](http://gifrific.com/wp-content/uploads/2012/06/its-science-anchorman.gif)
|
16
|
+
|
17
|
+
Based on the algorithms developed by Gordon S. Novak, Jr. at the University of Texas, which can be found here:
|
18
|
+
|
19
|
+
http://www.cs.utexas.edu/users/novak/units95.html
|
20
|
+
|
21
|
+
|
22
|
+
# Dimensions
|
23
|
+
|
24
|
+
Handles the following dimensions:
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
[:length, :time, :temperature, :mass, :current, :substance, :luminosity]
|
28
|
+
```
|
29
|
+
|
30
|
+
Can use `Unite::Quantity` to represent values or include the functionality into your own objects.
|
31
|
+
|
32
|
+
Look at https://github.com/stellard/unite/blob/master/lib/unite/quantity.rb for a minum implementation
|
33
|
+
|
34
|
+
|
35
|
+
# Examples:
|
36
|
+
|
37
|
+
_TODO: Needs more info here._
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
Unite::Quantity.init("1000*km")
|
41
|
+
Unite::Quantity.init("1000","km")
|
42
|
+
```
|
43
|
+
|
44
|
+
Unit definitions are found here:
|
45
|
+
|
46
|
+
https://github.com/stellard/unite/blob/master/lib/unite/lookup/definitions.rb
|
47
|
+
|
48
|
+
Specs show good examples of use.
|
data/lib/unite/dimension.rb
CHANGED
@@ -12,18 +12,17 @@ module Unite
|
|
12
12
|
# 4 current ampere
|
13
13
|
# 5 substance mole
|
14
14
|
# 6 luminosity candela
|
15
|
-
# 7 money pound
|
16
15
|
#
|
17
16
|
|
18
|
-
VECTOR_LIST = [:length, :time, :temperature, :mass, :current, :substance, :luminosity
|
17
|
+
VECTOR_LIST = [:length, :time, :temperature, :mass, :current, :substance, :luminosity]
|
19
18
|
|
20
|
-
DIMSIZES = [20, 20, 20, 10, 10, 10, 10
|
21
|
-
DIMVALS = [1, 20, 400, 8000, 80000, 800000, 8000000
|
19
|
+
DIMSIZES = [20, 20, 20, 10, 10, 10, 10]
|
20
|
+
DIMVALS = [1, 20, 400, 8000, 80000, 800000, 8000000]
|
22
21
|
|
23
22
|
|
24
23
|
# also include the dimensionless dimension "none"
|
25
24
|
LIST = VECTOR_LIST + [:none]
|
26
|
-
UNITS = ['km', 's', 'K', 'kg', 'A', 'mol', 'cd', '
|
25
|
+
UNITS = ['km', 's', 'K', 'kg', 'A', 'mol', 'cd', '']
|
27
26
|
INDICIES = Hash[*LIST.each_with_index.map{|d,i| [d,i]}.flatten]
|
28
27
|
|
29
28
|
|
@@ -46,19 +46,6 @@ module Unite
|
|
46
46
|
|
47
47
|
Lookup.add_property Property.new(:name => :mass, :expression => 'g')
|
48
48
|
|
49
|
-
|
50
|
-
#MONEY
|
51
|
-
Lookup.add SimpleUnit.new(:name => "GBP", :si_factor => 1, :dimension => :money)
|
52
|
-
|
53
|
-
#Right now only one currency is supported. It is too difficult to be able to convert them.
|
54
|
-
|
55
|
-
# Lookup.add SimpleUnit.new(:name => "EUR", :si_factor => nil, :dimension => :money)
|
56
|
-
# Lookup.add SimpleUnit.new(:name => "USD", :si_factor => nil, :dimension => :money)
|
57
|
-
# Lookup.add SimpleUnit.new(:name => "CAD", :si_factor => nil, :dimension => :money)
|
58
|
-
|
59
|
-
Lookup.add_property Property.new(:name => :money, :expression => 'GBP')
|
60
|
-
|
61
|
-
|
62
49
|
#TEMPERATURE
|
63
50
|
Lookup.add SimpleUnit.new(:name => "K", :si_factor => 1, :dimension => :temperature, :aliases => ['kelvin'])
|
64
51
|
Lookup.add_property Property.new(:name => :temperature, :expression => 'K')
|
data/lib/unite/version.rb
CHANGED
data/spec/dimension_spec.rb
CHANGED
@@ -7,27 +7,27 @@ describe Unite::Dimension do
|
|
7
7
|
|
8
8
|
it "should have the correct VECTOR_LIST" do
|
9
9
|
Unite::Dimension::VECTOR_LIST.should ==
|
10
|
-
[:length, :time, :temperature, :mass, :current, :substance, :luminosity
|
10
|
+
[:length, :time, :temperature, :mass, :current, :substance, :luminosity]
|
11
11
|
end
|
12
12
|
|
13
13
|
|
14
14
|
it "should have the correct LIST" do
|
15
15
|
Unite::Dimension::LIST.should ==
|
16
|
-
[:length, :time, :temperature, :mass, :current, :substance, :luminosity, :
|
16
|
+
[:length, :time, :temperature, :mass, :current, :substance, :luminosity, :none]
|
17
17
|
end
|
18
18
|
|
19
19
|
|
20
20
|
it "should return the correct si unit for dimension name" do
|
21
21
|
Unite::Dimension::LIST.map{|d| Unite::Dimension.si_unit(d)}.should ==
|
22
|
-
['km', 's', 'K', 'kg', 'A', 'mol', 'cd', '
|
22
|
+
['km', 's', 'K', 'kg', 'A', 'mol', 'cd', '']
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should return the correct si unit for dimension index" do
|
26
26
|
Unite::Dimension::LIST.each_with_index.map {|_,i| Unite::Dimension.si_unit(i)}.should ==
|
27
|
-
['km', 's', 'K', 'kg', 'A', 'mol', 'cd', '
|
27
|
+
['km', 's', 'K', 'kg', 'A', 'mol', 'cd', '']
|
28
28
|
end
|
29
29
|
|
30
|
-
its(:blank_dimension_vector) { should == [0,0,0,0,0,0,0
|
30
|
+
its(:blank_dimension_vector) { should == [0,0,0,0,0,0,0] }
|
31
31
|
|
32
32
|
|
33
33
|
end
|
@@ -7,26 +7,26 @@ module Unite
|
|
7
7
|
it { should validate_presence_of(:name)}
|
8
8
|
|
9
9
|
%w{ F J Hz N }.each do |unit|
|
10
|
-
it "should allow valid unit #{unit}" do
|
10
|
+
it "should allow valid unit #{unit}" do
|
11
11
|
Fabricate.build(:derived_unit, :name => unit).should be_valid
|
12
12
|
end
|
13
|
-
end
|
13
|
+
end
|
14
14
|
|
15
15
|
%w{km^3 m/g km*tonne}.each do |unit|
|
16
|
-
it "should not allow invalid unit #{unit}" do
|
16
|
+
it "should not allow invalid unit #{unit}" do
|
17
17
|
Fabricate.build(:derived_unit, :name => unit).should_not be_valid
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
describe 'based off of simple units' do
|
22
22
|
subject { DerivedUnit.new(:name => "J", :expression => 'kg*m^2/s^2') }
|
23
|
-
its(:dimension_vector) { should == [2, -2, 0, 1, 0, 0, 0
|
23
|
+
its(:dimension_vector) { should == [2, -2, 0, 1, 0, 0, 0] }
|
24
24
|
its(:property_name) { should == :energy }
|
25
25
|
end
|
26
26
|
|
27
27
|
describe 'based off of other derived unit' do
|
28
28
|
subject { DerivedUnit.new(:name => "kWh", :expression => '3.6e5*J') }
|
29
|
-
its(:dimension_vector) { should == [2, -2, 0, 1, 0, 0, 0
|
29
|
+
its(:dimension_vector) { should == [2, -2, 0, 1, 0, 0, 0] }
|
30
30
|
its(:property_name) { should == :energy }
|
31
31
|
end
|
32
32
|
|
@@ -3,20 +3,20 @@ shared_examples "dimension vectors" do
|
|
3
3
|
|
4
4
|
describe "generating" do
|
5
5
|
|
6
|
-
subject { described_class.new :expression => expression }
|
6
|
+
subject { described_class.new :expression => expression }
|
7
7
|
|
8
8
|
describe "something" do
|
9
9
|
|
10
|
-
let(:expression) { "m/s^2" }
|
11
|
-
its(:dimension_vector) { should == [1,-2,0,0,0,0,0
|
10
|
+
let(:expression) { "m/s^2" }
|
11
|
+
its(:dimension_vector) { should == [1,-2,0,0,0,0,0] }
|
12
12
|
|
13
13
|
end
|
14
14
|
|
15
15
|
|
16
16
|
describe "when there is no unit" do
|
17
17
|
|
18
|
-
let(:expression) { "" }
|
19
|
-
its(:dimension_vector) { should == [0,0,0,0,0,0,0
|
18
|
+
let(:expression) { "" }
|
19
|
+
its(:dimension_vector) { should == [0,0,0,0,0,0,0] }
|
20
20
|
|
21
21
|
end
|
22
22
|
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- stellard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 3.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 3.0.0
|
41
41
|
description: Unite provides extensions to your objects to support values with units
|
@@ -53,15 +53,13 @@ executables:
|
|
53
53
|
extensions: []
|
54
54
|
extra_rdoc_files: []
|
55
55
|
files:
|
56
|
-
- .bundle/config
|
57
|
-
- .gitignore
|
58
|
-
- .rspec
|
59
|
-
- .ruby-version
|
56
|
+
- ".bundle/config"
|
57
|
+
- ".gitignore"
|
60
58
|
- Gemfile
|
61
59
|
- Gemfile.lock
|
62
60
|
- Guardfile
|
63
61
|
- MIT-LICENSE
|
64
|
-
- README
|
62
|
+
- README.md
|
65
63
|
- Rakefile
|
66
64
|
- bin/autospec
|
67
65
|
- bin/byebug
|
@@ -123,17 +121,17 @@ require_paths:
|
|
123
121
|
- lib
|
124
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
125
123
|
requirements:
|
126
|
-
- -
|
124
|
+
- - ">="
|
127
125
|
- !ruby/object:Gem::Version
|
128
126
|
version: '0'
|
129
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
128
|
requirements:
|
131
|
-
- -
|
129
|
+
- - ">="
|
132
130
|
- !ruby/object:Gem::Version
|
133
131
|
version: '0'
|
134
132
|
requirements: []
|
135
133
|
rubyforge_project: unite
|
136
|
-
rubygems_version: 2.
|
134
|
+
rubygems_version: 2.2.2
|
137
135
|
signing_key:
|
138
136
|
specification_version: 4
|
139
137
|
summary: Unite provides extensions to your objects to support values with units
|
data/.rspec
DELETED
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.0.0-p247
|
data/README
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
gem install unite
|
2
|
-
|
3
|
-
gem 'unite'
|
4
|
-
|
5
|
-
|
6
|
-
Based on
|
7
|
-
|
8
|
-
http://www.cs.utexas.edu/users/novak/units95.html
|
9
|
-
|
10
|
-
|
11
|
-
Handles the following dimensions
|
12
|
-
|
13
|
-
[:length, :time, :temperature, :mass, :current, :substance, :luminosity, :money]
|
14
|
-
|
15
|
-
|
16
|
-
Note: Conversion of Money is not currently supported
|
17
|
-
|
18
|
-
|
19
|
-
Can use Unite::Quantity to represent values or include the functionality into your own objects.
|
20
|
-
|
21
|
-
Look at https://github.com/stellard/unite/blob/master/lib/unite/quantity.rb for a minum implementation
|
22
|
-
|
23
|
-
Examples: (needs more info here)
|
24
|
-
|
25
|
-
Unite::Quantity.init("1000*km")
|
26
|
-
Unite::Quantity.init("1000","km")
|
27
|
-
|
28
|
-
Unit definitions are found here
|
29
|
-
|
30
|
-
https://github.com/stellard/unite/blob/master/lib/unite/lookup/definitions.rb
|
31
|
-
|
32
|
-
Specs show good examples of use.
|
33
|
-
|
34
|
-
I will add more to readme
|
35
|
-
|