evertils 1.0.10 → 1.0.11

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