quantify 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/quantify/config.rb +1 -0
- data/lib/quantify/core_extensions/string.rb +1 -1
- data/lib/quantify/dimensions.rb +8 -4
- data/lib/quantify/quantify.rb +1 -1
- data/lib/quantify/quantity.rb +6 -2
- data/lib/quantify/unit/base_unit.rb +6 -7
- data/lib/quantify/unit/compound_base_unit_list.rb +1 -0
- data/lib/quantify/unit/prefix/prefix.rb +1 -1
- data/lib/quantify/unit/unit.rb +1 -1
- data/quantify.gemspec +2 -2
- data/spec/compound_unit_spec.rb +1 -0
- data/spec/dimension_spec.rb +1 -0
- data/spec/quantity_spec.rb +10 -4
- data/spec/string_spec.rb +3 -1
- data/spec/unit_spec.rb +3 -1
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.1
|
data/lib/quantify/config.rb
CHANGED
data/lib/quantify/dimensions.rb
CHANGED
@@ -265,7 +265,7 @@ module Quantify
|
|
265
265
|
# Dimensions.length.units :symbol #=> [ 'm', 'ft', 'yd', ... ]
|
266
266
|
#
|
267
267
|
def units(by=nil)
|
268
|
-
Unit.units.select { |unit| unit.dimensions == self }.map(&by)
|
268
|
+
Unit.units.select { |unit| unit.dimensions == self }.map(&by).to_a
|
269
269
|
end
|
270
270
|
|
271
271
|
# Returns the SI unit for the physical quantity described by self.
|
@@ -319,7 +319,7 @@ module Quantify
|
|
319
319
|
Unit.base_quantity_si_units.select do |unit|
|
320
320
|
unit.measures == dimension.remove_underscores
|
321
321
|
end.first.clone ** index
|
322
|
-
end.map(&by)
|
322
|
+
end.map(&by).to_a
|
323
323
|
end
|
324
324
|
|
325
325
|
# Compares the base quantities of two Dimensions objects and returns true if
|
@@ -454,7 +454,11 @@ module Quantify
|
|
454
454
|
#
|
455
455
|
def base_quantities
|
456
456
|
quantities = self.instance_variables
|
457
|
-
|
457
|
+
if RUBY_VERSION < "1.9"
|
458
|
+
quantities.delete("@physical_quantity")
|
459
|
+
else
|
460
|
+
quantities.delete(:@physical_quantity)
|
461
|
+
end
|
458
462
|
return quantities
|
459
463
|
end
|
460
464
|
|
@@ -475,7 +479,7 @@ module Quantify
|
|
475
479
|
def to_hash
|
476
480
|
hash = {}
|
477
481
|
base_quantities.each do |variable|
|
478
|
-
hash[variable.gsub("@","").to_sym] = self.instance_variable_get(variable)
|
482
|
+
hash[variable.to_s.gsub("@","").to_sym] = self.instance_variable_get(variable)
|
479
483
|
end
|
480
484
|
return hash
|
481
485
|
end
|
data/lib/quantify/quantify.rb
CHANGED
data/lib/quantify/quantity.rb
CHANGED
@@ -55,8 +55,8 @@ module Quantify
|
|
55
55
|
raise Quantify::Exceptions::QuantityParseError, "Cannot parse string into value and unit"
|
56
56
|
end
|
57
57
|
|
58
|
-
def self.configure
|
59
|
-
self.class_eval
|
58
|
+
def self.configure(&block)
|
59
|
+
self.class_eval(&block) if block
|
60
60
|
end
|
61
61
|
|
62
62
|
attr_accessor :value, :unit
|
@@ -96,6 +96,10 @@ module Quantify
|
|
96
96
|
"#{@value} #{@unit.send format}"
|
97
97
|
end
|
98
98
|
end
|
99
|
+
|
100
|
+
def inspect
|
101
|
+
to_s
|
102
|
+
end
|
99
103
|
|
100
104
|
# Converts self into a quantity using the unit provided as an argument. The
|
101
105
|
# new unit must represent the same physical quantity, i.e. have the same
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
module Quantify
|
3
2
|
module Unit
|
4
3
|
class Base
|
@@ -60,8 +59,8 @@ module Quantify
|
|
60
59
|
#
|
61
60
|
# end
|
62
61
|
#
|
63
|
-
def self.configure
|
64
|
-
class_eval
|
62
|
+
def self.configure(&block)
|
63
|
+
class_eval(&block) if block
|
65
64
|
end
|
66
65
|
|
67
66
|
attr_reader :name, :symbol, :label, :factor, :dimensions
|
@@ -402,7 +401,7 @@ module Quantify
|
|
402
401
|
def alternatives(by=nil)
|
403
402
|
@dimensions.units(nil).reject do |unit|
|
404
403
|
unit.is_equivalent_to?(self) || !unit.acts_as_alternative_unit
|
405
|
-
end.map(&by)
|
404
|
+
end.map(&by).to_a
|
406
405
|
end
|
407
406
|
|
408
407
|
# Returns the SI unit for the same physical quantity which is represented
|
@@ -449,8 +448,8 @@ module Quantify
|
|
449
448
|
#
|
450
449
|
def valid_prefixes(by=nil)
|
451
450
|
return [] if is_compound_unit? && has_multiple_base_units?
|
452
|
-
return Unit::Prefix.si_prefixes.map(&by) if is_si_unit?
|
453
|
-
return Unit::Prefix.non_si_prefixes.map(&by) if is_non_si_unit?
|
451
|
+
return Unit::Prefix.si_prefixes.map(&by).to_a if is_si_unit?
|
452
|
+
return Unit::Prefix.non_si_prefixes.map(&by).to_a if is_non_si_unit?
|
454
453
|
end
|
455
454
|
|
456
455
|
# Multiply two units together. This results in the generation of a compound
|
@@ -537,7 +536,7 @@ module Quantify
|
|
537
536
|
def to_hash
|
538
537
|
hash = {}
|
539
538
|
self.instance_variables.each do |var|
|
540
|
-
symbol = var.gsub("@","").to_sym
|
539
|
+
symbol = var.to_s.gsub("@","").to_sym
|
541
540
|
hash[symbol] = send symbol
|
542
541
|
end
|
543
542
|
return hash
|
data/lib/quantify/unit/unit.rb
CHANGED
data/quantify.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{quantify}
|
8
|
-
s.version = "2.0.
|
8
|
+
s.version = "2.0.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andrew Berkeley"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-10-18}
|
13
13
|
s.description = %q{A gem to support physical quantities and unit conversions}
|
14
14
|
s.email = %q{andrew.berkeley.is@googlemail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/compound_unit_spec.rb
CHANGED
data/spec/dimension_spec.rb
CHANGED
data/spec/quantity_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'quantify'
|
2
3
|
include Quantify
|
3
4
|
|
@@ -104,7 +105,9 @@ describe Quantity do
|
|
104
105
|
end
|
105
106
|
|
106
107
|
it "should subtract quantities correctly with different units of same dimension" do
|
107
|
-
(125.4.kelvin - -211.85.degree_celsius)
|
108
|
+
result = (125.4.kelvin - -211.85.degree_celsius)
|
109
|
+
result.value.should be_within(0.00000001).of(64.1)
|
110
|
+
result.unit.symbol.should == "K"
|
108
111
|
end
|
109
112
|
|
110
113
|
it "should subtract quantities correctly with different units of same dimension" do
|
@@ -202,7 +205,8 @@ describe Quantity do
|
|
202
205
|
|
203
206
|
it "should convert compound units to SI correctly" do
|
204
207
|
speed = Quantity.new 100, (Unit.km/Unit.h)
|
205
|
-
speed.to_si.
|
208
|
+
speed.to_si.value.should be_within(0.0000000000001).of(27.7777777777778)
|
209
|
+
speed.to_si.unit.name.should == "metre per second"
|
206
210
|
end
|
207
211
|
|
208
212
|
it "should convert compound units to SI correctly" do
|
@@ -257,14 +261,16 @@ describe Quantity do
|
|
257
261
|
quantity.to_s.should eql "432.0 yd ft"
|
258
262
|
new_quantity=quantity.rationalize_units
|
259
263
|
quantity.to_s.should eql "432.0 yd ft"
|
260
|
-
new_quantity.
|
264
|
+
new_quantity.value.should be_within(0.0000001).of(144)
|
265
|
+
new_quantity.unit.symbol.should eql "yd²"
|
261
266
|
end
|
262
267
|
|
263
268
|
it "should rationalize units and modify value in place" do
|
264
269
|
quantity = 12.yards*36.feet
|
265
270
|
quantity.to_s.should eql "432.0 yd ft"
|
266
271
|
quantity.rationalize_units!
|
267
|
-
quantity.
|
272
|
+
quantity.value.should be_within(0.0000001).of(144)
|
273
|
+
quantity.unit.symbol.should eql "yd²"
|
268
274
|
end
|
269
275
|
|
270
276
|
it "should be greater than" do
|
data/spec/string_spec.rb
CHANGED
data/spec/unit_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'quantify'
|
2
3
|
include Quantify
|
3
4
|
|
@@ -1027,7 +1028,8 @@ describe Unit do
|
|
1027
1028
|
end
|
1028
1029
|
|
1029
1030
|
it "should return correct unit ratio quantity with symbols" do
|
1030
|
-
Unit.ratio(:lb,:kg).to_s(:name).should
|
1031
|
+
Unit.ratio(:lb,:kg).to_s(:name).split(" ").first.to_f.should be_within(0.00000000000001).of(2.20462262184878)
|
1032
|
+
Unit.ratio(:lb,:kg).to_s(:name).split(" ")[1..3].join(" ").should == "pounds per kilogram"
|
1031
1033
|
end
|
1032
1034
|
|
1033
1035
|
it "should return correct unit ratio quantity with symbols and rounding" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quantify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 2.0.
|
9
|
+
- 1
|
10
|
+
version: 2.0.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andrew Berkeley
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-10-18 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|