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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 561c28824de0f475fed905f3ad995a484f363533
4
- data.tar.gz: e8ffe5ac1387992629396c333bb9c0096e41fe46
3
+ metadata.gz: 886b1ca6799ab8f5f90720db8e70cc28be5fd36a
4
+ data.tar.gz: 787b8c3b1bb253717851bfeb2cd73bab45995fd2
5
5
  SHA512:
6
- metadata.gz: f096438ac57c7500fb97c5c0ec24f4cebd33d7a0cb5ee394edd6c7b42efed535ded0c1d9021161d80dee4b3a98da0e22ae7d72bcbe3a02f1384984d75b3b9151
7
- data.tar.gz: 9bf09c2ded96a58e8fc60636ae5cada0604edfc88213bc7c991bb92cd992bfe484b64be398972eb256acc54cd1a1287c2bb3b85586465edc73b77712277d80a9
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
@@ -37,7 +37,7 @@ module Evertils
37
37
  if @request.param.nil?
38
38
  send(@method.to_sym)
39
39
  else
40
- send(@method.to_sym, @request.flags.first)
40
+ send(@method.to_sym, (@request.flags.first || @request.param))
41
41
  end
42
42
  end
43
43
 
@@ -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
@@ -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
- @model = Evertils::Common::Query::Simple.new
13
- @user = @model.user_info[:user]
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
- @model.create_note(data)
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
@@ -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: "evernote:///view/#{@user[:id]}/#{@shard}/#{guid}/#{guid}/",
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)
@@ -1,3 +1,3 @@
1
1
  module Evertils
2
- VERSION = '0.3.17'.freeze
2
+ VERSION = '0.3.18'.freeze
3
3
  end
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.17
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