evertils 1.0.0 → 1.0.1
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/config.rb +45 -2
- data/lib/evertils/controller.rb +3 -1
- data/lib/evertils/controllers/log.rb +1 -1
- data/lib/evertils/controllers/render.rb +5 -2
- data/lib/evertils/helpers/formatting.rb +2 -0
- data/lib/evertils/helpers/note.rb +34 -6
- data/lib/evertils/types/daily.rb +1 -1
- data/lib/evertils/types/monthly.rb +1 -1
- data/lib/evertils/types/weekly.rb +1 -1
- data/lib/evertils/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da72e4388eada49ffce7a77efb8cc712c4a97ecd153561ac37e42111af92c6b1
|
4
|
+
data.tar.gz: e8835575faee6e0ffa12d7a9a8ba39865722181ac9038c14900b446f383ef2d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c578630beddc02d38369f2f2c81b2b388ca807eb6be62174e4843742d9c0c01bcc116ff8cdb0a0e902615d3142959f5886033245913430757ede602d4308066
|
7
|
+
data.tar.gz: 03fc086116fa06f436b109d8e2c3845c867c8683ffc8ea0e9841ea523dcebdde1b2de59a574d3044c2492b346a6ef0c28260320e206248fe63ab015d83e0cd9b
|
data/lib/evertils/config.rb
CHANGED
@@ -1,5 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Evertils
|
2
4
|
class Cfg
|
5
|
+
REPLACEMENTS = {
|
6
|
+
'%DOY%': Date.today.yday,
|
7
|
+
'%MONTH_NAME%': Date.today.strftime('%B'),
|
8
|
+
'%MONTH%': Date.today.month,
|
9
|
+
'%DAY%': Date.today.day,
|
10
|
+
'%DOW%': Date.today.wday,
|
11
|
+
'%DOW_NAME%': Date.today.strftime('%a'),
|
12
|
+
'%YEAR%': Date.today.year,
|
13
|
+
'%WEEK%': Date.today.cweek,
|
14
|
+
'%WEEK_START%': Date.commercial(Date.today.year, Date.today.cweek, 1),
|
15
|
+
'%WEEK_END%': Date.commercial(Date.today.year, Date.today.cweek, 5)
|
16
|
+
}
|
3
17
|
|
4
18
|
# default values for initialization
|
5
19
|
def initialize
|
@@ -66,11 +80,40 @@ module Evertils
|
|
66
80
|
end
|
67
81
|
|
68
82
|
def symbolize!
|
69
|
-
@yml = @yml.inject({}) { |h, (k, v)| h[k.to_sym] = v; h}
|
83
|
+
@yml = @yml.inject({}) { |h, (k, v)| h[k.to_sym] = v; h }
|
70
84
|
end
|
71
85
|
|
72
86
|
def pluck(*args)
|
73
|
-
@yml.
|
87
|
+
@yml.select do |key, _|
|
88
|
+
args.include? key
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def translate_placeholders
|
93
|
+
@yml.map do |item|
|
94
|
+
REPLACEMENTS.each_pair do |k, v|
|
95
|
+
item.last.gsub!(k.to_s, v.to_s) if item.last.is_a? String
|
96
|
+
item.last.map { |i| i.gsub!(k.to_s, v.to_s) } if item.last.is_a? Array
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
symbolize_keys(@yml)
|
101
|
+
self
|
102
|
+
end
|
103
|
+
|
104
|
+
def symbolize_keys(hash)
|
105
|
+
hash.inject({}){ |result, (key, value)|
|
106
|
+
new_key = case key
|
107
|
+
when String then key.to_sym
|
108
|
+
else key
|
109
|
+
end
|
110
|
+
new_value = case value
|
111
|
+
when Hash then symbolize_keys(value)
|
112
|
+
else value
|
113
|
+
end
|
114
|
+
result[new_key] = new_value
|
115
|
+
result
|
116
|
+
}
|
74
117
|
end
|
75
118
|
|
76
119
|
private
|
data/lib/evertils/controller.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Evertils
|
2
4
|
module Controller
|
3
5
|
class Base
|
@@ -58,7 +60,7 @@ module Evertils
|
|
58
60
|
@method = command
|
59
61
|
elsif is_a? Evertils::Controller::Render
|
60
62
|
@method = :from_file
|
61
|
-
@request.param = config
|
63
|
+
@request.param = config
|
62
64
|
else
|
63
65
|
raise NoMethodError, "Invalid method: #{command}"
|
64
66
|
end
|
@@ -1,10 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'evertils/common/query/simple'
|
2
4
|
|
3
5
|
module Evertils
|
4
6
|
module Controller
|
5
7
|
class Render < Controller::Base
|
6
8
|
def from_file(config)
|
7
|
-
@config = config
|
9
|
+
@config = config.translate_placeholders.pluck(:title, :notebook)
|
10
|
+
|
8
11
|
return Notify.warning("Note already exists\n- #{@link}") if note_exists?
|
9
12
|
|
10
13
|
Notify.info 'Note not found, creating a new one'
|
@@ -15,7 +18,7 @@ module Evertils
|
|
15
18
|
|
16
19
|
def note_exists?
|
17
20
|
helper = Evertils::Helper.load('Note')
|
18
|
-
note = helper.
|
21
|
+
note = helper.wait_for_by_title(@config[:title], @config[:notebook], 3)
|
19
22
|
@link = helper.external_url_for(note.entity) unless note.entity.nil?
|
20
23
|
|
21
24
|
note.exists?
|
@@ -12,16 +12,16 @@ module Evertils
|
|
12
12
|
end
|
13
13
|
|
14
14
|
# Wait for a note to exist
|
15
|
-
def
|
15
|
+
def wait_for_by_notebook(notebook, iterations = Evertils::Type::Base::MAX_SEARCH_SIZE)
|
16
16
|
Notify.info("Waiting for #{notebook}...")
|
17
|
-
note =
|
17
|
+
note = find_note_by_notebook(notebook)
|
18
18
|
|
19
19
|
begin
|
20
20
|
# didn't find it the first time? wait and try again
|
21
21
|
if note.entity.nil?
|
22
22
|
(1..iterations).each do |iter|
|
23
23
|
Notify.info(" (#{iter}) Looking for #{notebook.downcase}")
|
24
|
-
note =
|
24
|
+
note = find_note_by_notebook(notebook, true)
|
25
25
|
break unless note.entity.nil? || iter == Evertils::Type::Base::MAX_SEARCH_SIZE
|
26
26
|
end
|
27
27
|
end
|
@@ -32,13 +32,41 @@ module Evertils
|
|
32
32
|
note
|
33
33
|
end
|
34
34
|
|
35
|
-
#
|
36
|
-
def
|
35
|
+
# Wait for a note to exist
|
36
|
+
def wait_for_by_title(title, notebook, iterations = Evertils::Type::Base::MAX_SEARCH_SIZE)
|
37
|
+
Notify.info("Waiting for #{notebook}...")
|
38
|
+
note = find_note_by_title(title)
|
39
|
+
|
40
|
+
begin
|
41
|
+
# didn't find it the first time? wait and try again
|
42
|
+
if note.entity.nil?
|
43
|
+
(1..iterations).each do |iter|
|
44
|
+
Notify.info(" (#{iter}) Looking for #{notebook.downcase}")
|
45
|
+
note = find_note_by_title(notebook, true)
|
46
|
+
break unless note.entity.nil? || iter == Evertils::Type::Base::MAX_SEARCH_SIZE
|
47
|
+
end
|
48
|
+
end
|
49
|
+
rescue Interrupt
|
50
|
+
Notify.warning('Cancelled wait')
|
51
|
+
end
|
52
|
+
|
53
|
+
note
|
54
|
+
end
|
55
|
+
|
56
|
+
# Find a note by note
|
57
|
+
def find_note_by_title(title, sleep = false)
|
58
|
+
sleep(5) if sleep
|
59
|
+
@model.find_note_contents(title)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Find a note by notebook
|
63
|
+
def find_note_by_notebook(notebook, sleep = false)
|
37
64
|
sleep(5) if sleep
|
38
65
|
title = @format.date_templates[notebook]
|
66
|
+
|
39
67
|
@model.find_note_contents(title)
|
40
68
|
end
|
41
|
-
alias find_by_notebook
|
69
|
+
# alias find_by_notebook
|
42
70
|
|
43
71
|
#
|
44
72
|
# @since 0.3.15
|
data/lib/evertils/types/daily.rb
CHANGED
@@ -32,7 +32,7 @@ module Evertils
|
|
32
32
|
# @since 0.3.13
|
33
33
|
def attach_pq_note
|
34
34
|
enml = @api.from_str(@format.template_contents(NOTEBOOK))
|
35
|
-
pq = @note_helper.
|
35
|
+
pq = @note_helper.wait_for_by_notebook(:'Priority Queue')
|
36
36
|
xml_conf = {
|
37
37
|
href: @note_helper.internal_url_for(pq.entity),
|
38
38
|
content: @format.date_templates[:'Priority Queue']
|
@@ -22,7 +22,7 @@ module Evertils
|
|
22
22
|
#
|
23
23
|
# @since 0.3.15
|
24
24
|
def add_weekly_note_link
|
25
|
-
wk_entity = @note_helper.
|
25
|
+
wk_entity = @note_helper.wait_for_by_notebook(:Weekly).entity
|
26
26
|
# parse the ENML note data into something we can work with
|
27
27
|
xml = @api.from_str(@entity.content)
|
28
28
|
# include the XML element builder
|
@@ -25,7 +25,7 @@ module Evertils
|
|
25
25
|
#
|
26
26
|
# @since 0.3.15
|
27
27
|
def add_daily_note_link
|
28
|
-
da_entity = @note_helper.
|
28
|
+
da_entity = @note_helper.wait_for_by_notebook(:Daily).entity
|
29
29
|
# parse the ENML note data into something we can work with
|
30
30
|
xml = @api.from_str(@entity.content)
|
31
31
|
# include the XML element builder
|
data/lib/evertils/version.rb
CHANGED