gnu-remind 0.1.7 → 0.1.9
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
- data/README.md +7 -42
- data/gnu-remind-0.1.8.gem +0 -0
- data/lib/remind/calendar.rb +15 -4
- data/lib/remind/event.rb +10 -3
- data/lib/remind/remind.rb +26 -11
- data/lib/remind/version.rb +2 -1
- data/lib/remind.rb +25 -11
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 852847d0fb94591dece3c07d9312aeb1a1a79f763d9c1d8b8fe12d54df58edc9
|
4
|
+
data.tar.gz: c187f80a3fb175b6f91c1ced9dbb95811a850a12e8380c1b83008eff5f98189a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 719856762c828bc51c6983b0a05928f00f3dcabea349c6aa096e621667eea1ac7f57721150ec39e366c27295aa8780128a08a567909d73b96ec58ba5ab89241b
|
7
|
+
data.tar.gz: 5694f948015c39695dfae99a759323fe27936d39b25b8ab545adb45681f5af9a5c00fb5ea3ca7a4218ce194a2501c9e2ffd85d55ad246801d4215ef7a70eeaed
|
data/README.md
CHANGED
@@ -24,59 +24,24 @@ gem build remind.gemspec
|
|
24
24
|
require 'remind'
|
25
25
|
```
|
26
26
|
### Remind
|
27
|
-
|
27
|
+
A wapper around gnu remind.
|
28
28
|
|
29
|
-
####
|
29
|
+
#### Set Reminders Collection
|
30
30
|
Create local reminders from url.
|
31
31
|
```
|
32
|
-
Remind
|
32
|
+
Remind.set(collection, "Binner at 8 tonight.")
|
33
33
|
```
|
34
34
|
|
35
|
-
####
|
35
|
+
#### Get Reminders Collection
|
36
36
|
Extract agenda from local reminders.
|
37
37
|
```
|
38
|
-
Remind
|
38
|
+
Remind.get(collection)
|
39
39
|
```
|
40
40
|
|
41
|
-
####
|
41
|
+
#### Get System Reminders
|
42
42
|
```
|
43
|
-
Remind.
|
43
|
+
Remind.get!
|
44
44
|
```
|
45
45
|
|
46
|
-
|
47
|
-
### REM
|
48
|
-
Use as a task specific tool
|
49
|
-
|
50
|
-
#### collection
|
51
|
-
```
|
52
|
-
REM['collection']
|
53
|
-
```
|
54
|
-
|
55
|
-
#### entry
|
56
|
-
```
|
57
|
-
REM['collection']['entry']
|
58
|
-
```
|
59
|
-
|
60
|
-
#### entry attributes
|
61
|
-
```
|
62
|
-
REM['collection']['entry'].attr = { type: "event type", date: "1 Jan 1970", lead: 7, repeat: 4, hour: "22", minute: "45", duration: "1:45", at: "Place Name" }
|
63
|
-
```
|
64
|
-
|
65
|
-
#### entry reminder
|
66
|
-
```
|
67
|
-
REM['collection'].to_rem
|
68
|
-
```
|
69
|
-
|
70
|
-
#### save collection
|
71
|
-
```
|
72
|
-
REM['collection'].to_rem!
|
73
|
-
```
|
74
|
-
|
75
|
-
#### collection agenda
|
76
|
-
```
|
77
|
-
REM['collection'].agenda
|
78
|
-
```
|
79
|
-
|
80
|
-
|
81
46
|
## Development
|
82
47
|
You can also run `ruby bin/console` for an interactive prompt that will allow you to experiment.
|
Binary file
|
data/lib/remind/calendar.rb
CHANGED
@@ -1,43 +1,54 @@
|
|
1
|
-
|
1
|
+
# Icalendar wrapper.
|
2
2
|
module CAL
|
3
|
+
|
4
|
+
# Calendar object.
|
3
5
|
class C
|
6
|
+
# Calendar +f+
|
4
7
|
def initialize f
|
5
8
|
@f = f
|
6
9
|
end
|
10
|
+
# each calendar event
|
7
11
|
def each &b
|
8
12
|
@f.events.each { |e| b.call(E.new(e)) }
|
9
13
|
return nil
|
10
14
|
end
|
15
|
+
# map each calendar event
|
11
16
|
def map &b
|
12
17
|
a = []
|
13
18
|
@f.events.each { |e| a << b.call(E.new(e)) }
|
14
19
|
return a
|
15
20
|
end
|
16
21
|
end
|
17
|
-
|
22
|
+
|
23
|
+
# Calendar Event object
|
18
24
|
class E
|
25
|
+
# Calendar Event +f+.
|
19
26
|
def initialize f
|
20
27
|
@f = f
|
21
28
|
end
|
29
|
+
# Calendar Event location
|
22
30
|
def where
|
23
31
|
@f.location
|
24
32
|
end
|
33
|
+
# Calendar Event focus
|
25
34
|
def who
|
26
35
|
@f.summary
|
27
36
|
end
|
37
|
+
# Calendar Event details
|
28
38
|
def what
|
29
39
|
@f.description
|
30
40
|
end
|
41
|
+
# Calendar Event scheduling
|
31
42
|
def when
|
32
43
|
{ begin: @f.dtstart, end: @f.dtend }
|
33
44
|
end
|
34
45
|
end
|
35
|
-
|
46
|
+
# Load Calendar Event Collection from file +f+.
|
36
47
|
def self.from_file f
|
37
48
|
x = File.read(f)
|
38
49
|
C.new(Icalendar::Calendar.parse(x).first)
|
39
50
|
end
|
40
|
-
|
51
|
+
# Load Calendar Event Collection from url +u+.
|
41
52
|
def self.from_url u
|
42
53
|
x = Faraday.new().get(u).body
|
43
54
|
C.new(Icalendar::Calendar.parse(x).first)
|
data/lib/remind/event.rb
CHANGED
@@ -1,15 +1,20 @@
|
|
1
|
+
# Event Processor
|
1
2
|
module EVENT
|
3
|
+
|
4
|
+
# Event object.
|
2
5
|
class E
|
6
|
+
# Event +i+.
|
3
7
|
def initialize i
|
4
|
-
@event = Nickel.parse i
|
5
|
-
|
6
|
-
if event?
|
8
|
+
if @event = Nickel.parse i
|
9
|
+
puts %[EVENT event: #{@event}]
|
7
10
|
@message = @event.message
|
8
11
|
else
|
12
|
+
puts %[EVENT log]
|
9
13
|
t = Time.now.utc
|
10
14
|
@message = i
|
11
15
|
end
|
12
16
|
end
|
17
|
+
# is event?
|
13
18
|
def event?
|
14
19
|
if %[#{@event.message}].length > 0 && @event.occurrences.length > 0
|
15
20
|
return true
|
@@ -17,6 +22,7 @@ module EVENT
|
|
17
22
|
return false
|
18
23
|
end
|
19
24
|
end
|
25
|
+
# each event occourence
|
20
26
|
def each &b
|
21
27
|
@event.occurrences.each { |e|
|
22
28
|
h = {
|
@@ -31,6 +37,7 @@ module EVENT
|
|
31
37
|
return nil
|
32
38
|
end
|
33
39
|
end
|
40
|
+
# Process event.
|
34
41
|
def self.[] k
|
35
42
|
E.new(k)
|
36
43
|
end
|
data/lib/remind/remind.rb
CHANGED
@@ -1,32 +1,45 @@
|
|
1
|
+
# The Reminder wrapper.
|
1
2
|
module REM
|
2
|
-
|
3
|
+
# The Reminder collection object.
|
4
|
+
class E
|
5
|
+
# Reminder collection +k+.
|
3
6
|
def initialize k
|
4
7
|
@id = k
|
5
8
|
@r = Hash.new { |h,k| h[k] = R.new(k) }
|
6
9
|
clear!
|
7
10
|
end
|
11
|
+
# Reminder collection id.
|
8
12
|
def id; @id; end
|
9
|
-
|
13
|
+
|
14
|
+
# get Reminder from collection.
|
10
15
|
def [] k
|
11
16
|
@rem << k
|
12
17
|
@rem.uniq
|
13
18
|
@r[k]
|
14
19
|
end
|
15
|
-
|
16
|
-
|
20
|
+
|
21
|
+
# get Reminder collection with arguments +a+.
|
22
|
+
def get a
|
23
|
+
if !File.exist?("rem/#{@id}.rem")
|
24
|
+
File.open("rem/#{@id}.rem",'w') { |f| f.write(""); }
|
25
|
+
end
|
17
26
|
`remind #{a} rem/#{@id}.rem`.split("\n\n")
|
18
27
|
end
|
19
|
-
|
28
|
+
|
29
|
+
# Clear Reminder collection.
|
20
30
|
def clear!
|
21
31
|
@rem = []
|
22
32
|
end
|
23
|
-
|
33
|
+
|
34
|
+
# Reminder collection to string.
|
24
35
|
def to_rem
|
25
36
|
a = [];
|
26
37
|
@rem.each { |e| a << @r[e].to_rem }
|
27
38
|
return a.join("\n")
|
28
39
|
end
|
29
40
|
|
41
|
+
# Write Reminder collection to file.
|
42
|
+
# +h[:append]+ append. (default: write)
|
30
43
|
def to_rem! h={}
|
31
44
|
if !Dir.exist? "rem"
|
32
45
|
Dir.mkdir("rem")
|
@@ -39,18 +52,18 @@ module REM
|
|
39
52
|
end
|
40
53
|
end
|
41
54
|
|
42
|
-
|
55
|
+
# The Reminder object.
|
43
56
|
class R
|
44
|
-
|
57
|
+
# high level event hash
|
45
58
|
attr_accessor :attr
|
46
|
-
|
59
|
+
# Reminder +k+
|
47
60
|
def initialize k
|
48
61
|
@id = k
|
49
62
|
@attr = {}
|
50
63
|
end
|
51
|
-
|
64
|
+
# Reminder event id.
|
52
65
|
def id; @id; end
|
53
|
-
|
66
|
+
# Reminder event hash to reminder string.
|
54
67
|
def to_rem
|
55
68
|
puts %[R[#{@id}] #{@attr}]
|
56
69
|
a, i = [], [ @id ]
|
@@ -72,9 +85,11 @@ module REM
|
|
72
85
|
end
|
73
86
|
|
74
87
|
@@REM = Hash.new { |h,k| h[k] = E.new(k) }
|
88
|
+
# Get Reminder collection +k+.
|
75
89
|
def self.[] k
|
76
90
|
@@REM[k]
|
77
91
|
end
|
92
|
+
# All Reminder collections
|
78
93
|
def self.keys
|
79
94
|
@@REM.keys
|
80
95
|
end
|
data/lib/remind/version.rb
CHANGED
data/lib/remind.rb
CHANGED
@@ -16,27 +16,32 @@ require_relative "remind/calendar"
|
|
16
16
|
|
17
17
|
require_relative "remind/event"
|
18
18
|
|
19
|
+
# The Remind wrapper.
|
19
20
|
module Remind
|
21
|
+
# generic errors
|
20
22
|
class Error < StandardError; end
|
21
23
|
|
22
24
|
@@REM = REM['reminders']
|
23
25
|
|
24
26
|
@@INIT = []
|
25
|
-
|
27
|
+
# Add system event.
|
28
|
+
# +h+ event hash
|
29
|
+
# Remind.reminder what: "Sports ball vs. the other team.", when: "15 March 2024 AT 19:00"
|
30
|
+
def self.reminder h={}
|
26
31
|
@@INIT << h
|
27
32
|
end
|
28
33
|
|
29
34
|
@@URL = []
|
35
|
+
# Add system ics url.
|
36
|
+
# +u+ the ics url
|
37
|
+
# Remind.url "https://your_domain.ics"
|
30
38
|
def self.url u
|
31
39
|
@@URL << u
|
32
40
|
end
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.rebuild!
|
41
|
+
|
42
|
+
# Set system reminders
|
43
|
+
# Remind.build!
|
44
|
+
def self.build!
|
40
45
|
@@REM.clear!
|
41
46
|
|
42
47
|
[@@INIT].flatten.each do |x|
|
@@ -56,8 +61,11 @@ module Remind
|
|
56
61
|
|
57
62
|
@@REM.to_rem!
|
58
63
|
end
|
59
|
-
|
60
|
-
|
64
|
+
|
65
|
+
# Set collection +k+ reminders.
|
66
|
+
# +src+ one or more input string to be processed.
|
67
|
+
# Remind.set("collection", "Dinner tonight at 8.", ...)
|
68
|
+
def self.set k, *src
|
61
69
|
REM[k].clear!
|
62
70
|
[src].flatten.each do |e|
|
63
71
|
EVENT[e].each do |ee|
|
@@ -67,10 +75,16 @@ module Remind
|
|
67
75
|
REM[k].to_rem! append: true
|
68
76
|
end
|
69
77
|
|
78
|
+
# Get reminders container +k+
|
79
|
+
# +h[:args]+ can be set to get other filters.
|
80
|
+
# Remind.get("collection")
|
70
81
|
def self.get k, h={}
|
71
82
|
REM[k].get(h[:args] || '-t1')[1..-1]
|
72
83
|
end
|
73
|
-
|
84
|
+
# Get system reminders
|
85
|
+
# Gets one week's agenda by default.
|
86
|
+
# +h[:args]+ can be set to get other filters.
|
87
|
+
# Remind.get!
|
74
88
|
def self.get! h={}
|
75
89
|
@@REM.get(h[:args] || '-t1')[1..-1]
|
76
90
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gnu-remind
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Olson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -64,6 +64,7 @@ files:
|
|
64
64
|
- LICENSE.txt
|
65
65
|
- README.md
|
66
66
|
- Rakefile
|
67
|
+
- gnu-remind-0.1.8.gem
|
67
68
|
- lib/remind.rb
|
68
69
|
- lib/remind/calendar.rb
|
69
70
|
- lib/remind/event.rb
|