reminders_txt 0.3.6 → 0.3.7
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/reminders_txt.rb +112 -85
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1092a4de1fbdc34444d6d9dcb92bea5e4fbf73d4
|
4
|
+
data.tar.gz: 5f1f05c6a3c8b8d0b744c39b14cdae771f24eb5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2a84c28265f0c7e9c038927e4e0aafde74a6f625797efb24397ed6148ea6d0990754420bc2c82c55e2a3b11514c009b7651121f990e9b40aae7f319aa0a42f6
|
7
|
+
data.tar.gz: bd863d4f8fd03ec2bb558ed0190c88d938936c0939b81926570130e1ca9940ba424fccc51eacbfe3afa7cc8e3e574af086451f6c19bc37fe66ba3d4c02aeb793
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/reminders_txt.rb
CHANGED
@@ -27,101 +27,38 @@ class RemindersTxt
|
|
27
27
|
|
28
28
|
attr_reader :reminders
|
29
29
|
|
30
|
-
def initialize(
|
31
|
-
dxfilepath: 'reminders.xml')
|
32
|
-
|
33
|
-
|
34
|
-
s = File.read filename
|
35
|
-
@file_contents, @filename = s, filename
|
36
|
-
@now = now
|
37
|
-
|
38
|
-
Dir.chdir File.dirname(filename)
|
39
|
-
|
40
|
-
@dxfilepath = dxfilepath
|
41
|
-
|
42
|
-
super()
|
43
|
-
@params = {}
|
44
|
-
expressions(@params)
|
45
|
-
buffer = s.lines[2..-1]
|
30
|
+
def initialize(filepath='reminders.txt', now: Time.now)
|
46
31
|
|
47
|
-
|
48
|
-
if (x.length > 1) then
|
49
|
-
@params[:input] = x.strip
|
50
|
-
rx = find_expression(x)
|
51
|
-
r << rx
|
52
|
-
end
|
53
|
-
r
|
54
|
-
end
|
55
|
-
|
56
|
-
@updated = false
|
57
|
-
|
58
|
-
update()
|
59
|
-
end
|
60
|
-
|
61
|
-
def save_dx()
|
32
|
+
super()
|
62
33
|
|
63
|
-
|
64
|
-
|
65
|
-
@reminders.each {|x| dx.create x.to_h}
|
66
|
-
dx.save @dxfilepath
|
34
|
+
@now = now
|
35
|
+
@filepath = filepath
|
67
36
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
# if XML file doesn't exist, create it
|
74
|
-
|
75
|
-
if File.exists? @dxfilepath then
|
76
|
-
|
77
|
-
dx = Dynarex.new @dxfilepath
|
78
|
-
|
79
|
-
@reminders.each do |reminder|
|
80
|
-
s = reminder.input
|
81
|
-
r = dx.find_by_input s
|
82
|
-
|
83
|
-
# it is on file and it's not an annual event?
|
84
|
-
# use the date from file if the record exists
|
85
|
-
|
86
|
-
reminder.date = (r and not s[/\*$/]) ? Date.parse(r.date) : \
|
87
|
-
reminder.date.to_date
|
88
|
-
|
89
|
-
end
|
90
|
-
|
37
|
+
if File.extname(filepath) == '.txt' then
|
38
|
+
import_txt(filepath)
|
39
|
+
refresh()
|
40
|
+
else
|
41
|
+
@dx = Dynarex.new filepath
|
91
42
|
end
|
43
|
+
end
|
92
44
|
|
93
|
-
|
94
|
-
@
|
95
|
-
|
96
|
-
@reminders.sort_by!(&:date)
|
97
|
-
|
98
|
-
|
99
|
-
# did the reminders change?
|
100
|
-
|
101
|
-
h1 = (Digest::MD5.new << self.to_s).to_s
|
102
|
-
h2 = (Digest::MD5.new << @file_contents).to_s
|
103
|
-
|
104
|
-
b = h1 != h2
|
105
|
-
|
106
|
-
if b then
|
107
|
-
|
108
|
-
save_dx()
|
109
|
-
File.write @filename, self.to_s
|
110
|
-
@updated = true
|
111
|
-
end
|
112
|
-
|
113
|
-
[:refresh, b]
|
114
|
-
|
45
|
+
def upcoming(ndays=5, days: ndays)
|
46
|
+
@dx.filter {|x| Date.parse(x.date) <= Date.today + days}
|
115
47
|
end
|
48
|
+
|
49
|
+
def updated?()
|
50
|
+
@updated
|
51
|
+
end
|
116
52
|
|
117
53
|
def to_s()
|
118
|
-
|
54
|
+
|
55
|
+
filename = File.basename(@filepath).sub(/\.xml$/, '.txt')
|
56
|
+
[filename, '=' * filename.length, '', *@dx.all.map(&:input)].join("\n")
|
57
|
+
|
119
58
|
end
|
120
59
|
|
121
|
-
|
122
|
-
|
123
|
-
def updated?()
|
124
|
-
@updated
|
60
|
+
def to_xml()
|
61
|
+
@dx.to_xml pretty: true
|
125
62
|
end
|
126
63
|
|
127
64
|
protected
|
@@ -238,4 +175,94 @@ class RemindersTxt
|
|
238
175
|
|
239
176
|
alias find_expression run_route
|
240
177
|
|
178
|
+
private
|
179
|
+
|
180
|
+
def import_txt(filepath)
|
181
|
+
|
182
|
+
s = File.read filepath
|
183
|
+
@file_contents, @filename = s, File.basename(filepath)
|
184
|
+
|
185
|
+
#Dir.chdir File.dirname(filename)
|
186
|
+
|
187
|
+
@dxfilepath = filepath.sub(/.txt$/,'.xml')
|
188
|
+
|
189
|
+
|
190
|
+
@params = {}
|
191
|
+
expressions(@params)
|
192
|
+
buffer = s.lines[2..-1]
|
193
|
+
|
194
|
+
@reminders = buffer.inject([]) do |r, x|
|
195
|
+
if (x.length > 1) then
|
196
|
+
@params[:input] = x.strip
|
197
|
+
rx = find_expression(x)
|
198
|
+
r << rx
|
199
|
+
end
|
200
|
+
r
|
201
|
+
end
|
202
|
+
|
203
|
+
@updated = false
|
204
|
+
|
205
|
+
refresh()
|
206
|
+
|
207
|
+
end
|
208
|
+
|
209
|
+
# synchronise with the XML file and remove any expired dates
|
210
|
+
#
|
211
|
+
def refresh()
|
212
|
+
|
213
|
+
|
214
|
+
# if XML file doesn't exist, create it
|
215
|
+
|
216
|
+
if File.exists? @dxfilepath then
|
217
|
+
|
218
|
+
@dx = Dynarex.new @dxfilepath
|
219
|
+
|
220
|
+
@reminders.each do |reminder|
|
221
|
+
s = reminder.input
|
222
|
+
r = @dx.find_by_input s
|
223
|
+
|
224
|
+
# it is on file and it's not an annual event?
|
225
|
+
# use the date from file if the record exists
|
226
|
+
|
227
|
+
reminder.date = (r and not s[/\*$/]) ? Date.parse(r.date) : \
|
228
|
+
reminder.date.to_date
|
229
|
+
|
230
|
+
end
|
231
|
+
|
232
|
+
end
|
233
|
+
|
234
|
+
# delete expired non-recurring reminders
|
235
|
+
@reminders.reject! {|x| x.date.to_time < @now if not x.recurring }
|
236
|
+
|
237
|
+
@reminders.sort_by!(&:date)
|
238
|
+
|
239
|
+
|
240
|
+
# did the reminders change?
|
241
|
+
|
242
|
+
h1 = (Digest::MD5.new << self.to_s).to_s
|
243
|
+
h2 = (Digest::MD5.new << @file_contents).to_s
|
244
|
+
|
245
|
+
b = h1 != h2
|
246
|
+
|
247
|
+
if b then
|
248
|
+
|
249
|
+
save_dx()
|
250
|
+
File.write @filename, self.to_s
|
251
|
+
@updated = true
|
252
|
+
end
|
253
|
+
|
254
|
+
[:refresh, b]
|
255
|
+
|
256
|
+
end
|
257
|
+
|
258
|
+
def save_dx()
|
259
|
+
|
260
|
+
@dx = Dynarex.new(
|
261
|
+
'reminders/reminder(input, title, recurring, date, end_date)')
|
262
|
+
@reminders.each {|x| @dx.create x.to_h}
|
263
|
+
@dx.save @dxfilepath
|
264
|
+
|
265
|
+
end
|
266
|
+
|
267
|
+
|
241
268
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reminders_txt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
n+SSd9dm8JjhZ2pqHtX+bgMZ18hrN06xfR+UPtk5BKC8v1PC0FWxaVR4lom39rFU
|
32
32
|
seDxJNsJgamAKg==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2016-
|
34
|
+
date: 2016-12-24 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: dynarex
|
metadata.gz.sig
CHANGED
Binary file
|