spstrigger_execute 0.4.10 → 0.5.2

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