spstrigger_execute 0.5.1 → 0.5.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: 2da2795e6f542774ae51b22fd3157d2bdc411460723677e1ae2cc49c70b38989
4
- data.tar.gz: 0eabb501522ef6dee3b94e861e0f03d0030ffebe40f03eadeb107a365258dcb2
3
+ metadata.gz: c9e2623d7c28470a080c0db5ae3b4e56bcb022875ef6a17f95a2d20aee88f97e
4
+ data.tar.gz: 6314c39efb6225437e01a21c6b29111c5b644b8258474a4f91795850960ee13a
5
5
  SHA512:
6
- metadata.gz: 812c38d5ee15a82b0879795a248c8789a2b9fbf8a40fee32366916a8b48a14bda7d6792dc1853c8d36aaa67e16c469c62de3ee3e71cffa078db782db1dc561e1
7
- data.tar.gz: df0d5ad2a7b6a44c2f33a6f1e1c544e94a5b25a55a405341ea4b45d7ca3a21b6fc9ebaf254f54e87c29f7c528281de566eccfb0148a2378f292f22ef4e5251c7
6
+ metadata.gz: 962243ccdd8f1a0e79b9979ee72b319a020931121d98b7bcaa5485915ecc030f3591b4df17dfbd9f5ec077b4cc574949c6890408b36d06e2e0a2940e7d9b4824
7
+ data.tar.gz: 9af7e7cf7ddca7a312db7e5014b2e85b9face23a1d0564f8ef336d4f0c29d09f70ed47caf4371892fe9106228a46a85a8c7f2b026ce8602077f3569c271393a2
checksums.yaml.gz.sig CHANGED
Binary file
@@ -5,49 +5,51 @@
5
5
  require 'dynarex'
6
6
  require 'chronic_between'
7
7
  require 'xmlregistry_objects'
8
+ require 'rxfreader'
8
9
 
9
10
 
10
11
  class SPSTriggerExecute
11
12
 
12
13
  def initialize(x, reg=nil, polyrexdoc=nil, rws=nil, log: nil)
13
-
14
+
14
15
  log.info 'SPSTriggerExecute/initialize: active' if log
15
-
16
+
16
17
  @rws, @log = rws, log
17
-
18
+
18
19
  @patterns = if x.is_a? Dynarex then
19
-
20
+
20
21
  x.to_h
21
-
22
+
22
23
  elsif x.is_a? Array
23
24
  x
24
25
  else
25
-
26
- buffer, _ = RXFHelper.read x, auto: false
26
+
27
+ buffer, _ = RXFReader.read x
27
28
  dx = buffer[/^<\?dynarex /] ? Dynarex.new.import(buffer) : \
28
29
  Dynarex.new(buffer)
29
30
  dx.to_a
30
-
31
- end
32
-
31
+
32
+ end
33
+
33
34
  if reg and polyrexdoc then
34
- log.info 'SPSTriggerExecute/initialize: before reg' if log
35
+ log.info 'SPSTriggerExecute/initialize: before reg' if log
35
36
  puts 'reg: ' + reg.inspect
36
37
  xro = XMLRegistryObjects.new(reg, polyrexdoc, log: log)
37
- log.info 'SPSTriggerExecute/initialize: after reg' if log
38
- @h = xro.to_h
39
- define_methods = @h.keys.map {|x| "def #{x}() @h[:#{x}] end"}
40
- instance_eval define_methods.join("\n")
41
-
38
+ log.info 'SPSTriggerExecute/initialize: after reg' if log
39
+ @h = xro.to_h
40
+ define_methods = @h.keys.map {|x| "def #{x}() @h[:#{x}] end"}
41
+ instance_eval define_methods.join("\n")
42
+
42
43
  if log then
43
- log.info 'SPSTriggerExecute/initialize: define_methods : ' +
44
+ log.info 'SPSTriggerExecute/initialize: define_methods : ' +
44
45
  self.public_methods.sort.inspect
45
46
  end
46
47
  end
47
48
 
48
49
  end
49
50
 
50
- def match_and_execute(topic: nil, message: message)
51
+ def match_and_execute(topicx=nil, messagex=nil, topic: topicx,
52
+ message: messagex)
51
53
 
52
54
  @log.info 'SPSTriggerExecute/match_and_execute: active' if @log
53
55
  results = find_match topic, message
@@ -55,31 +57,31 @@ class SPSTriggerExecute
55
57
  end
56
58
 
57
59
  alias mae match_and_execute
58
-
60
+
59
61
  def run(s)
60
62
  instance_eval s
61
63
  end
62
-
64
+
63
65
 
64
66
  private
65
67
 
66
68
  def find_match(topicx=nil, message)
67
-
68
-
69
+
70
+
69
71
  @patterns.map.with_index.inject([]) do |r, row|
70
72
 
71
73
  h, i = row
72
74
 
73
75
  topic, msg, conditions, job = \
74
76
  %i(topic msg conditions job).map {|x| h[x].to_s }
75
-
77
+
76
78
  index ||= i + 1
77
-
79
+
78
80
  # note: the index is only present if there is a duplicate
79
81
  # Dynarex record default key
80
82
 
81
83
  t, m = topic.length > 0, msg.length > 0
82
-
84
+
83
85
  result = if topicx && t && m then
84
86
 
85
87
  r1 = topicx.match(/#{topic}/)
@@ -94,98 +96,98 @@ class SPSTriggerExecute
94
96
 
95
97
  elsif m then
96
98
 
97
- r2 = message.match(/#{msg}/)
99
+ r2 = message.match(/#{msg}/)
98
100
  {msg: r2, index: index} if r2
99
101
  else
100
102
  {}
101
- end
103
+ end
102
104
 
103
105
  if result and conditions.length > 0 then
104
-
106
+
105
107
  if @log then
106
- @log.info 'SPSTriggerExecute/find_match: conditions: ' +
108
+ @log.info 'SPSTriggerExecute/find_match: conditions: ' +
107
109
  conditions.inspect
108
110
  end
109
111
 
110
112
  named_match = message.match(/#{msg}/)
111
-
113
+
112
114
  variable_assignment = if named_match then
113
-
115
+
114
116
  named_match.names.inject('') do |rs, name|
115
117
 
116
118
  m = msg =~ /\?<#{name}\>\\d+/ ? 'to_i' : 'to_s'
117
- rs << "#{name} = named_match[:#{name}].#{m}\n"
119
+ rs << "#{name} = named_match[:#{name}].#{m}\n"
118
120
  end
119
-
120
- else ''
121
+
122
+ else ''
121
123
  end
122
124
 
123
125
 
124
126
  success = eval (variable_assignment + conditions)
125
127
 
126
128
  if @log then
127
- @log.info 'SPSTriggerExecute/find_match: success : ' +
129
+ @log.info 'SPSTriggerExecute/find_match: success : ' +
128
130
  success.inspect
129
131
  end
130
-
132
+
131
133
  result = nil unless success
132
134
  end
133
135
 
134
136
  result ? r << result : r
135
-
137
+
136
138
  end
137
139
  end
138
140
 
139
-
141
+
140
142
  # not yet implemented
141
- =begin
143
+ =begin
142
144
  def method_missing(method_name, *args)
143
145
 
144
146
  job = args.shift
145
147
  # Rsc object call goes here
146
148
  @log.debug 'package: ' + package.inspect
147
149
  @rws.run_job package=method_name, job, {}, args
148
- end
149
- =end
150
-
150
+ end
151
+ =end
152
+
151
153
  def prepare_jobs(results)
152
-
154
+
153
155
  @log.info 'SPSTriggerExecute/prepare_jobs: active' if @log
154
156
 
155
157
  results.inject([]) do |r,h|
156
-
158
+
157
159
  if @log then
158
- @log.info 'SPSTriggerExecute/prepare_jobs: inside inject h: ' +
159
- h.inspect
160
+ @log.info 'SPSTriggerExecute/prepare_jobs: inside inject h: ' +
161
+ h.inspect
160
162
  end
161
163
 
162
164
  a = []
163
165
  a += h[:topic].captures if h[:topic] && h[:topic].captures.any?
164
166
  a += h[:msg].captures if h[:msg]
165
-
167
+
166
168
  params = {}
167
169
  params.merge!(h[:topic].named_captures) if h[:topic]
168
- params.merge!(h[:msg].named_captures) if h[:msg]
169
-
170
+ params.merge!(h[:msg].named_captures) if h[:msg]
171
+
170
172
  jobs = @patterns[h[:index].to_i - 1][:job]
171
-
172
-
173
+
174
+
173
175
  jobs.split(/\s*;\s*/).each do |job|
174
176
 
175
177
  job_args = job.split + a
176
-
178
+
177
179
  if job[/^\/\//] then
178
180
 
179
181
  r << [:rse, job_args, params]
180
182
 
181
-
183
+
182
184
  elsif job[/^rse:\/\//]
183
-
184
- r << [:rse_uri, job]
185
-
185
+
186
+ r << [:rse_uri, job]
187
+
186
188
  elsif job[/^[$\w\/]+:/]
187
189
 
188
- topic_message = job.gsub(/\$\d/) do |x|
190
+ topic_message = job.gsub(/\$\d/) do |x|
189
191
 
190
192
  i = x[/\d$/].to_i - 1
191
193
  x.sub(/\$\d/, a[i].to_s)
@@ -193,33 +195,33 @@ class SPSTriggerExecute
193
195
 
194
196
  topic_message = topic_message\
195
197
  .gsub(/![Tt]ime/,Time.now.strftime("%a %H:%M%P"))\
196
- .gsub(/![Dd]ate/,Time.now.strftime("%d %b"))
198
+ .gsub(/![Dd]ate/,Time.now.strftime("%d %b"))
199
+
197
200
 
198
-
199
- r << [:sps, topic_message]
201
+ r << [:sps, topic_message]
200
202
  else
201
-
202
- statement = job.gsub(/\$\d/) do |x|
203
+
204
+ statement = job.gsub(/\$\d/) do |x|
203
205
  i = x[/\d$/].to_i - 1
204
206
  x.sub(/\$\d/, a[i].to_s)
205
207
  end
206
-
208
+
207
209
  r << [:ste, statement]
208
-
210
+
209
211
  end
210
212
  end
211
-
213
+
212
214
  @log.info 'SPSTriggerExecute/prepare_jobs: result: ' if @log
213
-
214
- r
215
-
215
+
216
+ r
217
+
216
218
  end
217
219
  end
218
220
 
219
221
  def time()
220
222
 
221
223
  t = Time.now
222
-
224
+
223
225
  def t.within?(times)
224
226
  ChronicBetween.new(times).within? Time.now
225
227
  end
@@ -230,9 +232,9 @@ class SPSTriggerExecute
230
232
 
231
233
  def t.<(x)
232
234
  x.is_a?(String) ? self < Chronic.parse(x) : super(x)
233
- end
235
+ end
234
236
 
235
237
  t
236
238
  end
237
-
239
+
238
240
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spstrigger_execute
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNjI5MjIxNzI0WhcN
15
- MjEwNjI5MjIxNzI0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDVqUe8
17
- pmbJAopTKvjEJIAPDuz6nT/fXONDRQH0cAaQyhxJWS6C3/iQPMxA+XrynjRNrKKM
18
- 8ZdzbmSYBNti5FDJmjk/bnpoYw+b9vhx8eMu+PuIOZa8wDKJ8GTj2+ut+f1KHSH+
19
- o60yZGJ6oawmAG2a34/sfMP9fk12IN14uzf5CrMFnbOqrDmoaNn+I+WKt7LcQAl2
20
- Wwrebq8ycARUEkfKsSEyRWMT06CS22vkpLUlXBk1I6Sk8zq1+SDAzxppLzJAlEaF
21
- K0dbeT7gMQTS4Gxdun4uIx45cB2aRYfVuxeah6eKUz1NhX+VR6acT3xPvX2K5/Jf
22
- 30W9BPShkDZoMnzMW2JcJSGwW8GQ7UIVLO1YXwf22nSosG/r/cY3XLkvSdMNAb3O
23
- OC5bM/nsyAk3R7zUvHv4prIjmK5aSjLqc4nQAdaH2+aUqPGybLHF7ms1DUq/9wy0
24
- yE9YIbA7z4AHZSFynP2Dv0NqCDf1EFiyA40+u1sKg4FeSqapKxp2ATngGTECAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUCHvuG7hh
26
- 26Kzn22NAiwoKFhsxIYwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMjIzMTA0NzE1WhcN
15
+ MjMwMjIzMTA0NzE1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC+4XPH
17
+ 9FRtD3RhUUJIPj2LpnAkre+W29nVImFxhnZKerccXsJUOkLpaN66NPsRAUzmCSo/
18
+ raGXDb86cFOTww3+IBacxmHyJPYf52YcHAr8l+TmWa405LKtNtTzYEy8T4x1pklI
19
+ tJtTZz42KfdoWJEeYYWSxBhzT7Rq8k3xuy48sze+epy2o6muxuC1xfYJRL5LhKau
20
+ v76h/2UL4HusFaPuFL/oIJfhi2wAYB5naUwtgFJ2BUaro3M9//ZK7D9jtbNDVXVX
21
+ WMHFZL1doect1DjMvDAsOJs+322893NMArQAoBgsYNTZ24OmoSxBLI2PgVJCzZYx
22
+ 1oJ1for6Tg4xauyJ4XivHpA9OeozL7WQeAxcbOSbQyJ3fFC/Qf7VD/JsxZgJYLzA
23
+ GJf0v/3Q2I+M7k7MIvMb4Nm8y/h6Ue8TeIZ5TUYgW+DyheVugcCsMGgKEIoIaQNp
24
+ +/ycgf4pDZWNXo7g8j07izQjAntx7puC5eOEsXPHp50IsAR3J3fY9gp3bBsCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU5XsTfIel
26
+ Geu3LvSXZ5DRdspxp+QwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAmyhsb8tIuX3k0pvZEhYVNPIctQMyNcoinb7BgXvB
29
- +8jDZOl7ZPISOPP/kFVv3sD7Sp8XDcb/ct7WamMDE5l+5k0sGZtBugLT/GgrixJ5
30
- zfEux3GWc3tPA+NkI+H+k50ZLQ4mAJ/9VImw0tfKVUEUOEgPaENZV8XJLa3dCGvV
31
- gXW6gFYvBVCoNL/h9ZRPlP1eXJH+eNW9GqSAcsilrx0b/C9PyjcMJz9t3nnOIYvi
32
- 2p9YJMAzBMmvB5D3B4/lPr+VJ0zR319cxI9N9YRd1KwBomXhub/EnA9GS1iJwm55
33
- 3O6k2o1QoBVeYO0SRrOPiSmV0diingmoZqULI9rPbq77tWEkx/t5Uy3Gwr3DExzS
34
- 9LvU6koydknV0I3IUpZ8cCb81rWu5HUKtg34JZVX+nfZgXGpfQiz493d1StnubYt
35
- bv/D+IkTXVIRFexxGsN0rs2wV1q6NMFxALhsnopEN1z1z5qu8Nnai2cK1ZrBy/0U
36
- 7gtOeb7BR55E/7l20ZzKGZZe
28
+ BgkqhkiG9w0BAQsFAAOCAYEABQ3TeaY6kPDrK31jM+beTnexZ0GRXnHk8d2w05Lk
29
+ Dtus0Ll6kdJANnG3w+DA8/4/NbyZykCHJ0IFRNJxQk1K/A2l2Ejp56x/byB77bUS
30
+ MtiTlPceZMzofC6P0Jw4YmATkitddFSDzbWk7SJBzh7ES1ZU7akiMxg5a1zgVdMi
31
+ 3qJC24Kepyrrdjw/LNbwQStp+Wi0vn0SLtlGcwEUK+GX9sgnlFM7DACmFLa+Q07v
32
+ VMMWMT++elvuzJWh8nzyoC61wFHNv7VuFS3JLS628/fvcaJSv/14kCVxXNvXnB+0
33
+ pXBBvWBPrM0AbZd/BcMhjQOU4gFBwTZYQPNTIYuxY5+qeSklhlHOxxqjLZ80FNIW
34
+ mwE7uxev8HERyFxkyylLiD9Rn0BbWPdpvxdMR/ERf/KjoRJt+YHtqRcfHlDI7WYd
35
+ kcanouQmEubFZ26md+j9mhOx9r117kQmXW19FYMG7BO9KiM1WxGVGt02zAF1OLwF
36
+ yBsqw3zhA/dhp5I6skt1EWsm
37
37
  -----END CERTIFICATE-----
38
- date: 2020-06-29 00:00:00.000000000 Z
38
+ date: 2022-02-23 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: dynarex
@@ -43,62 +43,62 @@ dependencies:
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.8'
46
+ version: '1.9'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 1.8.25
49
+ version: 1.9.6
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '1.8'
56
+ version: '1.9'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 1.8.25
59
+ version: 1.9.6
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: chronic_between
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: '0.3'
66
+ version: '0.5'
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 0.3.1
69
+ version: 0.5.0
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '0.3'
76
+ version: '0.5'
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 0.3.1
79
+ version: 0.5.0
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: xmlregistry_objects
82
82
  requirement: !ruby/object:Gem::Requirement
83
83
  requirements:
84
84
  - - "~>"
85
85
  - !ruby/object:Gem::Version
86
- version: '0.7'
86
+ version: '0.8'
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.7.5
89
+ version: 0.8.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.7'
96
+ version: '0.8'
97
97
  - - ">="
98
98
  - !ruby/object:Gem::Version
99
- version: 0.7.5
99
+ version: 0.8.0
100
100
  description:
101
- email: james@jamesrobertson.eu
101
+ email: digital.robertson@gmail.com
102
102
  executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  requirements: []
126
- rubygems_version: 3.0.3
126
+ rubygems_version: 3.2.22
127
127
  signing_key:
128
128
  specification_version: 4
129
129
  summary: An SPS client built for reponding to messages which match keywords and conditions.
metadata.gz.sig CHANGED
Binary file