subunit 0.6.2 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
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