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 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