subunit 0.3.0 → 0.6.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
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