spstrigger_execute 0.4.10 → 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: eea0f188d7b53d0c88ce65d6977121e19c7def29cea073333924750f84994e56
4
- data.tar.gz: 6fbea2b50266897f0c7a7a53b18fea1772aa7a4a74b78b21cd7e627cf52541c3
3
+ metadata.gz: c9e2623d7c28470a080c0db5ae3b4e56bcb022875ef6a17f95a2d20aee88f97e
4
+ data.tar.gz: 6314c39efb6225437e01a21c6b29111c5b644b8258474a4f91795850960ee13a
5
5
  SHA512:
6
- metadata.gz: e4d94da641beb9ee15019ec3cb80865051cfa964219cab93451d171c35a4ea4a5c6acad11ddd35248befcdecfda020f41153b5be141a98e6845d365c61d031d3
7
- data.tar.gz: e9b2bf6b763558e174b47c726d3115223ffb33f5552915d8dfbbfc9760caea440272ee78f3f78aef5ac0789a6e3139393117b0606e662285b252943844961e7d
6
+ metadata.gz: 962243ccdd8f1a0e79b9979ee72b319a020931121d98b7bcaa5485915ecc030f3591b4df17dfbd9f5ec077b4cc574949c6890408b36d06e2e0a2940e7d9b4824
7
+ data.tar.gz: 9af7e7cf7ddca7a312db7e5014b2e85b9face23a1d0564f8ef336d4f0c29d09f70ed47caf4371892fe9106228a46a85a8c7f2b026ce8602077f3569c271393a2
checksums.yaml.gz.sig CHANGED
Binary file
@@ -5,51 +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
-
33
-
34
-
31
+
32
+ end
33
+
35
34
  if reg and polyrexdoc then
36
- log.info 'SPSTriggerExecute/initialize: before reg' if log
35
+ log.info 'SPSTriggerExecute/initialize: before reg' if log
37
36
  puts 'reg: ' + reg.inspect
38
37
  xro = XMLRegistryObjects.new(reg, polyrexdoc, log: log)
39
- log.info 'SPSTriggerExecute/initialize: after reg' if log
40
- @h = xro.to_h
41
- define_methods = @h.keys.map {|x| "def #{x}() @h[:#{x}] end"}
42
- instance_eval define_methods.join("\n")
43
-
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
+
44
43
  if log then
45
- log.info 'SPSTriggerExecute/initialize: define_methods : ' +
44
+ log.info 'SPSTriggerExecute/initialize: define_methods : ' +
46
45
  self.public_methods.sort.inspect
47
46
  end
48
47
  end
49
48
 
50
49
  end
51
50
 
52
- def match_and_execute(topic: nil, message: message)
51
+ def match_and_execute(topicx=nil, messagex=nil, topic: topicx,
52
+ message: messagex)
53
53
 
54
54
  @log.info 'SPSTriggerExecute/match_and_execute: active' if @log
55
55
  results = find_match topic, message
@@ -57,31 +57,31 @@ class SPSTriggerExecute
57
57
  end
58
58
 
59
59
  alias mae match_and_execute
60
-
60
+
61
61
  def run(s)
62
62
  instance_eval s
63
63
  end
64
-
64
+
65
65
 
66
66
  private
67
67
 
68
68
  def find_match(topicx=nil, message)
69
-
70
-
69
+
70
+
71
71
  @patterns.map.with_index.inject([]) do |r, row|
72
72
 
73
73
  h, i = row
74
74
 
75
75
  topic, msg, conditions, job = \
76
76
  %i(topic msg conditions job).map {|x| h[x].to_s }
77
-
77
+
78
78
  index ||= i + 1
79
-
79
+
80
80
  # note: the index is only present if there is a duplicate
81
81
  # Dynarex record default key
82
82
 
83
83
  t, m = topic.length > 0, msg.length > 0
84
-
84
+
85
85
  result = if topicx && t && m then
86
86
 
87
87
  r1 = topicx.match(/#{topic}/)
@@ -96,89 +96,98 @@ class SPSTriggerExecute
96
96
 
97
97
  elsif m then
98
98
 
99
- r2 = message.match(/#{msg}/)
99
+ r2 = message.match(/#{msg}/)
100
100
  {msg: r2, index: index} if r2
101
101
  else
102
102
  {}
103
- end
103
+ end
104
104
 
105
105
  if result and conditions.length > 0 then
106
-
106
+
107
107
  if @log then
108
- @log.info 'SPSTriggerExecute/find_match: conditions: ' +
108
+ @log.info 'SPSTriggerExecute/find_match: conditions: ' +
109
109
  conditions.inspect
110
110
  end
111
111
 
112
112
  named_match = message.match(/#{msg}/)
113
-
113
+
114
114
  variable_assignment = if named_match then
115
-
115
+
116
116
  named_match.names.inject('') do |rs, name|
117
117
 
118
118
  m = msg =~ /\?<#{name}\>\\d+/ ? 'to_i' : 'to_s'
119
- rs << "#{name} = named_match[:#{name}].#{m}\n"
119
+ rs << "#{name} = named_match[:#{name}].#{m}\n"
120
120
  end
121
-
122
- else ''
121
+
122
+ else ''
123
123
  end
124
124
 
125
125
 
126
126
  success = eval (variable_assignment + conditions)
127
127
 
128
128
  if @log then
129
- @log.info 'SPSTriggerExecute/find_match: success : ' +
129
+ @log.info 'SPSTriggerExecute/find_match: success : ' +
130
130
  success.inspect
131
131
  end
132
-
132
+
133
133
  result = nil unless success
134
134
  end
135
135
 
136
136
  result ? r << result : r
137
-
137
+
138
138
  end
139
139
  end
140
140
 
141
-
141
+
142
142
  # not yet implemented
143
- =begin
143
+ =begin
144
144
  def method_missing(method_name, *args)
145
145
 
146
146
  job = args.shift
147
147
  # Rsc object call goes here
148
148
  @log.debug 'package: ' + package.inspect
149
149
  @rws.run_job package=method_name, job, {}, args
150
- end
151
- =end
152
-
150
+ end
151
+ =end
152
+
153
153
  def prepare_jobs(results)
154
-
154
+
155
155
  @log.info 'SPSTriggerExecute/prepare_jobs: active' if @log
156
156
 
157
157
  results.inject([]) do |r,h|
158
-
158
+
159
159
  if @log then
160
- @log.info 'SPSTriggerExecute/prepare_jobs: inside inject h: ' +
161
- h.inspect
160
+ @log.info 'SPSTriggerExecute/prepare_jobs: inside inject h: ' +
161
+ h.inspect
162
162
  end
163
163
 
164
164
  a = []
165
165
  a += h[:topic].captures if h[:topic] && h[:topic].captures.any?
166
166
  a += h[:msg].captures if h[:msg]
167
-
167
+
168
+ params = {}
169
+ params.merge!(h[:topic].named_captures) if h[:topic]
170
+ params.merge!(h[:msg].named_captures) if h[:msg]
171
+
168
172
  jobs = @patterns[h[:index].to_i - 1][:job]
169
-
170
-
173
+
174
+
171
175
  jobs.split(/\s*;\s*/).each do |job|
172
176
 
173
177
  job_args = job.split + a
174
-
178
+
175
179
  if job[/^\/\//] then
176
180
 
177
- r << [:rse, job_args]
178
-
181
+ r << [:rse, job_args, params]
182
+
183
+
184
+ elsif job[/^rse:\/\//]
185
+
186
+ r << [:rse_uri, job]
187
+
179
188
  elsif job[/^[$\w\/]+:/]
180
189
 
181
- topic_message = job.gsub(/\$\d/) do |x|
190
+ topic_message = job.gsub(/\$\d/) do |x|
182
191
 
183
192
  i = x[/\d$/].to_i - 1
184
193
  x.sub(/\$\d/, a[i].to_s)
@@ -186,33 +195,33 @@ class SPSTriggerExecute
186
195
 
187
196
  topic_message = topic_message\
188
197
  .gsub(/![Tt]ime/,Time.now.strftime("%a %H:%M%P"))\
189
- .gsub(/![Dd]ate/,Time.now.strftime("%d %b"))
198
+ .gsub(/![Dd]ate/,Time.now.strftime("%d %b"))
199
+
190
200
 
191
-
192
- r << [:sps, topic_message]
201
+ r << [:sps, topic_message]
193
202
  else
194
-
195
- statement = job.gsub(/\$\d/) do |x|
203
+
204
+ statement = job.gsub(/\$\d/) do |x|
196
205
  i = x[/\d$/].to_i - 1
197
206
  x.sub(/\$\d/, a[i].to_s)
198
207
  end
199
-
208
+
200
209
  r << [:ste, statement]
201
-
210
+
202
211
  end
203
212
  end
204
-
213
+
205
214
  @log.info 'SPSTriggerExecute/prepare_jobs: result: ' if @log
206
-
207
- r
208
-
215
+
216
+ r
217
+
209
218
  end
210
219
  end
211
220
 
212
221
  def time()
213
222
 
214
223
  t = Time.now
215
-
224
+
216
225
  def t.within?(times)
217
226
  ChronicBetween.new(times).within? Time.now
218
227
  end
@@ -223,9 +232,9 @@ class SPSTriggerExecute
223
232
 
224
233
  def t.<(x)
225
234
  x.is_a?(String) ? self < Chronic.parse(x) : super(x)
226
- end
235
+ end
227
236
 
228
237
  t
229
238
  end
230
-
239
+
231
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.4.10
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,28 +10,32 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTE3MTAyOTEwMjIwM1oXDTE4MTAyOTEwMjIwM1owSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBALdpz4D9ctI58pEE/7Web5ATNz9Iz5wRTDyWPZXLK2ND5LBWib5zaBBBiV1q
19
- RBDH7sqkmUpPTUFcqx9cDHpArcqomCHd9q40muLlYjaUvFfxmDBJIBX7qoY0HdEm
20
- e5cQRhdH/KeLPnYrVeI1Thp+hr2FjRYboLXh+/z8iFUiCO3gLZcPhnHR2ovWYqYF
21
- ZgEGgVrngikLKrQ2cASQj7QU/SjJlQpS/WDEB5MEKKnu6xmA561uzHYcu9fVWyvD
22
- YvFkQjtscHw5u7vPPYTEqiUb8UruRnBYfLp8lnnLIIwEEZcLYXvksV2LstE4gLaN
23
- O576yhzgipq30mfIEE9V3LMsYPMCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQUwV3xbv465FPDt+UUsUZoA8eSTeswJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEANq0T/0Wo
27
- vWGM1aDHmvxq0bmOn7BBtXCODQY410+OWlne1smLJfEKhW9lcyPW7KW5WiSt+HRD
28
- mtL30aH2fOBx26IvnjIQeZgQrDZEicM58ZWtWU1EqUHNc7z/+YFXk693iDp2cCt4
29
- tCKOGXHyYQfEdfa7B5jhUthtWyMQnvIX2k3gTEB1keesGCvKxFDdh6pSBXpgge2T
30
- FBo7GZfN5O1E1SqOqPCgwGBZwF9C46Iu2HXroM9vxhNgT2N893mWYlNmmDxB6VFD
31
- Fb4PX9Gy1KygSUYIf5FBCAghq1QMa/KLXbYAar3QWRmU/0Uke/W3lSJt9OuQNJlF
32
- na7EIuI+Z46Jhw==
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
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
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
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
33
37
  -----END CERTIFICATE-----
34
- date: 2018-08-13 00:00:00.000000000 Z
38
+ date: 2022-02-23 00:00:00.000000000 Z
35
39
  dependencies:
36
40
  - !ruby/object:Gem::Dependency
37
41
  name: dynarex
@@ -39,62 +43,62 @@ dependencies:
39
43
  requirements:
40
44
  - - "~>"
41
45
  - !ruby/object:Gem::Version
42
- version: '1.8'
46
+ version: '1.9'
43
47
  - - ">="
44
48
  - !ruby/object:Gem::Version
45
- version: 1.8.1
49
+ version: 1.9.6
46
50
  type: :runtime
47
51
  prerelease: false
48
52
  version_requirements: !ruby/object:Gem::Requirement
49
53
  requirements:
50
54
  - - "~>"
51
55
  - !ruby/object:Gem::Version
52
- version: '1.8'
56
+ version: '1.9'
53
57
  - - ">="
54
58
  - !ruby/object:Gem::Version
55
- version: 1.8.1
59
+ version: 1.9.6
56
60
  - !ruby/object:Gem::Dependency
57
61
  name: chronic_between
58
62
  requirement: !ruby/object:Gem::Requirement
59
63
  requirements:
60
64
  - - "~>"
61
65
  - !ruby/object:Gem::Version
62
- version: '0.3'
66
+ version: '0.5'
63
67
  - - ">="
64
68
  - !ruby/object:Gem::Version
65
- version: 0.3.1
69
+ version: 0.5.0
66
70
  type: :runtime
67
71
  prerelease: false
68
72
  version_requirements: !ruby/object:Gem::Requirement
69
73
  requirements:
70
74
  - - "~>"
71
75
  - !ruby/object:Gem::Version
72
- version: '0.3'
76
+ version: '0.5'
73
77
  - - ">="
74
78
  - !ruby/object:Gem::Version
75
- version: 0.3.1
79
+ version: 0.5.0
76
80
  - !ruby/object:Gem::Dependency
77
81
  name: xmlregistry_objects
78
82
  requirement: !ruby/object:Gem::Requirement
79
83
  requirements:
80
84
  - - "~>"
81
85
  - !ruby/object:Gem::Version
82
- version: '0.7'
86
+ version: '0.8'
83
87
  - - ">="
84
88
  - !ruby/object:Gem::Version
85
- version: 0.7.5
89
+ version: 0.8.0
86
90
  type: :runtime
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
93
  requirements:
90
94
  - - "~>"
91
95
  - !ruby/object:Gem::Version
92
- version: '0.7'
96
+ version: '0.8'
93
97
  - - ">="
94
98
  - !ruby/object:Gem::Version
95
- version: 0.7.5
99
+ version: 0.8.0
96
100
  description:
97
- email: james@jamesrobertson.eu
101
+ email: digital.robertson@gmail.com
98
102
  executables: []
99
103
  extensions: []
100
104
  extra_rdoc_files: []
@@ -119,8 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
123
  - !ruby/object:Gem::Version
120
124
  version: '0'
121
125
  requirements: []
122
- rubyforge_project:
123
- rubygems_version: 2.7.6
126
+ rubygems_version: 3.2.22
124
127
  signing_key:
125
128
  specification_version: 4
126
129
  summary: An SPS client built for reponding to messages which match keywords and conditions.
metadata.gz.sig CHANGED
Binary file