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.

Methods

[]   []=   call_ruby   extract_prefix   has_key?   new  

Public Class methods

[Source]

     # 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

Public Instance methods

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

Protected Instance methods

[Source]

     # 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

[Source]

     # File lib/openwfe/util/dollar.rb, line 160
160:             def extract_prefix (key)
161:                 i = key.index(':')
162:                 return @default_prefix, key if not i
163:                 [ key[0..0], key[i+1..-1] ]
164:             end

[Validate]