dimensional 0.0.5 → 0.0.6

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.
data/Rakefile CHANGED
@@ -3,6 +3,7 @@ require 'rake/testtask'
3
3
  require 'rake/rdoctask'
4
4
  require 'rake/gempackagetask'
5
5
  require 'rubygems'
6
+ require 'lib/dimensional/version'
6
7
 
7
8
  task :default => [:test]
8
9
 
@@ -16,7 +17,7 @@ Rake::Task['test'].comment = "Run all tests in test/*_test.rb"
16
17
  spec = Gem::Specification.new do |s|
17
18
  s.platform = Gem::Platform::RUBY
18
19
  s.name = %q{dimensional}
19
- s.version = "0.0.5"
20
+ s.version = Dimensional::VERSION
20
21
  s.required_ruby_version = '>= 1.6.8'
21
22
  s.date = %q{2009-10-09}
22
23
  s.authors = ["Chris Hapgood"]
data/lib/dimensional.rb CHANGED
@@ -2,7 +2,7 @@ require 'dimensional/dimension'
2
2
  require 'dimensional/system'
3
3
  require 'dimensional/unit'
4
4
  require 'dimensional/measure'
5
+ require 'dimensional/version'
5
6
 
6
7
  module Dimensional
7
- VERSION = "0.0.5"
8
8
  end
@@ -29,7 +29,7 @@ module Dimensional
29
29
  def initialize(name, dimension, parent = nil)
30
30
  @name = name && name.to_s
31
31
  @dimension = dimension
32
- @units = Hash.new{|h,k| h[k] = {}}
32
+ @units = {}
33
33
  @parent = parent
34
34
  end
35
35
 
@@ -45,7 +45,7 @@ module Dimensional
45
45
 
46
46
  def preferences(u)
47
47
  baseline = parent ? parent.preferences(u) : {}
48
- baseline.merge(@units[u])
48
+ baseline.merge(@units[u] || {})
49
49
  end
50
50
 
51
51
  # How "preferred" is the given unit for this metric?
@@ -3,8 +3,6 @@ require 'delegate'
3
3
  module Dimensional
4
4
  # Represents a set of units for comprehensive measurement of physical quantities.
5
5
  class System < DelegateClass(String)
6
- PRIORITY = []
7
-
8
6
  @registry = Hash.new
9
7
  @abbreviation_registry = Hash.new
10
8
 
@@ -14,7 +12,6 @@ module Dimensional
14
12
  raise "System #{s}'s abbreviation already exists" if @abbreviation_registry[s.abbreviation]
15
13
  @registry[s.to_sym] = s
16
14
  @abbreviation_registry[s.abbreviation.to_sym] = s if s.abbreviation
17
- PRIORITY << s
18
15
  const_set(s.abbreviation, s) rescue nil # Not all symbols strings are valid constant names
19
16
  s
20
17
  end
@@ -27,8 +24,7 @@ module Dimensional
27
24
 
28
25
  # Purge all systems from storage.
29
26
  def self.reset!
30
- constants.each {|d| remove_const(d) unless d == 'PRIORITY'}
31
- PRIORITY.clear
27
+ constants.each {|d| remove_const(d)}
32
28
  @registry.clear
33
29
  @abbreviation_registry.clear
34
30
  end
@@ -0,0 +1,3 @@
1
+ module Dimensional
2
+ VERSION = "0.0.6"
3
+ end
data/test/metric_test.rb CHANGED
@@ -87,4 +87,13 @@ class MetricTest < Test::Unit::TestCase
87
87
  assert length.to_enum.kind_of?(Enumerable::Enumerator)
88
88
  assert_respond_to length, :map
89
89
  end
90
+
91
+ def test_preferences_query_does_not_modify_preferences
92
+ draft = Metric.register('draft', Dimension::L)
93
+ foot = Unit[:L, :BA, 'foot']
94
+ p0 = draft.preference(foot)
95
+ draft.preferences(foot)
96
+ p1 = draft.preference(foot)
97
+ assert_equal p0, p1
98
+ end
90
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dimensional
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hapgood
@@ -29,6 +29,7 @@ files:
29
29
  - lib/dimensional/metric.rb
30
30
  - lib/dimensional/system.rb
31
31
  - lib/dimensional/unit.rb
32
+ - lib/dimensional/version.rb
32
33
  - lib/dimensional.rb
33
34
  - test/configurator_test.rb
34
35
  - test/demo.rb