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