cronspeak 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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