subunit 0.2.5 → 0.5.0

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
- SHA1:
3
- metadata.gz: 59b28aaf42c101bca335b4dd7959a47cc813569e
4
- data.tar.gz: 77edd25cabe13cf5b3bd6f7b34545e1e87b1e114
2
+ SHA256:
3
+ metadata.gz: 6f79f4af50bd21b1fbc2ab5d0f182604abdaccd2d71635a2de7608f0284b30b1
4
+ data.tar.gz: b0250717312d90e88426144fb0f5d52777302c84a7557784741bf6b0340d26f2
5
5
  SHA512:
6
- metadata.gz: 9f865a794cb2395acc11d92947f7adf908a45752f8ce1f5861aa1eee2774ad3bdbd3faa895e1ff3ddc4e3c45d2ed0a4ad2310824064458a8329ffb66d4e43e05
7
- data.tar.gz: 9fa312bde243b26ced1dd6d7b7f457c253762f1e45a142ef5fdc7885f7b61708b59db62ff77e638604d239c6eda5c71d9c903d26afb2676429386d0b117a94a7
6
+ metadata.gz: 4ae5c071276ca33df749097b7f0afbf603fd74073fc13063282d4b436be27464f683dc1c5f29081c9eb204274e68980aeb98a5b53534027e41acf59390966387
7
+ data.tar.gz: 186200ad80cefe4fd019e1c975db08b0461bed1405e49d78a77056cb437cc62866f79e078e42fb7844c3a7de8e32730ea6ad624cf972dc3001608b949fee3fd7
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,12 +1,52 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/env ruby
2
+
2
3
  # file: subunit.rb
3
4
 
4
5
  class Subunit
5
6
 
6
- attr_reader :to_a, :to_h
7
+ attr_reader :to_a, :to_h, :to_i
7
8
 
8
- def initialize(raw_units=nil, raw_subunit=0)
9
- method((raw_units.class.to_s.downcase + '_units').to_sym).call(raw_units, raw_subunit)
9
+ def initialize(raw_units={}, obj)
10
+
11
+ @debug = false
12
+
13
+ if obj.is_a? Array then
14
+
15
+ a = obj
16
+ len = raw_units.to_a.length
17
+ @to_i = ([0]*(len-1) + a).slice(-(len), len).zip([60, 60, 1])\
18
+ .inject(0) {|r,x| r + x.inject(:*) }
19
+
20
+ else
21
+
22
+ raw_subunit = obj || 0
23
+ method((raw_units.class.to_s.downcase + '_units').to_sym)\
24
+ .call(raw_units, raw_subunit)
25
+
26
+ end
27
+ end
28
+
29
+ def to_s(omit: [])
30
+
31
+ h = @to_h
32
+ omit.each {|x| h.delete x}
33
+
34
+ list = h.to_a
35
+ n = list.find {|_,v| v > 0 }
36
+ a = list[list.index(n)..-1].map {|x|"%d %s" % x.reverse}
37
+
38
+ duration = case a.length
39
+
40
+ when 1
41
+ a.first
42
+ when 2
43
+ a.join ' and '
44
+ else
45
+ "%s and %s" % [a[0..-2].join(', '), a[-1]]
46
+ end
47
+
48
+ duration.gsub(/(\b1 \w+)s/, '\1')
49
+
10
50
  end
11
51
 
12
52
  private
@@ -24,10 +64,16 @@ class Subunit
24
64
  end
25
65
 
26
66
  def hash_units(raw_units={}, u=nil)
67
+
27
68
  val, label = method((u.class.to_s.downcase + '_subunit').to_sym).call(u)
28
69
  units = multiply_units(raw_units.values).reverse
29
- @to_a = scan_units(units, val).map(&:to_i)
30
- @to_h = Hash[(raw_units.keys.reverse + [label]).zip(@to_a)]
70
+ puts 'units: ' + units.inspect if @debug
71
+ @to_a = a = scan_units(units, val).map(&:to_i)
72
+
73
+ puts 'a: ' + a.inspect if @debug
74
+ pairs = (raw_units.keys.reverse + [label]).reverse.take(a.length)\
75
+ .reverse.zip(a).select {|x| x[1] > 0}
76
+ @to_h = Hash[pairs]
31
77
  end
32
78
 
33
79
  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.2.5
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,31 +10,35 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTE2MTIyNTExNDQwNVoXDTE3MTIyNTExNDQwNVowSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBAN3LWwG+dRPJguokUCPxtB873JyfNUU/sYL96sRbk8xX+V2iLNwKOhupqCkh
19
- RtnG4DTjc1fGlaXs9cbukAjyFmjrv1+ZmMyTZebB8rJkD7BL0pj8KQgwWVJ05RYN
20
- cZNeoWM85ccdq2yYUzSSKc26x74HSroguaeodo3C6fbb2XGDJnS/Ffx3VR4OVfxl
21
- eBna6huFepp4BUnPn0PKqrgva1SXFPkFU3O9tcPB1QCMGC3RejdC9VLclzeJjGNC
22
- j3kQYsdFmcO8O9Ns4+iabdIcpWJbEapn493q80VCkI31G/jYzZ9NnP5/lcPDk7BK
23
- Zxv87spidXj/RFjOjoTt4wKjpzkCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQUWTh7hU/yB/3up7nOiIh0dpOzNjEwJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAhZz/3Gi0
27
- 1qrGlu+UUVk7LL3zKSqmldcVZs7Rb8P4Tk1zbqNgrwA2xmTOlmAkeOLSHQ0djjnZ
28
- z+V5uNZ2RZ1qe5jnMkR34dkQrQ4aJIHABaMIiXATR+A1xY9bGiwFaoqQdqCXW8D9
29
- arSsyB4V/BODb8XG9e0OUYVj2yfJgWPELKXBc7N7EiQ+pxZbCWMVKJplXMspt2vm
30
- MktgVQiDwDUH523sDXFcWBOpxGqCTd8Rn9pHeeR5O0TOGv+HhKQwp96/q3BXWJYV
31
- jRLTmInXW6D2qCYhnTg1lnKahOHZwk3PSyvv3fUBYiwNQJBumSY95yvIoZpFjRNc
32
- UlPQMCJOB3GcUw==
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
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
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
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
33
37
  -----END CERTIFICATE-----
34
- date: 2016-12-25 00:00:00.000000000 Z
38
+ date: 2020-06-11 00:00:00.000000000 Z
35
39
  dependencies: []
36
40
  description:
37
- email: james@r0bertson.co.uk
41
+ email: james@jamesrobertson.eu
38
42
  executables: []
39
43
  extensions: []
40
44
  extra_rdoc_files: []
@@ -60,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
64
  version: '0'
61
65
  requirements: []
62
66
  rubyforge_project:
63
- rubygems_version: 2.5.1
67
+ rubygems_version: 2.7.10
64
68
  signing_key:
65
69
  specification_version: 4
66
70
  summary: subunit
metadata.gz.sig CHANGED
@@ -1,4 +1 @@
1
- ٱ\��?oo�X� ��>�����2Pw" 0h�bx��jJ]�;Ř�1E��P6�
2
- ��׳��y�(���8�k��
3
- ��v��9�Fg�VK^�'j�}�Wш'��DŽ���]qD��grb��WoA�� �`U%��'1�<��p���sq�;=��d�>z�^^w���`��F��X��7��\����A�br6s+�Va�����M�ǃr~rW�xPQ�#pb�e�
4
- '�r}5�*XIw�+z
1
+ Qr1��*���'�)�|����X�������#+dzB�:�;YQUI}����\�Cւf]E%<���Y��Tm�5�~p}!