subunit 0.5.1 → 0.6.3

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: 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