cpee-eval-ruby 1.0.2 → 1.0.4

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: 4051ed86dfff3ee72cf3ee3ae43611c68a8c48b1710ca51960dd98a7e3555b41
4
- data.tar.gz: d23f65b39f2388002f201aad7ea7a75961b3f14acd800fc538a36e5efb385ebe
3
+ metadata.gz: 7e4dd48f18c69a6f6241d950ad7914a4320bd598cf45c946f9387d14d830c30d
4
+ data.tar.gz: 0eaee079ea7cd2d29cc4cda8e384e58a710b41c2c5bafa4f0b775696c3bd3f91
5
5
  SHA512:
6
- metadata.gz: 85746873a8e47626061c88ea7963455ec40cde05aa8b9c29c19998d59aa503ffe397a9da05393b638f25b4ebd848f05e2bb90118c5a22ec40c82150aa535bdce
7
- data.tar.gz: 4e2a48a7da4011387f1f491905a09be25d72ad0b091137bf4a07ad332997d4151d50309643497dc318e4b8c0c906907cb4898e14fc760ebfeb1a9aa1f1ea82af
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.2"
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)"
@@ -21,4 +21,5 @@ Gem::Specification.new do |s|
21
21
  s.homepage = 'http://cpee.org/'
22
22
 
23
23
  s.add_runtime_dependency 'riddl', '~> 1.0'
24
+ s.add_runtime_dependency 'cpee', '~> 2.1', '>= 2.1.67'
24
25
  end
@@ -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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpee-eval-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
8
8
  autorequire:
9
9
  bindir: tools
10
10
  cert_chain: []
11
- date: 2024-09-18 00:00:00.000000000 Z
11
+ date: 2024-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: riddl
@@ -24,6 +24,26 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: cpee
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.1'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 2.1.67
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.1'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 2.1.67
27
47
  description: see http://cpee.org
28
48
  email: juergen.mangler@gmail.com
29
49
  executables: