evertils 0.3.17 → 0.3.18
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/lib/evertils.rb +2 -0
- data/lib/evertils/controller.rb +1 -1
- data/lib/evertils/controllers/log.rb +49 -0
- data/lib/evertils/helpers/note.rb +54 -0
- data/lib/evertils/helpers/xml.rb +18 -0
- data/lib/evertils/type.rb +5 -37
- data/lib/evertils/types/daily.rb +2 -6
- data/lib/evertils/types/monthly.rb +4 -4
- data/lib/evertils/types/priority-queue.rb +1 -1
- data/lib/evertils/types/weekly.rb +3 -3
- data/lib/evertils/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 886b1ca6799ab8f5f90720db8e70cc28be5fd36a
|
4
|
+
data.tar.gz: 787b8c3b1bb253717851bfeb2cd73bab45995fd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19b830abed45c29fb384631991e3b33d8eede5fa1c54f2643b687e531df8d86c5bf3fb745c1fae117982afb295956f1c834d4b3b197f7638aa3a3a06a99d5797
|
7
|
+
data.tar.gz: 32a4b7052b018627e1512395cafd4af0b27ba97f3003158db2a6a8b4df9fafdd1bedc5c669f7c4167401532a7218f785511405a32c901dc4f18a543e02ef8474
|
data/lib/evertils.rb
CHANGED
@@ -31,6 +31,8 @@ require 'evertils/router'
|
|
31
31
|
require 'evertils/helper'
|
32
32
|
require 'evertils/helpers/formatting'
|
33
33
|
require 'evertils/helpers/evernote-enml'
|
34
|
+
require 'evertils/helpers/note'
|
35
|
+
require 'evertils/helpers/xml'
|
34
36
|
|
35
37
|
module Evertils
|
36
38
|
# Flag to determine if module is running in test mode
|
data/lib/evertils/controller.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
module Evertils
|
2
|
+
module Controller
|
3
|
+
class Log < Controller::Base
|
4
|
+
def pre_exec
|
5
|
+
super
|
6
|
+
|
7
|
+
@note_helper = Evertils::Helper.load('Note')
|
8
|
+
@api_helper = Evertils::Helper.load('ApiEnmlHandler', {})
|
9
|
+
end
|
10
|
+
|
11
|
+
# Send arbitrary text to the daily log
|
12
|
+
def message(text)
|
13
|
+
Notify.error('Text argument is required', {}) if text.nil?
|
14
|
+
|
15
|
+
note = @note_helper.find_note(:Daily)
|
16
|
+
edit_conf = {
|
17
|
+
search: 'Triage',
|
18
|
+
append: text
|
19
|
+
}
|
20
|
+
|
21
|
+
modify(note, edit_conf)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
# Update a note with content
|
27
|
+
def modify(note, conf)
|
28
|
+
xml = @api_helper.from_str(note.entity.content)
|
29
|
+
xml_helper = Evertils::Helper.load('Xml', xml)
|
30
|
+
|
31
|
+
time = Time.now.strftime('%I:%M')
|
32
|
+
target = xml.search("div:contains('#{conf[:search]}')").first.next_element
|
33
|
+
nearest_ul = target.search('ul')
|
34
|
+
span = xml_helper.span("#{time} - #{conf[:append]}")
|
35
|
+
li = xml_helper.li(span)
|
36
|
+
|
37
|
+
if nearest_ul.empty?
|
38
|
+
node = xml_helper.ul(li)
|
39
|
+
target.children.before(node)
|
40
|
+
else
|
41
|
+
nearest_ul.children.after(li)
|
42
|
+
end
|
43
|
+
|
44
|
+
note.entity.content = xml.to_s
|
45
|
+
Notify.success("Item logged at #{time}") if note.update
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Evertils
|
2
|
+
module Helper
|
3
|
+
class Note
|
4
|
+
attr_reader :model
|
5
|
+
|
6
|
+
MAX_SEARCH_SIZE = 21
|
7
|
+
|
8
|
+
# Create the Note object
|
9
|
+
def initialize
|
10
|
+
@model = Evertils::Common::Query::Simple.new
|
11
|
+
@format = Evertils::Helper.load('Formatting')
|
12
|
+
@user = @model.user_info[:user]
|
13
|
+
@shard = @model.user_info[:shard]
|
14
|
+
end
|
15
|
+
|
16
|
+
# Wait for a note to exist
|
17
|
+
def wait_for(notebook)
|
18
|
+
Notify.info('Waiting for...')
|
19
|
+
note = find_note(notebook)
|
20
|
+
|
21
|
+
# didn't find it the first time? wait and try again
|
22
|
+
if note.entity.nil?
|
23
|
+
(1..MAX_SEARCH_SIZE).each do |iter|
|
24
|
+
Notify.info(" (#{iter}) #{notebook}")
|
25
|
+
note = find_note(notebook, true)
|
26
|
+
break unless note.entity.nil? || iter == MAX_SEARCH_SIZE
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
note
|
31
|
+
end
|
32
|
+
|
33
|
+
# Find a note
|
34
|
+
def find_note(notebook, sleep = false)
|
35
|
+
sleep(5) if sleep
|
36
|
+
title = @format.date_templates[notebook]
|
37
|
+
@model.find_note_contents(title)
|
38
|
+
end
|
39
|
+
alias find_by_notebook find_note
|
40
|
+
|
41
|
+
#
|
42
|
+
# @since 0.3.15
|
43
|
+
def internal_url_for(note)
|
44
|
+
"evernote:///view/#{@user[:id]}/#{@shard}/#{note.guid}/#{note.guid}/"
|
45
|
+
end
|
46
|
+
|
47
|
+
# Create a note
|
48
|
+
def create(data)
|
49
|
+
@model.create_note(data)
|
50
|
+
end
|
51
|
+
alias create_note create
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/evertils/helpers/xml.rb
CHANGED
@@ -22,6 +22,16 @@ module Evertils
|
|
22
22
|
create(:a, conf)
|
23
23
|
end
|
24
24
|
|
25
|
+
#
|
26
|
+
# @since 0.3.18
|
27
|
+
def span(content)
|
28
|
+
conf = {
|
29
|
+
content: content
|
30
|
+
}
|
31
|
+
|
32
|
+
create(:span, conf)
|
33
|
+
end
|
34
|
+
|
25
35
|
#
|
26
36
|
# @since 0.3.15
|
27
37
|
def br
|
@@ -44,6 +54,14 @@ module Evertils
|
|
44
54
|
el
|
45
55
|
end
|
46
56
|
|
57
|
+
#
|
58
|
+
# @since 0.3.18
|
59
|
+
def ul(*children)
|
60
|
+
el = create(:ul)
|
61
|
+
children.each { |child| el.add_child(child) }
|
62
|
+
el
|
63
|
+
end
|
64
|
+
|
47
65
|
#
|
48
66
|
# @since 0.3.15
|
49
67
|
def create(element, conf = {})
|
data/lib/evertils/type.rb
CHANGED
@@ -9,10 +9,10 @@ module Evertils
|
|
9
9
|
#
|
10
10
|
# @since 0.3.7
|
11
11
|
def initialize(config, *args)
|
12
|
-
|
13
|
-
@
|
14
|
-
@shard = @model.user_info[:shard]
|
12
|
+
# helpers
|
13
|
+
@note_helper = Evertils::Helper.load('Note')
|
15
14
|
@format = Evertils::Helper.load('Formatting')
|
15
|
+
|
16
16
|
@config = config if config
|
17
17
|
@api = Evertils::Helper.load('ApiEnmlHandler', @config)
|
18
18
|
@args = args unless args.size.zero?
|
@@ -33,13 +33,13 @@ module Evertils
|
|
33
33
|
raise 'Invalid note content' if @content.nil?
|
34
34
|
raise 'Invalid notebook' if self.class::NOTEBOOK.nil?
|
35
35
|
|
36
|
-
@
|
36
|
+
@note_helper.create_note(data)
|
37
37
|
end
|
38
38
|
|
39
39
|
#
|
40
40
|
# @since 0.3.7
|
41
41
|
def should_create?
|
42
|
-
@note = find_note(self.class::NOTEBOOK)
|
42
|
+
@note = @note_helper.find_note(self.class::NOTEBOOK)
|
43
43
|
@entity = @note.entity
|
44
44
|
result = @entity.nil?
|
45
45
|
|
@@ -53,38 +53,6 @@ module Evertils
|
|
53
53
|
def morning_note?
|
54
54
|
!caller.grep(/morning/).nil?
|
55
55
|
end
|
56
|
-
|
57
|
-
#
|
58
|
-
# @since 0.3.15
|
59
|
-
def wait_for(notebook)
|
60
|
-
Notify.info('Waiting for...')
|
61
|
-
note = find_note(notebook)
|
62
|
-
|
63
|
-
# didn't find it the first time? wait and try again
|
64
|
-
if note.entity.nil?
|
65
|
-
(1..MAX_SEARCH_SIZE).each do |iter|
|
66
|
-
Notify.info(" (#{iter}) #{notebook}")
|
67
|
-
note = find_note(notebook, true)
|
68
|
-
break unless note.entity.nil? || iter == MAX_SEARCH_SIZE
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
note
|
73
|
-
end
|
74
|
-
|
75
|
-
#
|
76
|
-
# @since 0.3.15
|
77
|
-
def find_note(notebook, sleep = false)
|
78
|
-
sleep(5) if sleep
|
79
|
-
title = @format.date_templates[notebook]
|
80
|
-
@model.find_note_contents(title)
|
81
|
-
end
|
82
|
-
|
83
|
-
#
|
84
|
-
# @since 0.3.15
|
85
|
-
def internal_url_for(note)
|
86
|
-
"evernote:///view/#{@user[:id]}/#{@shard}/#{note.guid}/#{note.guid}/"
|
87
|
-
end
|
88
56
|
end
|
89
57
|
end
|
90
58
|
end
|
data/lib/evertils/types/daily.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'evertils/helpers/xml'
|
2
|
-
|
3
1
|
module Evertils
|
4
2
|
module Type
|
5
3
|
class Daily < Type::Base
|
@@ -32,12 +30,10 @@ module Evertils
|
|
32
30
|
@api = Evertils::Helper.load('ApiEnmlHandler', @config)
|
33
31
|
enml = @api.from_str(@format.template_contents(NOTEBOOK))
|
34
32
|
|
35
|
-
pq = wait_for(:'Priority Queue')
|
36
|
-
|
37
|
-
guid = pq.entity.guid
|
33
|
+
pq = @note_helper.wait_for(:'Priority Queue')
|
38
34
|
|
39
35
|
xml_conf = {
|
40
|
-
href:
|
36
|
+
href: @note_helper.internal_url_for(pq.entity),
|
41
37
|
content: @format.date_templates[:'Priority Queue']
|
42
38
|
}
|
43
39
|
|
@@ -24,7 +24,7 @@ module Evertils
|
|
24
24
|
def should_create?
|
25
25
|
today_is_first_of_month = Date.today.day == 1
|
26
26
|
|
27
|
-
@note = find_note(NOTEBOOK)
|
27
|
+
@note = @note_helper.find_note(NOTEBOOK)
|
28
28
|
@entity = @note.entity
|
29
29
|
result = @entity.nil? && today_is_first_of_month
|
30
30
|
|
@@ -41,15 +41,15 @@ module Evertils
|
|
41
41
|
# include the XML element builder
|
42
42
|
xml_helper = Evertils::Helper.load('Xml', xml)
|
43
43
|
# find the note entity we want to link
|
44
|
-
linked_note = wait_for(:Weekly).entity
|
44
|
+
linked_note = @note_helper.wait_for(:Weekly).entity
|
45
45
|
|
46
46
|
# don't add the note link if it is already there
|
47
|
-
unless xml.search("a[href='#{internal_url_for(linked_note)}']").size.zero?
|
47
|
+
unless xml.search("a[href='#{@note_helper.internal_url_for(linked_note)}']").size.zero?
|
48
48
|
return Notify.warning('Weekly note link already exists here, exiting to avoid duplicate content')
|
49
49
|
end
|
50
50
|
|
51
51
|
a = xml_helper.a(
|
52
|
-
internal_url_for(linked_note),
|
52
|
+
@note_helper.internal_url_for(linked_note),
|
53
53
|
@format.date_templates[:Weekly]
|
54
54
|
)
|
55
55
|
li = xml_helper.li(a)
|
@@ -38,7 +38,7 @@ module Evertils
|
|
38
38
|
next if %i[Sa Su].include?(dow)
|
39
39
|
|
40
40
|
note_title = "Queue For [#{day.strftime('%B %-d')} - #{dow}]"
|
41
|
-
note = @model.find_note_contents(note_title).entity
|
41
|
+
note = @note_helper.model.find_note_contents(note_title).entity
|
42
42
|
|
43
43
|
Notify.info(" (#{iter}) #{note_title}")
|
44
44
|
|
@@ -27,15 +27,15 @@ module Evertils
|
|
27
27
|
# include the XML element builder
|
28
28
|
xml_helper = Evertils::Helper.load('Xml', xml)
|
29
29
|
# find the note entity we want to link
|
30
|
-
linked_note = wait_for(:Daily).entity
|
30
|
+
linked_note = @note_helper.wait_for(:Daily).entity
|
31
31
|
|
32
32
|
# don't add the note link if it is already there
|
33
|
-
unless xml.search("a[href='#{internal_url_for(linked_note)}']").size.zero?
|
33
|
+
unless xml.search("a[href='#{@note_helper.internal_url_for(linked_note)}']").size.zero?
|
34
34
|
return Notify.warning('Daily note link already exists here, exiting to avoid duplicate content')
|
35
35
|
end
|
36
36
|
|
37
37
|
a = xml_helper.a(
|
38
|
-
internal_url_for(linked_note),
|
38
|
+
@note_helper.internal_url_for(linked_note),
|
39
39
|
@format.date_templates[:Daily]
|
40
40
|
)
|
41
41
|
li = xml_helper.li(a)
|
data/lib/evertils/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evertils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Priebe
|
@@ -122,6 +122,7 @@ files:
|
|
122
122
|
- lib/evertils/controllers/firstrun.rb
|
123
123
|
- lib/evertils/controllers/generate.rb
|
124
124
|
- lib/evertils/controllers/get.rb
|
125
|
+
- lib/evertils/controllers/log.rb
|
125
126
|
- lib/evertils/controllers/new.rb
|
126
127
|
- lib/evertils/controllers/status.rb
|
127
128
|
- lib/evertils/helper.rb
|
@@ -129,6 +130,7 @@ files:
|
|
129
130
|
- lib/evertils/helpers/evernote-enml.rb
|
130
131
|
- lib/evertils/helpers/evernote-markdown.rb
|
131
132
|
- lib/evertils/helpers/formatting.rb
|
133
|
+
- lib/evertils/helpers/note.rb
|
132
134
|
- lib/evertils/helpers/results.rb
|
133
135
|
- lib/evertils/helpers/time.rb
|
134
136
|
- lib/evertils/helpers/xml.rb
|