subunit 0.2.5 → 0.5.0

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
- 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}!