evertils 0.3.17 → 0.3.18
Sign up to get free protection for your applications and to get access to all the features.
- 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
|