subunit 0.4.0 → 0.6.1

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: '08e124b6fa840730ee3a5ce10b514202efcfd344bfa5c4215385bf498399f82a'
4
- data.tar.gz: c7c7e94887df01e5933fe190d60f38509537da53425ebd3ca593c87c1304ee1b
3
+ metadata.gz: dd028dea596b0b1c66609dfa8b77c2daa11276d89ad376341152e01be886c642
4
+ data.tar.gz: 072c31bc3ac9aee1273a19f585b9b757d069d2fe4c365d513110f10998e8b342
5
5
  SHA512:
6
- metadata.gz: 842c22b63b01ef9a54af26a0eb1b65b888a15660ccad1aecaed356a7eca51a465ddaa992f46b80c38a5bbeb11e137f9cfa38eaa90fbda9afce56c93341d3968c
7
- data.tar.gz: 4f423aac15f8155b763fcd9124726baa4343e40216d17673afe61670c9f171d73a337ed9ee534b670c7ac107b9b09fa37251b70b8550f52ce8dffce2bde5bd02
6
+ metadata.gz: 715c798c7d3f207060705728fb7e802e2184bc40ee3902d3bc2601214144f8ba27b839b9474b100a5fd5f956d6bdfb2399d48fb6b6e0936fcd798504fb9fb227
7
+ data.tar.gz: adc7cfebc9b1e1eca8cf334d44d0137e09a675e43532e1293553581609fc8b6f6d4129b60b1a5f32cd4b9baa1796bdcb1c272b26be961c7718c42495e0ac38db
@@ -1,2 +1,2 @@
1
- �Fl� ���V���;�Rh��hZ_�]) ��w�GLЎ�m�'A����]��'92���f����)����i4��MF���l_�?G^�X���A���]R��h����v�2_�G�3����Sc��8��)��Q��( f
2
- w%Rt�ǻ�}j�/���J�O��6���Ô��[E���fb>Q��Ku�`��������KP�-JޚLi$�Ma 0��D>Qf}k�p��vahN��6v"�yH*J�5@����O?RKG��:�Gnq{-#ێ�̱e'�k���
1
+ �,p���4+�F
2
+ N�� &�˸���S�=Ɣv04P��R��9�{�ڑa=9�9��2��V��!��N�6qE`��܌�#sZ(j���}���q��?C��MzS6D���H�KI����ٝ�e���P'��<^����@�����)P��
data.tar.gz.sig CHANGED
Binary file
@@ -6,14 +6,17 @@ class Subunit
6
6
 
7
7
  attr_reader :to_a, :to_h, :to_i
8
8
 
9
- def initialize(raw_units=nil, obj)
9
+ def initialize(raw_units={}, obj)
10
+
11
+ @debug = false
10
12
 
11
13
  if obj.is_a? Array then
12
14
 
13
- a = obj
15
+ a = obj[0..-2]
14
16
  len = raw_units.to_a.length
15
- @to_i = ([0]*(len-1) + a).slice(-(len), len).zip([60, 60, 1])\
17
+ val = ([0]*(len-1) + a).slice(-(len), len).zip(raw_units.values)\
16
18
  .inject(0) {|r,x| r + x.inject(:*) }
19
+ @to_i = val + obj[-1]
17
20
 
18
21
  else
19
22
 
@@ -24,7 +27,49 @@ class Subunit
24
27
  end
25
28
  end
26
29
 
27
- def to_s(omit: [])
30
+ # usage: Subunit.new(units={minutes:60, hours:60}, seconds: 661)\
31
+ # .strfunit("%x") #=> 11m 1s
32
+ #
33
+ # %x e.g. 11m 1s
34
+ # %X e.g. 11 minutes 1 second
35
+ #
36
+ def strfunit(s)
37
+
38
+ s.sub!('%x') do |x|
39
+ to_h.map {|label, val| val.to_s + label[0]}.join(' ')
40
+ end
41
+
42
+ s.sub!('%X') do |x|
43
+
44
+ to_h.map do |label, val|
45
+
46
+ next if val == 0
47
+ label2 = val > 1 ? label.to_s : label.to_s.sub(/s$/,'')
48
+ val.to_s + ' ' + label2
49
+
50
+ end.compact.join(' ')
51
+
52
+ end
53
+
54
+ s
55
+ end
56
+
57
+ def to_s(omit: [], verbose: true)
58
+
59
+ if not verbose then
60
+
61
+ r = self.to_a.reverse.take_while {|x| x > 0}.reverse\
62
+ .map {|x| "%02d" % x}.join(':')
63
+
64
+ if r.length < 2 then
65
+ return '00:00'
66
+ elsif r.length == 2
67
+ return '00:' + r
68
+ else
69
+ return r
70
+ end
71
+
72
+ end
28
73
 
29
74
  h = @to_h
30
75
  omit.each {|x| h.delete x}
@@ -65,12 +110,13 @@ class Subunit
65
110
 
66
111
  val, label = method((u.class.to_s.downcase + '_subunit').to_sym).call(u)
67
112
  units = multiply_units(raw_units.values).reverse
68
- @to_a = a = scan_units(units, val).map(&:to_i).reverse\
69
- .take_while {|x| x != 0}.reverse
113
+ puts 'units: ' + units.inspect if @debug
114
+ @to_a = a = scan_units(units, val).map(&:to_i)
70
115
 
71
- puts 'a: ' + a.inspect
72
- @to_h = Hash[(raw_units.keys.reverse + [label]).reverse.take(a.length)\
73
- .reverse.zip(a)]
116
+ puts 'a: ' + a.inspect if @debug
117
+ pairs = (raw_units.keys.reverse + [label]).reverse.take(a.length)\
118
+ .reverse.zip(a).select {|x| x[1] > 0}
119
+ @to_h = Hash[pairs]
74
120
  end
75
121
 
76
122
  def array_units(raw_units=[], u=nil)
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.4.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwNDI3MjM0ODI3WhcN
15
- MjAwNDI2MjM0ODI3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCmly8w
17
- nwnaeuxVjbw+3wcyGZWeHd3Z7aZmeoRZQR4NHdmkpc0K27epD/UzGDjtDE+EEocz
18
- k9mx6tphpxZgKAZrsmVPLvidQ/sGa2RnbihsXBJrPgNLLONh+6jD5hMIYgah9T4w
19
- qeGiC4O6S+m4W66ISTVqxB2cUWBnsBb/54P5NwvvBAW7/JRRNeRMRKMgmTcAcTKn
20
- UQkGwUeLwUuTP3W6GsimQIBy+U4cmhH4jAlrS6eblKgrn3L9900TjdX+UPLMD7YN
21
- GZ8Ju7LnUerYsMtIG9mQNBurWNha1eoxwgshy4wyqZmALqf97KyBFiFUMDL5C98T
22
- pjJQatMMRHE68PeNyH1VQiYqoM6WIJ/l5tIvK3tyBDevwc+M/ZeMz+MQ5MNYbRqa
23
- SHvAB5GErCVy8vTmdr5AgyrZAOuZgp4N8g0BGbCKswyb9nSfjtKzz49F3xjZBCIz
24
- t+JqHb+27kpsVGjnRBBxePz3G6kN0r+xjYmVTw3z54lVkd1ZkXS3iMNpI28CAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUqD2uZD/n
26
- hNsUWtYl8NVrrdIwjkswJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNjExMTMxNTI0WhcN
15
+ MjEwNjExMTMxNTI0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDYDasD
17
+ frBDuzdjPpkYhCiMX91fqK5KPRp1SD8Wms+WXaLYTqyK2bWSWarsGVuYmKculwT0
18
+ Am6q5L99yRPvYJmxNcd42V2+FuYmPtXTwi4aeiV8uuIFHqABp73fv6EYFdIfrRvC
19
+ Ws0ZH5+xjTbPNoewXWfi6JeXuWiM3aA89g8AX9PHaZY9lNN2cNC77kkxbcmDkwCK
20
+ H4aOIlbscw85T4L7neA78b01WaNcGr6TnQeUYTrae7viihb3E1CQVWcg/N4e3yMV
21
+ km1eArbQYCnp4nkRyonsNTlUoWc0tVxF/ilemZBXiMaubNi81CVEIQHHjDVNbfyS
22
+ +6mFmwKhII55CqyFq+NwqLNgVUVxTnXEFJvKAhjWbnUUmnXgtsk9cHzyMaFl4YOK
23
+ Fx8RLiXqIREfnNmSg4P5gpYnAcm58UcXoraZiAJUKA6ntU1FIOrShzHj8IqtXvRu
24
+ FDbS8jAhda67n1gbVUMs2OY/sogmFGVKFO5xVarD35/BtzgfRNQK1wU4Yy8CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUOf0mcfDe
26
+ dXRdAXtTj85vBERBHqUwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAIo0lK1UpmDF+a9y4oLHlYCUkHNRfkHNmA0Wkvx+U
29
- Ml/F2fyaF6ExNEwFZ9XZ+FWThdVRZpkuu9hunyZrCJrpgs4o3M8OOtDd1tcGFwsj
30
- 3IwuYidg/sretOxbhpcQKR93w2p92u+MinU/apW4jejXh5F8xUbhrnxPve2uV6fV
31
- aSmtdmLGgm4SOirBdHXO9zawBHJ8GHuz602+50HI59ZsiCxZAuptwZ8j4eqhVPYl
32
- CzN7nh5QS4r112EFcMPdsxOaHHAdQydNs376B1qaJFDTojpT5m/sfFtGx5ocbnwH
33
- bPVa0pPkosjZkV6ukvwlB8QihsgQwghL+a6KGU3QX6TrxWqVXhtUvLoKn/Q50WkX
34
- 0zZl4P6AtMjsjyockIUHpjLWfwqyoFZ9ESVTuDx3+A+CLO0YlCNfgP7Xh1ekFXzq
35
- uGMIl8BnWCNm49x3eEN3MwPmBFKRKxYN/IIRsudfZiknlmLh52qBTQhzRuYAxgGQ
36
- fvWjyxD+tAUHP6u1I7g+su4C
28
+ BgkqhkiG9w0BAQsFAAOCAYEAhaQ9BCV0ZKQeCdslSmkOLWKzKk6rffiOYUTQaqdv
29
+ FxLZb7I7ug6uzZdtdb7Y7yGgXes+Z0zR6VhNSwWlpFcHSIznWYJh5e6ET/3lDetk
30
+ wk204TgTuLDPA3USRS5BKWKi1sdqnWXJVLynJCZPIyV7ilbFKSl77Wa8IwWjyj7g
31
+ F05N7bMe3g0vECYHFBJJWCfy2d6jcv0/GG0BwEsLf91LwVg5bIAJ481EaWaKseWR
32
+ PAmD0vI08ssZY68aO08XgHP1JTLDXYeTqMS5BGeFWCkKhjlLnH+pamLB6lTD4ojL
33
+ uBZU7l7zO3ksoWsWIIp1bhvSZHE5sCaZmOKXPSN4gW065ieajGR0Ccv7k6JZK8pC
34
+ skCxe0yd2TnDrW5R51ocplcGDzryzTdvzaI4af8OQUWwshF+Ad7x4J7jdyu3WK1B
35
+ HowcHg4GymtLLITCF/QtA5tta5SmHAca1POGncsO9QiramFQ9S3Q4O4wcjboVJOp
36
+ SSxk4InmYoY9Cl2GVQ+d9owo
37
37
  -----END CERTIFICATE-----
38
- date: 2019-05-03 00:00:00.000000000 Z
38
+ date: 2020-09-12 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
41
  email: james@jamesrobertson.eu
@@ -63,8 +63,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0'
65
65
  requirements: []
66
- rubygems_version: 3.0.1
66
+ rubygems_version: 3.0.3
67
67
  signing_key:
68
68
  specification_version: 4
69
- summary: subunit
69
+ summary: Input a raw unit and it returns the denomination.
70
70
  test_files: []
metadata.gz.sig CHANGED
Binary file