subunit 0.2.1 → 0.2.2

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.
Files changed (2) hide show
  1. data/lib/subunit.rb +26 -5
  2. metadata +2 -2
data/lib/subunit.rb CHANGED
@@ -3,15 +3,35 @@
3
3
 
4
4
  class Subunit
5
5
 
6
- def initialize(raw_units=[], raw_subunit=0)
7
- units = multiply_units(raw_units).reverse
8
- @a = scan_units(units, raw_subunit)
6
+ attr_reader :to_a, :to_h
7
+
8
+ def initialize(raw_units=nil, raw_subunit=0)
9
+ method((raw_units.class.to_s.downcase + '_units').to_sym).call(raw_units, raw_subunit)
9
10
  end
10
11
 
11
- def to_a() @a.map{|x| x >= 1 ? x.to_i : 0} end
12
-
13
12
  private
14
13
 
14
+ def hash_subunit(h)
15
+ [h.values.first, h.keys.first]
16
+ end
17
+
18
+ def fixnum_subunit(v)
19
+ [v, :remainder]
20
+ end
21
+
22
+ def hash_units(raw_units={}, u=nil)
23
+ val, label = method((u.class.to_s.downcase + '_subunit').to_sym).call(u)
24
+ units = multiply_units(raw_units.values).reverse
25
+ @to_a = scan_units(units, val).map(&:to_i)
26
+ @to_h = Hash[(raw_units.keys.reverse + [label]).zip(@to_a)]
27
+ end
28
+
29
+ def array_units(raw_units=[], u=nil)
30
+ val, label = method((u.class.to_s.downcase + '_subunit').to_sym).call(u)
31
+ units = multiply_units(raw_units).reverse
32
+ @to_a = scan_units(units, val).map(&:to_i)
33
+ end
34
+
15
35
  def multiply_units(x) x.inject([]){|r,x| r + [x.to_i * (r[-1] || 1)]} end
16
36
 
17
37
  def scan_units(unit_list,raw_subunit)
@@ -20,3 +40,4 @@ class Subunit
20
40
  unit_list.length > 0 ? [unit] + scan_units(unit_list, subunit) : [unit, subunit]
21
41
  end
22
42
  end
43
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: subunit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors: []
7
7
 
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-06-13 00:00:00 +01:00
12
+ date: 2011-02-11 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies: []
15
15