evertils 1.0.10 → 1.0.11

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
  SHA256:
3
- metadata.gz: 7b85d5ef121dddd8068453eb0465746f307dda09d90a31adf7f1b4752f7c4186
4
- data.tar.gz: 658320f1ddd796f117c041d2aebbcfce76ba92fd8a7a2e1218e746c5ee666577
3
+ metadata.gz: 206974c6d6d876faed379c1f8d174c8e02f1af89410960b5a0759a2ba988c0ee
4
+ data.tar.gz: 2a56984a7e1757992e811652c9ba989060943a2d99bf943dd318dfdfcf58a628
5
5
  SHA512:
6
- metadata.gz: 62e03f276e1971f70b64efc234a6f0af28f9d5fc4daabd563809cabac19c0ae3bd49137ac4276b8da5ee8a18fcd41e2610683272c78be98a1f630d3997bbf528
7
- data.tar.gz: 2461a7d80f901d925a2292c666fd71c41f16c2dd77917215bfc4211dc191f77249207956d1607ebf8e343f545d4d790fd8f1d6febdda89d0aae352e2a72c3564
6
+ metadata.gz: 1cb7bf54cf9a60deb6959c37a053a031f4d406950a619fd784d987d5866a2208827ffdc451f1191d2c043734ce9847255786940754a1abfbcfc6d2df33647982
7
+ data.tar.gz: c85ea5dab302bbdd7c0f6abd3d6c7eccbaccb9360cea96e517b7190a9fe052ace959a0ebbd2ceb9714668110221ca5009dd3b098ddd0b652d0c29f9728c2a12e
data/bin/evertils CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # fix load path
4
- lib = File.expand_path('../../lib', __FILE__)
4
+ lib = File.expand_path('../lib', __dir__)
5
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
6
 
7
7
  require 'evertils'
@@ -5,14 +5,24 @@ module Evertils
5
5
  super
6
6
 
7
7
  @note_helper = Evertils::Helper.load('Note')
8
+ @search_grammar = Evertils::Helper.load('SearchGrammar')
8
9
  @api_helper = Evertils::Helper.load('ApiEnmlHandler', @config)
9
10
  end
10
11
 
11
12
  # Send arbitrary text to the daily log
12
13
  def message(text = nil)
13
- return Notify.error('A message is required', {}) if text.nil?
14
-
15
- note = @note_helper.wait_for_by_notebook(:Daily)
14
+ return Notify.error('A message is required') if text.nil?
15
+
16
+ # TODO: should be an object instead of arbitrary hash
17
+ criteria = {
18
+ notebook: :Daily,
19
+ tags: {
20
+ day: Date.today.yday
21
+ },
22
+ created: Date.new(Date.today.year, 1, 1).strftime('%Y%m%d')
23
+ }
24
+
25
+ note = @note_helper.wait_for_with_grammar(criteria)
16
26
 
17
27
  return Notify.error('Note not found') if note.entity.nil?
18
28
 
@@ -7,10 +7,34 @@ module Evertils
7
7
  def initialize
8
8
  @model = Evertils::Common::Query::Simple.new
9
9
  @format = Evertils::Helper.load('Formatting')
10
+ @search_grammar = Evertils::Helper.load('SearchGrammar')
10
11
  @user = @model.user_info[:user]
11
12
  @shard = @model.user_info[:shard]
12
13
  end
13
14
 
15
+ def wait_for_with_grammar(conf, iterations = Evertils::Type::Base::MAX_SEARCH_SIZE)
16
+ grammar = @search_grammar.from(conf)
17
+ Notify.info("Searching with grammar #{grammar}")
18
+ note = find_note_by_grammar(grammar)
19
+
20
+ begin
21
+ if note.entity.nil?
22
+ (1..iterations).each do |iter|
23
+ conf[:tags][:day] -= 1
24
+ grammar = @search_grammar.from(conf)
25
+ Notify.info(" (#{iter}) Looking for #{grammar}")
26
+ note = find_note_by_grammar(grammar, true)
27
+
28
+ break unless note.entity.nil? || iter == Evertils::Type::Base::MAX_SEARCH_SIZE
29
+ end
30
+ end
31
+ rescue Interrupt
32
+ Notify.error('Cancelled wait')
33
+ end
34
+
35
+ note
36
+ end
37
+
14
38
  # Wait for a note to exist
15
39
  def wait_for_by_notebook(notebook, iterations = Evertils::Type::Base::MAX_SEARCH_SIZE)
16
40
  Notify.info("Waiting for #{notebook}...")
@@ -68,6 +92,11 @@ module Evertils
68
92
  end
69
93
  # alias find_by_notebook
70
94
 
95
+ def find_note_by_grammar(grammar, sleep = false)
96
+ sleep(5) if sleep
97
+ @model.find_note_contents_using_grammar(grammar)
98
+ end
99
+
71
100
  #
72
101
  # @since 0.3.15
73
102
  def internal_url_for(note)
@@ -0,0 +1,29 @@
1
+ module Evertils
2
+ module Helper
3
+ class SearchGrammar
4
+ def from(conf)
5
+ @configuration = conf
6
+ @grammar = []
7
+
8
+ fix_standard_grammar
9
+ fix_tags if @configuration.include?(:tags)
10
+
11
+ @grammar.join(' ')
12
+ end
13
+
14
+ private
15
+
16
+ def fix_tags
17
+ @configuration[:tags].each_pair do |k, v|
18
+ @grammar.push("tag:#{k}-#{v}")
19
+ end
20
+ end
21
+
22
+ def fix_standard_grammar
23
+ @configuration.each_pair do |k, v|
24
+ @grammar.push("#{k}:#{v}") unless k == :tags
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Evertils
2
- VERSION = '1.0.10'.freeze
2
+ VERSION = '1.0.11'.freeze
3
3
  end
data/lib/evertils.rb CHANGED
@@ -28,6 +28,7 @@ require 'evertils/actions/duplicate_previous'
28
28
  require 'evertils/helpers/time'
29
29
  require 'evertils/helpers/results'
30
30
  require 'evertils/helpers/api-enml-handler'
31
+ require 'evertils/helpers/search-grammar'
31
32
  require 'evertils/gpg_exception'
32
33
  require 'evertils/yubikey_exception'
33
34
  require 'evertils/required_check_exception'
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: 1.0.10
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe
@@ -138,6 +138,7 @@ files:
138
138
  - lib/evertils/helpers/formatting.rb
139
139
  - lib/evertils/helpers/note.rb
140
140
  - lib/evertils/helpers/results.rb
141
+ - lib/evertils/helpers/search-grammar.rb
141
142
  - lib/evertils/helpers/time.rb
142
143
  - lib/evertils/helpers/xml.rb
143
144
  - lib/evertils/kernel.rb
@@ -172,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
173
  - !ruby/object:Gem::Version
173
174
  version: '0'
174
175
  requirements: []
175
- rubygems_version: 3.0.1
176
+ rubygems_version: 3.0.8
176
177
  signing_key:
177
178
  specification_version: 4
178
179
  summary: EN (heart) CLI