subunit 0.5.1 → 0.6.3

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: e37055bb45fcbc79062342381126b101118521d8a567b27d3a35771774a9acd6
4
- data.tar.gz: a4b86b164ccbff2d7cde9918a86edf8caacde4d744764d0260cc403547aa21e8
3
+ metadata.gz: c7a64793ef4eba6cac4a1531741c33b7fa51aeda34b953aef7d9aa50ec5da41c
4
+ data.tar.gz: b04dcb7003593336c817eda62f688bfea39ddc202f2ca475bfd7f90773692d80
5
5
  SHA512:
6
- metadata.gz: 9d4da753cf22b01795e0b8a6b97586d028287285ebb3aaf0c7d35c05c623b99dd4384402537c7a1cb890e786ea6b22ec31ccbcd1fc1a4c93d4763861978162a5
7
- data.tar.gz: c059d56a367ca18712cdcae402509fd5770c44d464ada14f035aaabb9d0c272d5e33dd3d88776abee4a56cf92834f40a91e13242af4455bd87d22f155f4d66b7
6
+ metadata.gz: bd7d5da340137fe3d9f5e486f535df23693e16dfa4988e2e7716549623128bde2c8e17300dd2870cd96636061d007c44181256d952d5fc89022904f76ccc13eb
7
+ data.tar.gz: 60c40f49bcb37b9dffa884978162eb633823df1f98c396772975aba91f0d1267d1403604df532ffd422832d2d4c74e2399a3b4c9c9dd8c421fea3e7c669a3825
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -3,6 +3,10 @@
3
3
  # file: subunit.rb
4
4
 
5
5
  class Subunit
6
+
7
+ def self.seconds(val)
8
+ new(units={minutes:60, hours:60}, seconds: val)
9
+ end
6
10
 
7
11
  attr_reader :to_a, :to_h, :to_i
8
12
 
@@ -10,12 +14,15 @@ class Subunit
10
14
 
11
15
  @debug = false
12
16
 
17
+ @raw_units = raw_units
18
+
13
19
  if obj.is_a? Array then
14
20
 
15
- a = obj
21
+ a = obj[0..-2]
16
22
  len = raw_units.to_a.length
17
- @to_i = ([0]*(len-1) + a).slice(-(len), len).zip([60, 60, 1])\
23
+ val = ([0]*(len-1) + a).slice(-(len), len).zip(raw_units.values)\
18
24
  .inject(0) {|r,x| r + x.inject(:*) }
25
+ @to_i = val + obj[-1]
19
26
 
20
27
  else
21
28
 
@@ -26,11 +33,58 @@ class Subunit
26
33
  end
27
34
  end
28
35
 
36
+ # usage: Subunit.new(units={minutes:60, hours:60}, seconds: 661)\
37
+ # .strfunit("%x") #=> 11m 1s
38
+ #
39
+ # %x e.g. 11m 1s
40
+ # %X e.g. 11 minutes 1 second
41
+ # %c e.g. 00:11:01
42
+ #
43
+ def strfunit(s)
44
+
45
+ s.sub!('%x') do |x|
46
+ to_h.map {|label, val| val.to_s + label[0]}.join(' ')
47
+ end
48
+
49
+ s.sub!('%X') do |x|
50
+
51
+ to_h.map do |label, val|
52
+
53
+ next if val == 0
54
+ label2 = val > 1 ? label.to_s : label.to_s.sub(/s$/,'')
55
+ val.to_s + ' ' + label2
56
+
57
+ end.compact.join(' ')
58
+
59
+ end
60
+
61
+ s.sub!('%c') do |x|
62
+
63
+ a = @raw_units.values.reverse
64
+ a << a[-1]
65
+
66
+ fmt = a.map {|v| "%0" + v.to_s.length.to_s + "d"}.join(":")
67
+ fmt % to_a
68
+ end
69
+
70
+ s
71
+ end
72
+
29
73
  def to_s(omit: [], verbose: true)
30
74
 
31
75
  if not verbose then
32
- return self.to_a.reverse.take_while {|x| x > 0}.reverse\
33
- .map {|x| "%02d" % x}.join(':')
76
+
77
+ r = self.to_a.reverse.take_while {|x| x > 0}.reverse\
78
+ .map {|x| "%02d" % x}.join(':')
79
+
80
+ if r.length < 2 then
81
+ return '00:00'
82
+ elsif r.length == 2
83
+ return '00:' + r
84
+ else
85
+ return r
86
+ end
87
+
34
88
  end
35
89
 
36
90
  h = @to_h
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.5.1
4
+ version: 0.6.3
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-07-27 00:00:00.000000000 Z
38
+ date: 2020-09-14 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
41
  email: james@jamesrobertson.eu
metadata.gz.sig CHANGED
Binary file