subunit 0.6.2 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46d3455f6cae815078d18a8de397a9a1cf925bd34f181aa976a22b2ba5743d03
4
- data.tar.gz: 933130e619d182c682dde2eb7861b7d319dac05fd60d872587206be3e8ada74b
3
+ metadata.gz: 34b54eb81abbfd37f7def79d99b84475dc1b94f1aef8fa575a62c5c8ecf78766
4
+ data.tar.gz: 9db454bb941bd1bf7c21deb81e9e0a5c8c618eec5bb00272719f3302c63227a6
5
5
  SHA512:
6
- metadata.gz: badb4355119049ad42ed3fa49b1c38e5c2f3c002d53972988b911e074e43760bace58e02d06c8aa793d57dadb6ac73dade62ac4b2b438fd444aa54b7b647549e
7
- data.tar.gz: '0628dc8e18fb2b9fcc9b55028760d67f286e97789973055d913a32ef769de8d0f035abfa957671c2ab3c0072d6290b88bee04432326d3125820a5cd397539eed'
6
+ metadata.gz: 42582c6fe9f108f9ea21c4e59618743f3515c82368bda8dd18ed806d9e39fb75a5353425337c130682214c2b84aac5b11c20597156ef3515be4df2077f30ed02
7
+ data.tar.gz: b3c218d7d4099d000af39426e89d7ec79d3c7a703af0e8a75994f1a444a597fc4a3aeba8603dcced3af0c3fd0ec902b81f1ddbb4f73a8039c00799d98458fd5c
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -2,7 +2,30 @@
2
2
 
3
3
  # file: subunit.rb
4
4
 
5
+ module SubunitFracture
6
+
7
+ refine Integer do
8
+
9
+ def strfunit(s)
10
+ Subunit.seconds(self).strfunit(s)
11
+ end
12
+
13
+ end
14
+
15
+ end
16
+
5
17
  class Subunit
18
+
19
+ def self.seconds(val, units: nil)
20
+ new(units={minutes:60, hours:60, days:24}, seconds: val)
21
+ end
22
+
23
+ # e.g. Subunit.hms_to_seconds('5 minutes and 4 seconds')
24
+ # => 304
25
+ #
26
+ def self.hms_to_seconds(obj)
27
+ new(units={hours:60, minutes:60,seconds: 60, }, obj).to_i
28
+ end
6
29
 
7
30
  attr_reader :to_a, :to_h, :to_i
8
31
 
@@ -11,14 +34,21 @@ class Subunit
11
34
  @debug = false
12
35
 
13
36
  @raw_units = raw_units
37
+
38
+ accumulate = ->(a) {
14
39
 
15
- if obj.is_a? Array then
16
-
17
- a = obj[0..-2]
18
40
  len = raw_units.to_a.length
19
41
  val = ([0]*(len-1) + a).slice(-(len), len).zip(raw_units.values)\
20
- .inject(0) {|r,x| r + x.inject(:*) }
21
- @to_i = val + obj[-1]
42
+ .inject(0) {|r,x| r * x[1] + x[0] }
43
+ }
44
+
45
+ if obj.is_a? String
46
+
47
+ @to_i = accumulate.call obj.split(/\D+/).map(&:to_i)
48
+
49
+ elsif obj.is_a? Array then
50
+
51
+ @to_i = accumulate.call obj
22
52
 
23
53
  else
24
54
 
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.6.2
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  HowcHg4GymtLLITCF/QtA5tta5SmHAca1POGncsO9QiramFQ9S3Q4O4wcjboVJOp
36
36
  SSxk4InmYoY9Cl2GVQ+d9owo
37
37
  -----END CERTIFICATE-----
38
- date: 2020-09-14 00:00:00.000000000 Z
38
+ date: 2020-11-06 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
41
  email: james@jamesrobertson.eu
metadata.gz.sig CHANGED
Binary file