evertils 2.1.0 → 2.2.0

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: 21365e228004a470654bca7506cdcbb1b650de3f533a9a9526378b886512feb6
4
- data.tar.gz: 88d857222088fc6614df75c79f598fb5f478ba6a42b29bc7ab2eb4a0d1681463
3
+ metadata.gz: 8a0a083bfeeace2a3e2dd0381a746abc06b56e83e6d6a5b220fef7293368abc8
4
+ data.tar.gz: fd0702657d1aafe58c4ac30d6024e4ec4b8f33b7ff117b934c073669d12a8c6f
5
5
  SHA512:
6
- metadata.gz: 4d51d610da5f984f3451d4ea3318f94921a05ec14b0560ecdbf8399bcb8ef1f9b1d39be2a6b724392b4cefc95cc1aeb8b2acd153039436eba964d811686af1c9
7
- data.tar.gz: 6eb94bfa2dff49d231eae40b2fe1d70e2e006706194a2532babb3b5f8c1c1745e373d396a9c23dc1ec3b63ba2741979bab9131c4bcc6f689effa31dbff8897a2
6
+ metadata.gz: 32c0ff797033d7262c604fd4b15b584f7ceb168f71bb6274fe6ca53e8bf7e54c71c9951b1a1e96058fb4bfd37af3f0bc9501bca4719c5e542545997e4518a187
7
+ data.tar.gz: ae20c82297b3cdd1a303511b03be055326f27766a78e4286f9605e463aa94ce97fdc294f974b23512e8aea98c847e6819390c3b91610b58700f320382e3bd403
@@ -4,6 +4,7 @@ module Evertils
4
4
  def pre_exec
5
5
  super
6
6
 
7
+ @note = nil
7
8
  @note_helper = Evertils::Helper::Note.instance
8
9
  @api_helper = Evertils::Helper::ApiEnmlHandler.new(@config)
9
10
  end
@@ -12,11 +13,33 @@ module Evertils
12
13
  def message(text = nil)
13
14
  return Notify.error('A message is required') if text.nil?
14
15
 
15
- note = @note_helper.find_note_by_grammar(grammar.to_s)
16
+ @note = @note_helper.find_note_by_grammar(grammar.to_s)
16
17
 
17
- return Notify.error('Note not found') if note.entity.nil?
18
+ return Notify.error('Note not found') if @note.entity.nil?
18
19
 
19
- modify(note, text)
20
+ modify_with(text)
21
+ end
22
+
23
+ #
24
+ # @since 2.2.0
25
+ def grep(text = nil)
26
+ return Notify.error('A search term is required') if text.nil?
27
+
28
+ @note = @note_helper.find_note_by_grammar(grammar.to_s)
29
+
30
+ return Notify.error('Note not found') if @note.entity.nil?
31
+
32
+ search_for(text)
33
+ end
34
+
35
+ #
36
+ # @since 2.2.0
37
+ def group(text = nil)
38
+ @note = @note_helper.find_note_by_grammar(grammar.to_s)
39
+
40
+ return Notify.error('Note not found') if @note.entity.nil?
41
+
42
+ group_by(text)
20
43
  end
21
44
 
22
45
  private
@@ -33,15 +56,13 @@ module Evertils
33
56
  end
34
57
 
35
58
  # Update a note with content
36
- def modify(note, text)
37
- xml = @api_helper.from_str(note.entity.content)
59
+ def modify_with(text)
60
+ xml = @api_helper.from_str(@note.entity.content)
38
61
 
39
62
  time = Time.now.strftime('%I:%M')
40
63
  target = xml.search('en-note').first
41
64
 
42
- return Notify.error('Unable to log message, triage section not found') if target.nil?
43
-
44
- log_message_txt = "<div>* #{time} - #{text}</div>"
65
+ log_message_txt = "<div>* #{time} - #{clean(text)}</div>"
45
66
 
46
67
  # append the log message to the target
47
68
  target.add_child(log_message_txt)
@@ -51,9 +72,66 @@ module Evertils
51
72
  xml.children[1].remove
52
73
  end
53
74
 
54
- note.entity.content = xml.to_s
75
+ @note.entity.content = xml.to_s
76
+
77
+ Notify.success("Item logged at #{time}") if @note.update
78
+ end
79
+
80
+ #
81
+ # @since 2.2.0
82
+ def search_for(text)
83
+ results = grep_results_for(text)
84
+
85
+ return Notify.error("No rows matched search query {#{text}}") if results.empty?
86
+
87
+ Notify.success("#{results.size} rows matched query {#{text}}")
88
+ results.each { |res| Notify.info(clean(res)) }
89
+ end
90
+
91
+ #
92
+ # @since 2.2.0
93
+ def group_by(text)
94
+ grouped_results.each_pair do |job_id, rows|
95
+ Notify.note("#{clean(job_id)} - #{rows.size} occurrences") unless job_id.nil?
96
+
97
+ rows.each { |row| Notify.info(clean(row)) }
98
+ end
99
+ end
100
+
101
+ #
102
+ # @since 2.2.0
103
+ def search_nodes
104
+ xml = @api_helper.from_str(@note.entity.content)
105
+ target = xml.search('en-note').first
106
+ nodes = []
107
+
108
+ target.children.each do |child|
109
+ node = child.children.first.to_s
110
+ nodes.push(clean(node)) unless node.empty? || node == '<br/>'
111
+ end
112
+
113
+ nodes
114
+ end
115
+
116
+ #
117
+ # @since 2.2.0
118
+ def grouped_results
119
+ search_nodes.group_by do |node|
120
+ match = /- (.*)? -/.match(node)
121
+ match[1] unless match.nil?
122
+ end
123
+ end
124
+
125
+ #
126
+ # @since 2.2.0
127
+ def grep_results_for(text)
128
+ search_nodes.select { |line| line.include? text }
129
+ end
55
130
 
56
- Notify.success("Item logged at #{time}") if note.update
131
+ #
132
+ # @since 2.2.0
133
+ def clean(text)
134
+ text.delete("\n").gsub('&#xA0;', ' ')
57
135
  end
58
136
  end
59
137
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Evertils
4
- VERSION = '2.1.0'
4
+ VERSION = '2.2.0'
5
5
  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: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Priebe