reminders_txt 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2db30e2862306c3ce60a7da9be8552c26636f37e
4
- data.tar.gz: 6a534979be14feee419456c7df3d1e4ea4a63ad2
3
+ metadata.gz: 7833e42aea7e1c22ce822a700b512ce739bda483
4
+ data.tar.gz: 47908e11f918d4d85f429d24e58f3bd8ca3cb05e
5
5
  SHA512:
6
- metadata.gz: 139ccb0e21842b3cd7c8cde973c3e4a33e5133fc283f374fcc1372bdbe7937ecec3a4245efdbb29e1bd340de3b5260b9d489a9ad484db38b09bedda78b426fc3
7
- data.tar.gz: 0b8914d99ff25e82c1978dd8b4a056479d0b9a978b9192690c348ef6e80ec6ee5dc30cd5d5acc8e3b8646a10ac838c2639e54c1947332591c0ff6d669df03414
6
+ metadata.gz: ced8f17dd7096cfe9b7d92a1925ad3c9257f3c5f4a707242d1d7efbf0926abd0faf471ee30288104bc953ff994c267b2587896f8397fd55caba909958b680e0e
7
+ data.tar.gz: 329aba39a779adfa91c9eb0e98e9192023b9ec0452e73bfbfa5e6a2f2e3f555a7ce9368046a99b6d76c1180fa736b6ccb498104fedc6a5e1f98ace2e41f54c24
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -3,7 +3,7 @@
3
3
  # file: reminders_txt.rb
4
4
 
5
5
 
6
- require 'recordx'
6
+ require 'dynarex'
7
7
  require 'app-routes'
8
8
  require 'chronic_cron'
9
9
 
@@ -26,33 +26,80 @@ class RemindersTxt
26
26
 
27
27
  attr_reader :expressions
28
28
 
29
- def initialize(s, now=Time.now)
29
+ def initialize(s, now: Time.now, dxfilepath: 'reminders.xml')
30
30
 
31
31
  @raw_input = s
32
+ @now = now
33
+
34
+ Dir.chdir File.dirname(dxfilepath) if dxfilepath
35
+
36
+ @dxfilepath = dxfilepath
37
+
32
38
  super()
33
39
  @params = {input: s}
34
40
  expressions(@params)
35
41
  buffer = s[2..-1]
36
42
 
37
- @expressions = buffer.inject([]) do |r, x|
43
+ @reminders = buffer.inject([]) do |r, x|
38
44
  if (x.length > 1) then
39
- @params[:input] = x
45
+ @params[:input] = x.strip
40
46
  rx = find_expression(x)
41
- rx.input = x
47
+ rx.input = x.strip
42
48
  r << rx
43
49
  end
44
50
  r
45
51
  end
52
+
53
+ update()
54
+ end
55
+
56
+ def create_dx()
57
+
58
+ dx = Dynarex.new('reminders/reminder(input, title, recurring, date, end_date)')
59
+ @reminders.each {|x| dx.create x.to_h}
60
+ dx.save @dxfilepath
61
+
46
62
  end
47
63
 
48
64
  def refresh()
49
65
 
50
- a = @expressions.sort_by do |x|
51
- x.date.is_a?(Time) ? x.date : Chronic.parse(x.date)
66
+ @reminders.map! do |x|
67
+ x.date = x.date.is_a?(Time) ? x.date : Chronic.parse(x.date)
68
+ x
52
69
  end
70
+
71
+ # synchronise with the XML file
72
+ # if XML file doesn't exist, create it
53
73
 
54
- @raw_input[0..2].join + a.map(&:input).join()
74
+ if File.exists? @dxfilepath then
75
+
76
+ dx = Dynarex.new @dxfilepath
77
+
78
+ @reminders.map do |reminder|
79
+
80
+ r = dx.find_by_input reminder.input
81
+ reminder.date = Date.parse r.date
82
+
83
+ reminder
84
+ end
85
+
86
+ else
87
+ create_dx()
88
+ end
89
+
90
+
91
+ # delete expired non-recurring reminders
92
+ @reminders.reject! {|x| x.date.to_time < @now }
93
+
94
+ @reminders.sort_by!(&:date)
95
+
96
+ end
97
+
98
+ def to_s()
99
+ @raw_input[0..2].join + @reminders.map(&:input).join("\n")
55
100
  end
101
+
102
+ alias update refresh
56
103
 
57
104
  protected
58
105
 
@@ -82,7 +129,7 @@ class RemindersTxt
82
129
  end
83
130
 
84
131
 
85
- RecordX.new input: input, title: title, recurring: recurring, date: date, end_date: end_date
132
+ OpenStruct.new input: input, title: title, recurring: recurring, date: date, end_date: end_date
86
133
  #[0, title, recurring, time, date, end_date].inspect
87
134
  end
88
135
 
@@ -90,21 +137,21 @@ class RemindersTxt
90
137
  # some meeting First thursday of the month at 7:30pm
91
138
  get /(.*)\s+(\w+ \w+day of (?:the|every) month at .*)/ do |title, recurring|
92
139
 
93
- RecordX.new input: '', title: title, recurring: recurring
140
+ OpenStruct.new input: '', title: title, recurring: recurring
94
141
  #[1, title, recurring].inspect
95
142
  end
96
143
 
97
144
  # some important day 24th Mar
98
145
  get /(.*)\s+(\d+.*)/ do |title, date|
99
146
 
100
- RecordX.new input: '', title: title, date: date
147
+ OpenStruct.new input: '', title: title, date: date
101
148
  #[2, title, date].inspect
102
149
  end
103
150
 
104
151
  # 27-Mar@1436 some important day
105
152
  get /(\d[^\s]+)\s+(.*)/ do |date, title|
106
153
 
107
- RecordX.new input: '', title: title, date: date
154
+ OpenStruct.new input: '', title: title, date: date
108
155
  #[3, title, date].inspect
109
156
  end
110
157
 
@@ -120,4 +167,3 @@ class RemindersTxt
120
167
  alias find_expression run_route
121
168
 
122
169
  end
123
-
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.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,28 +31,28 @@ cert_chain:
31
31
  n+SSd9dm8JjhZ2pqHtX+bgMZ18hrN06xfR+UPtk5BKC8v1PC0FWxaVR4lom39rFU
32
32
  seDxJNsJgamAKg==
33
33
  -----END CERTIFICATE-----
34
- date: 2016-11-10 00:00:00.000000000 Z
34
+ date: 2016-11-11 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
- name: recordx
37
+ name: dynarex
38
38
  requirement: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '0.5'
42
+ version: '1.7'
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
- version: 0.5.0
45
+ version: 1.7.15
46
46
  type: :runtime
47
47
  prerelease: false
48
48
  version_requirements: !ruby/object:Gem::Requirement
49
49
  requirements:
50
50
  - - "~>"
51
51
  - !ruby/object:Gem::Version
52
- version: '0.5'
52
+ version: '1.7'
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: 0.5.0
55
+ version: 1.7.15
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: app-routes
58
58
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file