| Class | OpenWFE::FlowDict |
| In: |
lib/openwfe/util/dollar.rb
|
| Parent: | Object |
Wrapping a process expression and the current workitem as a Hash object ready for lookup at substitution time.
# File lib/openwfe/util/dollar.rb, line 97
97: def initialize (flow_expression, workitem, default_prefix='v')
98:
99: @flow_expression = flow_expression
100: @workitem = workitem
101: @default_prefix = default_prefix
102: end
# File lib/openwfe/util/dollar.rb, line 104
104: def [] (key)
105:
106: p, k = extract_prefix(key)
107:
108: #puts "### p, k is '#{p}', '#{k}'"
109:
110: return '' if k == ''
111:
112: return @workitem.lookup_attribute(k) if p == 'f'
113:
114: if p == 'v'
115: return '' unless @flow_expression
116: return @flow_expression.lookup_variable(k)
117: end
118:
119: #return call_function(k) if p == 'c'
120: return call_ruby(k) if p == 'r'
121:
122: @workitem.lookup_attribute key
123: end
# File lib/openwfe/util/dollar.rb, line 125
125: def []= (key, value)
126:
127: pr, k = extract_prefix(key)
128:
129: if pr == 'f'
130:
131: @workitem.set_attribute k, value
132:
133: elsif @flow_expression
134:
135: @flow_expression.set_variable k, value
136: end
137: end
# File lib/openwfe/util/dollar.rb, line 139
139: def has_key? (key)
140:
141: p, k = extract_prefix(key)
142:
143: return false if k == ''
144:
145: return @workitem.has_attribute?(k) if p == 'f'
146:
147: if p == 'v'
148: return false unless @flow_expression
149: return (@flow_expression.lookup_variable(k) != nil)
150: end
151:
152: #return true if p == 'c'
153: return true if p == 'r'
154:
155: @workitem.has_attribute?(key)
156: end
# File lib/openwfe/util/dollar.rb, line 175
175: def call_ruby (ruby_code)
176:
177: if @flow_expression
178: return "" \
179: if @flow_expression.ac[:ruby_eval_allowed] != true
180: end
181:
182: #binding = nil
183: #binding = @flow_expression.get_binding if @flow_expression
184: #eval(ruby_code, binding).to_s
185:
186: wi = @workitem
187: workitem = @workitem
188:
189: fexp = nil
190: flow_expression = nil
191: fei = nil
192:
193: if @flow_expression
194: fexp = @flow_expression
195: flow_expression = @flow_expression
196: fei = @flow_expression.fei
197: end
198: #
199: # some simple notations made available to ${ruby:...}
200: # notations
201:
202: #eval(ruby_code, binding).to_s
203: #eval(ruby_code).to_s
204:
205: Rufus::eval_safely(
206: ruby_code, DSUB_SAFETY_LEVEL, binding()).to_s
207: end