subunit 0.3.0 → 0.6.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
2
  SHA256:
3
- metadata.gz: e072b264f9489f8a361bb112ee55674252c390a0cf2baf4089ae6db19ebcd24d
4
- data.tar.gz: e31e73f50fcbce96a7b9e81dd214b87c005af891d7b22d32aa33a9944f0aa06c
3
+ metadata.gz: 91907a5881a1b4f38c855693b78cd72c7ab944edc8370b78922ac261bfdf8165
4
+ data.tar.gz: b0ecdcfe9761bceb2abfab49fd353e56cc6809590a4047cc26af262bf38ba0d7
5
5
  SHA512:
6
- metadata.gz: 732e3a771d27ae1228a4885d9778af05da349b788472fa9d15397a368cf5b8d0bb7829eb1bf76a069178bfc0775ae78cf599e0bd217aeec8eb749fd03fa1b56a
7
- data.tar.gz: 138e09917e9d2b8679bb915350bab515d26c21e8561d89b1bae9cb951f22e68456cfef9753ad93ac1e116ace828b8e5169d14603df789b3b1f337891cad57fb9
6
+ metadata.gz: 4a653b499f5d8521dc18c488c804f5506a2120ce2255e2b5cd027dc64ac7b4104f719e9e12bb4d9109c976b3990995ee6a1ed39183f488b5df7d00905e890a68
7
+ data.tar.gz: 6f4b1109dce2045afdd768478feac71a9990a098e2be27669e4ee3282e1f850e6e3d5d8f5ac3bffbc477867f552ebd61fe14e4b24aa79a5e509cb4c096553ba5
Binary file
data.tar.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- q����<i֛��z��E9��ߊ�-Sta 8E�����זc�{�����:eB�o�L#�Jce��ҁy���N���߰�h�p3�sj. f ���7�;�p�n� �������;����W��;d�"3��r\�a႑��Ʀڵ٤A��o �O�^C�9�����P8@�����LyH%9�=o��Wʦ?�c�V��R~�|�L+�x�H�m����洛C��P�K�x��(�ф�pB�����'�.�,0І}*��'׹jg�Y~�k23 ��ؼM�������W�!�)8��inc�1���P��D2�)v_�C��1R�3,�D��
2
- 
1
+ G�|��Rdo�&kZ�C��0��� g8wM��$���=Sm"F׮:)�
2
+ J�֖0�uXڑ��$�L��o�����8`�Z����C��D��= ��1y��M�u��\L6�LN*�_UO9�+�~Z2e-�>˅�5�l9�Z�oGA/�2J�c�c^�ϓZZ���{Fy<���Dᣳ;X�L2�o�&�x��7m<��b���lE��ϋ�Ӯ��=0�߻J��e��g{>o���XӅbc(4Wo���QX�+�?i)!���u�%��Jmm�����l�ʽ�� �������e=hz��W�c�LI�r �Ќ��
3
+
@@ -4,13 +4,55 @@
4
4
 
5
5
  class Subunit
6
6
 
7
- attr_reader :to_a, :to_h
7
+ attr_reader :to_a, :to_h, :to_i
8
8
 
9
- def initialize(raw_units=nil, raw_subunit=0)
10
- 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[0..-2]
16
+ len = raw_units.to_a.length
17
+ val = ([0]*(len-1) + a).slice(-(len), len).zip(raw_units.values)\
18
+ .inject(0) {|r,x| r + x.inject(:*) }
19
+ @to_i = val + obj[-1]
20
+
21
+ else
22
+
23
+ raw_subunit = obj || 0
24
+ method((raw_units.class.to_s.downcase + '_units').to_sym)\
25
+ .call(raw_units, raw_subunit)
26
+
27
+ end
28
+ end
29
+
30
+ # usage: Subunit.new(units={minutes:60, hours:60}, seconds: 661)\
31
+ # .strfunit("%x") #=> 11m 1s
32
+ #
33
+ def strfunit(s)
34
+
35
+ s2 = to_h.map {|label, val| val.to_s + label[0]}.join(' ')
36
+ s.sub('%x', s2)
37
+
11
38
  end
12
39
 
13
- def to_s(omit: [])
40
+ def to_s(omit: [], verbose: true)
41
+
42
+ if not verbose then
43
+
44
+ r = self.to_a.reverse.take_while {|x| x > 0}.reverse\
45
+ .map {|x| "%02d" % x}.join(':')
46
+
47
+ if r.length < 2 then
48
+ return '00:00'
49
+ elsif r.length == 2
50
+ return '00:' + r
51
+ else
52
+ return r
53
+ end
54
+
55
+ end
14
56
 
15
57
  h = @to_h
16
58
  omit.each {|x| h.delete x}
@@ -51,12 +93,13 @@ class Subunit
51
93
 
52
94
  val, label = method((u.class.to_s.downcase + '_subunit').to_sym).call(u)
53
95
  units = multiply_units(raw_units.values).reverse
54
- @to_a = a = scan_units(units, val).map(&:to_i).reverse\
55
- .take_while {|x| x != 0}.reverse
96
+ puts 'units: ' + units.inspect if @debug
97
+ @to_a = a = scan_units(units, val).map(&:to_i)
56
98
 
57
- puts 'a: ' + a.inspect
58
- @to_h = Hash[(raw_units.keys.reverse + [label]).reverse.take(a.length)\
59
- .reverse.zip(a)]
99
+ puts 'a: ' + a.inspect if @debug
100
+ pairs = (raw_units.keys.reverse + [label]).reverse.take(a.length)\
101
+ .reverse.zip(a).select {|x| x[1] > 0}
102
+ @to_h = Hash[pairs]
60
103
  end
61
104
 
62
105
  def array_units(raw_units=[], u=nil)
@@ -73,3 +116,4 @@ class Subunit
73
116
  unit_list.length > 0 ? [unit] + scan_units(unit_list, subunit) : [unit, subunit]
74
117
  end
75
118
  end
119
+
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.3.0
4
+ version: 0.6.0
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-04-27 00:00:00.000000000 Z
38
+ date: 2020-09-05 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