cpee-eval-ruby 1.0.3 → 1.0.4

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: da15f25700974469442cef4cdd7b52e6a42c846430bdd5e0d1d1d13eb49a681c
4
- data.tar.gz: 976a7f9f849f4d8bce0eed92fdd717bbf7f6447ac2a4f7ef2a7dd4ffbc071841
3
+ metadata.gz: 7e4dd48f18c69a6f6241d950ad7914a4320bd598cf45c946f9387d14d830c30d
4
+ data.tar.gz: 0eaee079ea7cd2d29cc4cda8e384e58a710b41c2c5bafa4f0b775696c3bd3f91
5
5
  SHA512:
6
- metadata.gz: b3d5e23c492473deb8b3ab3c49dd69f7d6749e95a600a31ed3c7d9df0e53e7dd06e23d71b5053de602423232c86f1cfb1b55b8ae371896f46f59690a5fbfa064
7
- data.tar.gz: 40a311a0c2f834d182bdb5f50e6d35c761ffb0903fee569a68a922ca807fae4e177a5d56fe109df9a2a584a5db6464e01865d77fceb3d0ff5581a09a5c03d391
6
+ metadata.gz: 106283883bded1b8e700ab113771d06eea788165e0c333f0b0aab68e115cc25341c6995fac31f8d8e992d112067690fac299d12760f2a9c8ae14d1280a44ca8a
7
+ data.tar.gz: 3d67ddb14d6bb876afaab120740c993bd336c64a0b652b81143f3565291a7f37a7bca693b3e461e1bdb332bc993b29f0f09d7edfb6a4fea504c2d043a507f148
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee-eval-ruby"
3
- s.version = "1.0.3"
3
+ s.version = "1.0.4"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0-or-later"
6
6
  s.summary = "Ruby eval for the cloud process execution engine (cpee.org)"
@@ -33,7 +33,29 @@ module CPEE
33
33
 
34
34
  class DoIt < Riddl::Implementation #{{{
35
35
  def exec(__struct,__code,result=nil,headers=nil)
36
- __struct.instance_eval(__code)
36
+ __ret = {}
37
+ __cat = catch WEEL::Signal::Again do
38
+ __ret[:res] = __struct.instance_eval(__code)
39
+ WEEL::Signal::Proceed
40
+ end
41
+ if __cat.nil? || __cat == WEEL::Signal::Again
42
+ __ret[:signal] << 'Signal::Again'
43
+ end
44
+ rescue => err
45
+ __ret[:signal] = 'Signal::Error'
46
+ __ret[:signal_text] = (err.backtrace ? err.backtrace[0].gsub(/([\w -_]+):(\d+):in.*/,'\\1, Line \2: ') : '') + err.message
47
+ rescue WEEL::Signal::Again
48
+ __ret[:signal] = 'Signal::Again'
49
+ rescue WEEL::Signal::Error => err
50
+ __ret[:signal] = 'Signal::Error'
51
+ __ret[:signal_text] = (err.backtrace ? err.backtrace[0].gsub(/([\w -_]+):(\d+):in.*/,'\\1, Line \2: ') : '') + err.message
52
+ rescue WEEL::Signal::Stop
53
+ __ret[:signal] = 'Signal::Stop'
54
+ rescue SyntaxError => err
55
+ __ret[:signal] = 'Signal::SyntaxError'
56
+ __ret[:signal_text] = err.message
57
+ ensure
58
+ return __ret
37
59
  end
38
60
 
39
61
  def response
@@ -49,9 +71,11 @@ module CPEE
49
71
  call_result = JSON::parse(@p.shift.value.read) if @p.any? && @p[0].name == 'call_result'
50
72
  call_headers = JSON::parse(@p.shift.value.read) if @p.any? && @p[0].name == 'call_headers'
51
73
 
74
+ local = local[0] if local && local.is_a?(Array)
75
+
52
76
  # symbolize keys, because JSON
53
77
  dataelements.transform_keys!{|k| k.to_sym}
54
- local.first.transform_keys!{|k| k.to_sym} if local
78
+ local.transform_keys!{|k| k.to_sym} if local
55
79
  endpoints.transform_keys!{|k| k.to_sym}
56
80
  additional.transform_keys!{|k| k.to_sym}
57
81
  additional.each_value do |v|
@@ -60,32 +84,45 @@ module CPEE
60
84
 
61
85
  if status || call_result || call_headers
62
86
  struct = WEEL::ManipulateStructure.new(dataelements,endpoints,status,local,additional)
63
- exec struct, code, CPEE::EvalRuby::Translation::simplify_structurized_result(call_result), call_headers
64
- ret = []
65
- ret.push Riddl::Parameter::Simple.new('result','')
87
+ execresult = exec struct, code, CPEE::EvalRuby::Translation::simplify_structurized_result(call_result), call_headers
88
+
89
+ send = []
90
+ send << Riddl::Parameter::Simple.new('result',execresult[:res])
91
+ if execresult[:signal]
92
+ send << Riddl::Parameter::Simple.new('signal',execresult[:signal])
93
+ send << Riddl::Parameter::Simple.new('signal_text',execresult[:signal_text] || '')
94
+ @status = 555
95
+ end
66
96
 
67
97
  res = {}
68
98
  struct.changed_data.each do |e|
69
99
  res[e] = struct.data[e]
70
100
  end
71
101
  if res.any?
72
- ret.push Riddl::Parameter::Complex.new('dataelements','application/json',JSON::generate(data)) if mode == :full
73
- ret.push Riddl::Parameter::Complex.new('changed_dataelements','application/json',JSON::generate(res))
102
+ send << Riddl::Parameter::Complex.new('dataelements','application/json',JSON::generate(data)) if mode == :full
103
+ send << Riddl::Parameter::Complex.new('changed_dataelements','application/json',JSON::generate(res))
74
104
  end
75
105
  res = {}
76
106
  struct.changed_endpoints.each do |e|
77
107
  res[e] = struct.endpoints[e]
78
108
  end
79
109
  if res.any?
80
- ret.push Riddl::Parameter::Complex.new('endpoints','application/json',JSON::generate(endpoints)) if mode == :full
81
- ret.push Riddl::Parameter::Complex.new('changed_endpoints','application/json',JSON::generate(res))
110
+ send << Riddl::Parameter::Complex.new('endpoints','application/json',JSON::generate(endpoints)) if mode == :full
111
+ send << Riddl::Parameter::Complex.new('changed_endpoints','application/json',JSON::generate(res))
82
112
  end
83
- ret.push Riddl::Parameter::Complex.new('changed_status','application/json',JSON::generate(status)) if struct.changed_status
84
- ret
113
+ send << Riddl::Parameter::Complex.new('changed_status','application/json',JSON::generate(status)) if struct.changed_status
114
+ send
85
115
  else
86
116
  struct = WEEL::ReadStructure.new(dataelements,endpoints,local,additional)
87
- res = exec struct, code
88
- Riddl::Parameter::Simple.new('result',res)
117
+ execresult = exec struct, code
118
+ send = []
119
+ send << Riddl::Parameter::Simple.new('result',execresult[:res])
120
+ if execresult[:signal]
121
+ send << Riddl::Parameter::Simple.new('signal',execresult[:signal])
122
+ send << Riddl::Parameter::Simple.new('signal_text',execresult[:signal_text] || '')
123
+ @status = 555
124
+ end
125
+ send
89
126
  end
90
127
  end
91
128
  end #}}}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpee-eval-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler