reminders_txt 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2db30e2862306c3ce60a7da9be8552c26636f37e
4
+ data.tar.gz: 6a534979be14feee419456c7df3d1e4ea4a63ad2
5
+ SHA512:
6
+ metadata.gz: 139ccb0e21842b3cd7c8cde973c3e4a33e5133fc283f374fcc1372bdbe7937ecec3a4245efdbb29e1bd340de3b5260b9d489a9ad484db38b09bedda78b426fc3
7
+ data.tar.gz: 0b8914d99ff25e82c1978dd8b4a056479d0b9a978b9192690c348ef6e80ec6ee5dc30cd5d5acc8e3b8646a10ac838c2639e54c1947332591c0ff6d669df03414
@@ -0,0 +1,4 @@
1
+ O����z�>��2,��B�7�b~���G,u֔v�x�K�%��Z�
2
+ q ��h��8��
3
+ ނT�_R� zb���drÊp/�[Ț����� s��V���F�N�]�{�=���M�uձ���c�D��d+K�@N�+�E82�1
4
+ T�J��4dv��h|��zV})^��ro�%�!�d~��2�Q�`jF��������o�'�����)�oX�
Binary file
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: reminders_txt.rb
4
+
5
+
6
+ require 'recordx'
7
+ require 'app-routes'
8
+ require 'chronic_cron'
9
+
10
+
11
+ module Ordinals
12
+
13
+ refine Fixnum do
14
+ def ordinal
15
+ self.to_s + ( (10...20).include?(self) ? 'th' :
16
+ %w{ th st nd rd th th th th th th }[self % 10] )
17
+ end
18
+ end
19
+ end
20
+
21
+
22
+
23
+ class RemindersTxt
24
+ include AppRoutes
25
+ using Ordinals
26
+
27
+ attr_reader :expressions
28
+
29
+ def initialize(s, now=Time.now)
30
+
31
+ @raw_input = s
32
+ super()
33
+ @params = {input: s}
34
+ expressions(@params)
35
+ buffer = s[2..-1]
36
+
37
+ @expressions = buffer.inject([]) do |r, x|
38
+ if (x.length > 1) then
39
+ @params[:input] = x
40
+ rx = find_expression(x)
41
+ rx.input = x
42
+ r << rx
43
+ end
44
+ r
45
+ end
46
+ end
47
+
48
+ def refresh()
49
+
50
+ a = @expressions.sort_by do |x|
51
+ x.date.is_a?(Time) ? x.date : Chronic.parse(x.date)
52
+ end
53
+
54
+ @raw_input[0..2].join + a.map(&:input).join()
55
+ end
56
+
57
+ protected
58
+
59
+ def expressions(params)
60
+
61
+
62
+ # some event every 2 weeks
63
+ # some event every 2 weeks at 6am starting from 14th Jan
64
+ # some event every 2 weeks at 6am starting from 18th Feb until 28th Oct
65
+ # some event every 2nd Monday (starting 7th Nov 2016)
66
+ # some event every 2nd Monday (starting 7th Nov until 3rd Dec)
67
+
68
+
69
+ starting = /(?:\(?\s*starting (\d+\w{2} \w+\s*\w*)(?: until (.*))?\s*\))?/
70
+
71
+ get /^(.*)(every \w+ \w+(?: at (\d+am) )?)\s*#{starting}/ do \
72
+ |title, recurring, time, date, end_date|
73
+
74
+ input = params[:input]
75
+
76
+ if recurring =~ /day|week/ then
77
+
78
+ earlier_date = Chronic.parse(date)
79
+ new_date = CronFormat.new(ChronicCron.new(recurring).to_expression, earlier_date).to_time
80
+ input.gsub!(date, new_date.strftime("#{new_date.day.ordinal} %b %Y"))
81
+ date = new_date
82
+ end
83
+
84
+
85
+ RecordX.new input: input, title: title, recurring: recurring, date: date, end_date: end_date
86
+ #[0, title, recurring, time, date, end_date].inspect
87
+ end
88
+
89
+ # some meeting 3rd thursday of the month at 7:30pm
90
+ # some meeting First thursday of the month at 7:30pm
91
+ get /(.*)\s+(\w+ \w+day of (?:the|every) month at .*)/ do |title, recurring|
92
+
93
+ RecordX.new input: '', title: title, recurring: recurring
94
+ #[1, title, recurring].inspect
95
+ end
96
+
97
+ # some important day 24th Mar
98
+ get /(.*)\s+(\d+.*)/ do |title, date|
99
+
100
+ RecordX.new input: '', title: title, date: date
101
+ #[2, title, date].inspect
102
+ end
103
+
104
+ # 27-Mar@1436 some important day
105
+ get /(\d[^\s]+)\s+(.*)/ do |date, title|
106
+
107
+ RecordX.new input: '', title: title, date: date
108
+ #[3, title, date].inspect
109
+ end
110
+
111
+ # e.g. 04-Aug@12:34
112
+ get '*' do
113
+
114
+ 'pattern unrecognised'
115
+ end
116
+
117
+
118
+ end
119
+
120
+ alias find_expression run_route
121
+
122
+ end
123
+
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reminders_txt
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
+ 8ixkARkWAmV1MB4XDTE2MTExMDIwMjE0NVoXDTE3MTExMDIwMjE0NVowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBAMjS2N7kUPBkBd/Xj/NvjMQzkY0KBKxXeAPcmzDpSNCjr8Yz4If7sDXSp68g
19
+ dJm0ywJHCZvZ/fDGPOZgCqh0VUoXDi5j51+0psxBjdPXfdBhA3PzY01s9ju1uDOH
20
+ 1m+GZ5+DEmCetqrw0Ul4KJ5S2WbyYhgOl6s8uJIA4ZwJAfFIsX/BIEF4K+OrGANB
21
+ dmYLVQJgYvyxFZDFypHL57q1BEQl3Vn/sTUeMBjSV0bn6XLXjHw6rO0iN6VLet1k
22
+ p7lcuDy6A8OVmIWE1EF9Uri6PfVJoW5MmpRUbc/QIbkmZQK6PxaZNvRARakYcHO4
23
+ /pRI4LrIm/BEHdzs5DnbQItcN7cCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQUom2NNLWXSNhcYiiudZ6VzKxMEz0wJgYDVR0RBB8w
25
+ HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
+ c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAEWq63XTH
27
+ KjCQkfiRrHLonW8WIYzCIGVjDTwMn6m/kK0ZUEUVffe0Picc75e+XAUmrssx2UXe
28
+ fIm54sxpjy8d1iErCyckn+JX+VH4UbZpQMqWEyPosAp5YmK2BffBxPAKkdJ9tdhE
29
+ DA/kzIkB0UKr2j2gxXJlCU3zeF3fi2c/eg+PziIERT099XlfAzR9k3GOKNr+H0JZ
30
+ 3bFPvyTwPPDowls7GzcFbUtnVuYuAI+L3EORTEvK3pEdNTxNNfjHksfKdMgMMKPy
31
+ n+SSd9dm8JjhZ2pqHtX+bgMZ18hrN06xfR+UPtk5BKC8v1PC0FWxaVR4lom39rFU
32
+ seDxJNsJgamAKg==
33
+ -----END CERTIFICATE-----
34
+ date: 2016-11-10 00:00:00.000000000 Z
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: recordx
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.5'
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 0.5.0
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '0.5'
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.5.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: app-routes
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.1'
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 0.1.18
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '0.1'
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.18
76
+ - !ruby/object:Gem::Dependency
77
+ name: chronic_cron
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.3'
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 0.3.2
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: '0.3'
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 0.3.2
96
+ description:
97
+ email: james@r0bertson.co.uk
98
+ executables: []
99
+ extensions: []
100
+ extra_rdoc_files: []
101
+ files:
102
+ - lib/reminders_txt.rb
103
+ homepage: https://github.com/jrobertson/reminders_txt
104
+ licenses:
105
+ - MIT
106
+ metadata: {}
107
+ post_install_message:
108
+ rdoc_options: []
109
+ require_paths:
110
+ - lib
111
+ required_ruby_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ requirements: []
122
+ rubyforge_project:
123
+ rubygems_version: 2.5.1
124
+ signing_key:
125
+ specification_version: 4
126
+ summary: Reads and updates diary reminders from a plain text file
127
+ test_files: []
@@ -0,0 +1 @@
1
+ ��,�����:�P�i��1Mm� ��u��g��-S+�,�����v(T Z��2�$0��qI��h�V�:�ږǴm��Q[+�L#l��6E���~&�ReV�)�n~U�m9�A9 ��𞼔��۰�j��=%����@�Xr��kǁh�0g�� ��dQ~�eg����p���]�Qf�n��N�i �Y�|� �"�J���Tv����H^Hو&�2�YD��v�z�2c�g��p�����i @��u�˱��!�