subunit 0.8.0 → 0.8.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/subunit.rb +39 -12
- metadata +4 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e76018bbc5927b0645dc9b7b35df35041719bbcac77e078306edd8f00a83f04
|
4
|
+
data.tar.gz: 68057c6ef69c1cf21d554502f8c9055da642729614dadd3d2418f7fa8c55af51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c322cef743c9ab764bd35158e68867cf5879e254427aad7351a2f3a0e222effc4a9597637f22f69250df7d058e4ad8e2ab42b74218a98db8e47d47da71433fe3
|
7
|
+
data.tar.gz: '09affcc2c6235d9bd29a03441b6bf64298a3aa7a46062b3a47753302a0f7d1088fec5d6c73c186e232181447dafeb6da1a1bb296303c109197aca89f9074a568'
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/subunit.rb
CHANGED
@@ -16,10 +16,17 @@ end
|
|
16
16
|
|
17
17
|
class Subunit
|
18
18
|
|
19
|
-
def self.seconds(val)
|
20
|
-
new(units={minutes:60, hours:60}, seconds: val)
|
19
|
+
def self.seconds(val, units: nil)
|
20
|
+
new(units={minutes:60, hours:60, days:24}, seconds: val)
|
21
21
|
end
|
22
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
|
29
|
+
|
23
30
|
attr_reader :to_a, :to_h, :to_i
|
24
31
|
|
25
32
|
def initialize(raw_units={}, obj)
|
@@ -27,19 +34,17 @@ class Subunit
|
|
27
34
|
@debug = false
|
28
35
|
|
29
36
|
@raw_units = raw_units
|
37
|
+
|
38
|
+
accumulate = ->(a) {
|
30
39
|
|
31
|
-
|
32
|
-
accumulate = ->(obj) {
|
33
|
-
a = obj[0..-2]
|
34
40
|
len = raw_units.to_a.length
|
35
41
|
val = ([0]*(len-1) + a).slice(-(len), len).zip(raw_units.values)\
|
36
|
-
.inject(0) {|r,x| r + x
|
37
|
-
val + obj[-1]
|
42
|
+
.inject(0) {|r,x| r * x[1] + x[0] }
|
38
43
|
}
|
39
44
|
|
40
45
|
if obj.is_a? String
|
41
46
|
|
42
|
-
@to_i = accumulate.call obj.split(
|
47
|
+
@to_i = accumulate.call obj.split(/\D+/).map(&:to_i)
|
43
48
|
|
44
49
|
elsif obj.is_a? Array then
|
45
50
|
|
@@ -58,18 +63,34 @@ class Subunit
|
|
58
63
|
# .strfunit("%x") #=> 11m 1s
|
59
64
|
#
|
60
65
|
# %x e.g. 11m 1s
|
66
|
+
# %xi e.g. 11m
|
61
67
|
# %X e.g. 11 minutes 1 second
|
68
|
+
# %Xi e.g. 11 minutes
|
62
69
|
# %c e.g. 00:11:01
|
70
|
+
# %s e.g. 11m # returns the 1st most significant value while
|
71
|
+
# ignoring the remainder
|
63
72
|
#
|
64
73
|
def strfunit(s)
|
65
74
|
|
66
|
-
|
67
|
-
|
75
|
+
# The i switch postfixed to the x or X switch will format the output
|
76
|
+
# without seconds unless there are no minutes.
|
77
|
+
|
78
|
+
s.sub!(/%xi?/) do |x|
|
79
|
+
|
80
|
+
h = to_h
|
81
|
+
a = h.to_a
|
82
|
+
a2 = (a.length > 1 and x[-1][/i$/] and h[:seconds]) ? a[0..-2] : a
|
83
|
+
a2.map {|label, val| val.to_s + label[0]}.join(' ')
|
84
|
+
|
68
85
|
end
|
69
86
|
|
70
|
-
s.sub!(
|
87
|
+
s.sub!(/%Xi?/) do |x|
|
88
|
+
|
89
|
+
h = to_h
|
90
|
+
a = h.to_a
|
91
|
+
a2 = (a.length > 1 and x[-1][/i$/] and h[:seconds]) ? a[0..-2] : a
|
71
92
|
|
72
|
-
|
93
|
+
a2.map do |label, val|
|
73
94
|
|
74
95
|
next if val == 0
|
75
96
|
label2 = val > 1 ? label.to_s : label.to_s.sub(/s$/,'')
|
@@ -87,6 +108,11 @@ class Subunit
|
|
87
108
|
fmt = a.map {|v| "%0" + v.to_s.length.to_s + "d"}.join(":")
|
88
109
|
fmt % to_a
|
89
110
|
end
|
111
|
+
|
112
|
+
s.sub!('%s') do |x|
|
113
|
+
label, val = to_h.first
|
114
|
+
val.to_s + label[0]
|
115
|
+
end
|
90
116
|
|
91
117
|
s
|
92
118
|
end
|
@@ -170,3 +196,4 @@ class Subunit
|
|
170
196
|
unit_list.length > 0 ? [unit] + scan_units(unit_list, subunit) : [unit, subunit]
|
171
197
|
end
|
172
198
|
end
|
199
|
+
|
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.8.
|
4
|
+
version: 0.8.5
|
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:
|
38
|
+
date: 2021-04-07 00:00:00.000000000 Z
|
39
39
|
dependencies: []
|
40
40
|
description:
|
41
41
|
email: james@jamesrobertson.eu
|
@@ -63,7 +63,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '0'
|
65
65
|
requirements: []
|
66
|
-
|
66
|
+
rubyforge_project:
|
67
|
+
rubygems_version: 2.7.10
|
67
68
|
signing_key:
|
68
69
|
specification_version: 4
|
69
70
|
summary: Input a raw unit and it returns the denomination.
|
metadata.gz.sig
CHANGED
Binary file
|