cronspeak 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c575e4f9c61e22498d4f25cde57b2a0f4b3142b7
4
+ data.tar.gz: 200429348a1c36eee21853da19470b6fdfd8c5d1
5
+ SHA512:
6
+ metadata.gz: 69d69d7d07002a455673938f82b06fa062669c4aace6146d106c6312bc3ec2e68c799fb9c98c063383482bccb2c74eab046f1dbb09992ec4ecadb7892d977e51
7
+ data.tar.gz: aeb1f87d9b053ae9fec055bc2af30107b785b51e01537cf66f54fd1fca0202c21cc637803b48e549db2008adb32b03355e4cec9c9af3a8e9c17181b1fddc39bc
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ E|�*�l�P5H�̼-��c�� T�3(Z$e��f�*�p,%zD��'�'x��7U1Ƥ9��HZߜ��ÃZ2"ş #��`/
2
+ @������bgk?#��> !�׀�4_(���F����8���";������=�6�� ��5��,������fѤ�?�
3
+ F� S�K ���-봴��P
data/lib/cronspeak.rb ADDED
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: cronspeak.rb
4
+
5
+ require 'date'
6
+ require 'time'
7
+
8
+ module Ordinal
9
+ refine Fixnum do
10
+
11
+ def ordinal
12
+ self.to_s + ( (10...20).include?(self) ? 'th' : %w{ th st nd rd th th th th th th }[self % 10] )
13
+ end
14
+
15
+ end
16
+ end
17
+
18
+ class CronSpeak
19
+ using Ordinal
20
+
21
+ attr_reader :to_s
22
+
23
+ def initialize(s)
24
+
25
+ @count = 0
26
+ m, h, d, mon, raw_dow = s.scan(/([\d,\*-]+)\s*/).flatten(1)
27
+ dow(raw_dow)
28
+ @to_s = [mins(m), hrs(h), days(d), months(mon)].join
29
+
30
+ end
31
+
32
+ private
33
+
34
+ def mins(m='*')
35
+ "%s minute" % [m.to_i.ordinal]
36
+ end
37
+
38
+ def hrs(h='*')
39
+ return ' of every hour' if h == '*'
40
+ @count += 2
41
+ " of %s%s" % [h, Time.parse(h+':00').strftime("%P")]
42
+ end
43
+
44
+ def days(d='*')
45
+
46
+ r = if @count >= 8 then
47
+ " %s in " % @dow
48
+ elsif d == '*' then
49
+ ' every day'
50
+ else
51
+ @count += 4
52
+ " the %s of" % [d.to_i.ordinal]
53
+ end
54
+
55
+ return r
56
+ end
57
+
58
+ def months(mon='*')
59
+
60
+ r = if mon == '*' then
61
+ if @count < 4 then
62
+ ''
63
+ else
64
+ ' every month'
65
+ end
66
+ else
67
+ s = @count < 8 ? 'of ' : ''
68
+ " %s%s" % [s, Date::MONTHNAMES[mon.to_i]]
69
+ end
70
+
71
+ @count += 16
72
+
73
+ return r
74
+ end
75
+
76
+ def dow(raw_dow='*')
77
+ return '' if raw_dow == '*'
78
+ @count += 8
79
+ @dow = Date::DAYNAMES[raw_dow.to_i] + 's'
80
+ end
81
+
82
+ end
83
+
84
+ if __FILE__ == $0 then
85
+ cs = CronSpeak.new(ARGV[0])
86
+ cs.to_s
87
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cronspeak
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
+ YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
+ 8ixkARkWAmV1MB4XDTE0MDcyODE4NTUxMVoXDTE1MDcyODE4NTUxMVowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBAKorHaDyE7nD6g5weJEzNGGMylBxB8ZhQonaw7VosHaTNr9/T8DTQIL7JC2g
19
+ jiiYGD2x6xtsmcTG98IsiKO+hOcNF/6KNCKv9azDUkKHHJSng59Zd8ISuOg3fLjW
20
+ ZXKk9amtpnpXgLam4EirZVZxznBWrIwoG6tyZ2tpW7xyv5Cg4GZLi+UcrcTTOJdq
21
+ agm85xEc3oBySaZ1F+uZp8ZtLlr9GNiEmBQVt+nVTaneimsyUwvm2c3eM/3uZsGS
22
+ UIFEK1GqyeMVaZD0bjpSjq3Nh5djRPYs2MTjGTMc9wntbxIaKTbZU95c0mgwSndL
23
+ xGM/Hk9+/bhMK0J4WIBx/ZKdtjcCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQU66tf+rrpbCVVkwTnF2FmrLrVdlYwJgYDVR0RBB8w
25
+ HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
+ c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAhiJ2lyRp
27
+ vcYZ4wg7DHbArQfL0te4sVoVWFN2lSg4gel0ZzRDh0qrQWRPIIwLnrPmpb/hfguF
28
+ QWpyQzV92VYhHKni+Mx9uIAuo4PJnTn+pYJx2zQNUNlbHrKRm1Iwj7BSLq8XA3mG
29
+ SvHwmahqNXG3+14ZLba+/BqFbGuXarK6/Axl0S0wwueU1OcgnAe4UE2jf2mwBXBB
30
+ +DIJ5eEj8jLgRhNjkuG8vxHIaJ+NNr6maOFFQ4iu+qKSgioVl5L62UI/6f/4DTiN
31
+ /qxj4jzSVHouRW0P3Zn5Ksu2Nr182B5rd4vXuOR2ZgSLjWu8iQUgGG6Mz6U+bTUO
32
+ Qz3ThjR4bQCxiQ==
33
+ -----END CERTIFICATE-----
34
+ date: 2014-07-28 00:00:00.000000000 Z
35
+ dependencies: []
36
+ description:
37
+ email: james@r0bertson.co.uk
38
+ executables: []
39
+ extensions: []
40
+ extra_rdoc_files: []
41
+ files:
42
+ - lib/cronspeak.rb
43
+ homepage: https://github.com/jrobertson/cronspeak
44
+ licenses:
45
+ - MIT
46
+ metadata: {}
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 2.1.0
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 2.2.2
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Translates a cron expression into natural language
67
+ test_files: []
68
+ has_rdoc:
metadata.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ ������8��'��A}�I�\�/lw?�>6w8[�4��Ҡ��ow{����!)�u��C��X�ܼ�b�6:�"�0�,c-�Ę���p�2N�Y��GO��v��.2��@l]�!����
2
+ P+;��
3
+ ���@�^.���8��@YZyAZ�!�x���K� � ���ph�e��7�?�8�˂��;�&�A��׷5��ď�t,� M�T�mږE,g