startask 0.1.0 → 0.1.2

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: ead4294333d7239733bbaec126396d45172f27bf7d8be258087e49d11b14ed48
4
- data.tar.gz: 4c1944a82197e8a32389858b941e801b41048336b6eb3e3993fe7d0893ec12d8
3
+ metadata.gz: 98f7117e10b305b80d9ca459f61f9b6612eac3119d1e512bcc16211db5abcb7d
4
+ data.tar.gz: 0abf88ac656c4dd87c0dc0280f426a724866f8a18b2f60ed0805eaad8cfd8cb2
5
5
  SHA512:
6
- metadata.gz: 2c8efdc52ff696b70f53ca1e4b53dda62a03db3d7ae66f827411a47fc9f7c281edfa2fd72acd77e1d258b951f722a69968df00dafa3088afbdd003e5d221ba65
7
- data.tar.gz: 13a7bff394b74bc3455c1bfb6ed6f1ec51daa64967e3d497d6207e0d65adb635460dfc4ae5b6eb3ba43243339d5b69cd6d3d04f28339276716eba41c2d897db5
6
+ metadata.gz: c6536b528bc0587c8d225bae4a8da20762eafef9a3ee5e7854e79e0410fe8ef4fa9a1d08c6fea4d12ca10e0b8fa82301077b6a4ca1dea9b22506552dbad04e77
7
+ data.tar.gz: 89da5ddcbed700bd31887d9aab6a9d62b242b68059ee891acfd2e688d8e058fd483f90585b7bc3c16523c3fad7b6dd20740817ec3ad2c2713615eb3d36a10110
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/startask.rb CHANGED
@@ -6,17 +6,35 @@
6
6
  require 'kvx'
7
7
  require 'rxfhelper'
8
8
 
9
+ module RecordHelper
10
+
11
+ def generate_id()
12
+ Time.now.to_f.to_s.sub('.','-')
13
+ end
14
+
15
+ def logit(label)
16
+ @log << [label, Time.now.strftime("%H:%M%P")]
17
+ @log.last
18
+ end
19
+
20
+ end
21
+
9
22
  class ActionItem
23
+ include RecordHelper
10
24
 
11
- attr_reader :log
25
+ attr_reader :log, :id
12
26
 
13
- def initialize(s)
27
+ def initialize(s, callback=nil)
28
+
29
+ @id = generate_id()
14
30
  @title = s
15
31
  @log = []
32
+ @callback = callback
33
+
16
34
  end
17
35
 
18
36
  def done()
19
- logit :completed
37
+ logaction :completed
20
38
  end
21
39
 
22
40
  alias completed done
@@ -26,15 +44,15 @@ class ActionItem
26
44
  end
27
45
 
28
46
  def started()
29
- logit :started
47
+ logaction :started
30
48
  end
31
49
 
32
50
  def status()
33
- @log.last
51
+ @log.last ? @log.last : []
34
52
  end
35
53
 
36
54
  def stopped()
37
- logit :stopped
55
+ logaction :stopped
38
56
  end
39
57
 
40
58
  def status=(status)
@@ -48,20 +66,34 @@ class ActionItem
48
66
 
49
67
  end
50
68
 
69
+ def to_xml()
70
+
71
+ h = {id: @id, status: status().join(' ')}
72
+ Rexle::Element.new(:action, attributes: h, value: @title)
73
+
74
+ end
75
+
51
76
  private
52
77
 
53
- def logit(label)
54
- @log << [label, Time.now.strftime("%H:%M%P")]
78
+ def logaction(label)
79
+ r = logit label
80
+ @callback.status = r.clone.insert(1, @title) if @callback
55
81
  end
56
82
 
57
83
  end
58
84
 
59
85
  class Actions
60
86
 
87
+ attr_accessor :status
88
+
89
+ def initialize(callback=nil)
90
+ @callback = callback
91
+ end
92
+
61
93
  def import(a)
62
94
 
63
95
  @a = a.map do |x|
64
- x.is_a?(String) ? ActionItem.new(x) : Actions.new.import(x)
96
+ x.is_a?(String) ? ActionItem.new(x, @callback) : Actions.new(@callback).import(x)
65
97
  end
66
98
 
67
99
  return self
@@ -75,25 +107,43 @@ class Actions
75
107
  def to_s()
76
108
  @a.each(&:to_s)
77
109
  end
110
+
111
+ def to_xml()
112
+
113
+ Rexle::Element.new( :actions, value: @a.map(&:to_xml).join)
114
+ #@a.map(&:to_xml)
115
+ end
78
116
 
79
117
  end
80
118
 
81
119
  class ResultItem
120
+ include RecordHelper
121
+
122
+ attr_reader :id
82
123
 
83
- def initialize(s)
124
+ def initialize(s, callback=nil)
125
+ @id = generate_id()
84
126
  @evidence = s
127
+ @callback = callback
85
128
  end
86
129
 
87
130
  def to_s()
88
131
  @evidence
89
132
  end
90
133
 
134
+ def to_xml()
135
+
136
+ h = {id: @id}
137
+ Rexle::Element.new(:result, attributes: h, value: @evidence)
138
+
139
+ end
140
+
91
141
  end
92
142
 
93
143
  class Results
94
144
 
95
- def initialize()
96
-
145
+ def initialize(callback=nil)
146
+ @callback = callback
97
147
  end
98
148
 
99
149
  def import(a)
@@ -121,6 +171,17 @@ class Results
121
171
  end.join("\n")
122
172
  end
123
173
 
174
+ def to_xml()
175
+
176
+ if @a.length < 2 then
177
+ @a[0].to_xml
178
+ else
179
+ Rexle::Element.new( :results, value: @a.map(&:to_xml).join)
180
+ end
181
+
182
+ #@a.map(&:to_xml)
183
+ end
184
+
124
185
  def print_row(id, indent: 0)
125
186
 
126
187
  @a.map.with_index do |x, i|
@@ -150,17 +211,21 @@ end
150
211
  # started (method) adds a status message to the log
151
212
 
152
213
  class StarTask
214
+ include RecordHelper
153
215
 
154
- attr_reader :situation, :task, :actions, :log, :results
216
+ attr_reader :situation, :task, :actions, :log, :results, :id
155
217
 
156
218
  def initialize(src=nil, debug: false)
219
+
157
220
  @debug = debug
221
+ @id = generate_id()
158
222
  @log = []
223
+ @status = ''
159
224
  import src if src
160
225
  end
161
226
 
162
227
  def done()
163
- logit :completed
228
+ logtask :completed
164
229
  end
165
230
 
166
231
  alias completed done
@@ -179,7 +244,7 @@ class StarTask
179
244
 
180
245
  rawlabel, body = x.split(/\n/,2)
181
246
 
182
- [rawlabel.downcase.gsub(/\s+/, '_').to_sym,
247
+ [rawlabel.rstrip.downcase.gsub(/\s+/, '_').to_sym,
183
248
  body.strip.gsub(/^(\s*)[\*\+] /,'\1')]
184
249
 
185
250
  end.to_h
@@ -200,30 +265,50 @@ class StarTask
200
265
  kvx = Kvx.new obj
201
266
  @situation = kvx.situation
202
267
  @task = kvx.task
203
- @actions = Actions.new.import(kvx.action[:items])
204
- @results = Results.new.import(kvx.result[:items])
268
+ @actions = Actions.new(self).import(kvx.action[:items])
269
+ @results = Results.new(self).import(kvx.result[:items])
205
270
 
206
271
  end
207
272
 
208
273
  # adds a status message to the log
209
274
  #
210
275
  def started()
211
- logit :started
276
+ logtask :started
212
277
  end
213
278
 
214
279
  def status()
215
- @log.last
280
+ @status
216
281
  end
217
282
 
218
- def stopped()
219
- logit :stopped
283
+ def status=(s)
284
+ @status = s
220
285
  end
221
286
 
287
+ def stopped()
288
+ logtask :stopped
289
+ end
290
+
291
+ def to_xml()
292
+
293
+ situation = Rexle::Element.new( :situation, value: @situation)
294
+ task = Rexle::Element.new( :task, value: @task)
295
+
296
+ doc = Rexle.new('<star/>')
297
+ doc.root.add situation
298
+ doc.root.add task
299
+ doc.root.add @actions.to_xml
300
+ doc.root.add @results.to_xml
301
+ doc.root.xml pretty: true
302
+
303
+ end
304
+
222
305
  private
223
306
 
224
- def logit(label)
225
- @log << [label, Time.now.strftime("%H:%M%P")]
226
- return label
307
+ def logtask(label)
308
+
309
+ r = logit label
310
+ @status = r
311
+
227
312
  end
228
313
 
229
314
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: startask
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -36,28 +36,28 @@ cert_chain:
36
36
  BWN+6F7HF8UfTUHWCQqk9FoCAYtbfQWLUqZwWN+dLzn1CPK0yoPjuSR59/HShliV
37
37
  IUEz9QfhClpwEVu+leXBe7RwfxADwAWYEfI=
38
38
  -----END CERTIFICATE-----
39
- date: 2022-09-28 00:00:00.000000000 Z
39
+ date: 2022-09-30 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
- name: rxfreadwrite
42
+ name: rxfhelper
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.2'
47
+ version: '1.6'
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 0.2.6
50
+ version: 1.6.3
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - "~>"
56
56
  - !ruby/object:Gem::Version
57
- version: '0.2'
57
+ version: '1.6'
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 0.2.6
60
+ version: 1.6.3
61
61
  description:
62
62
  email: digital.robertson@gmail.com
63
63
  executables: []
metadata.gz.sig CHANGED
Binary file