Module OpenWFE::ExpressionTree
In: lib/openwfe/expool/parser.rb

A set of methods for manipulating / querying a process expression tree

Methods

Public Class methods

Extracts the description out of a process definition tree.

TODO 14964 : add language support here

[Source]

     # File lib/openwfe/expool/parser.rb, line 151
151:         def self.get_description (tree)
152: 
153:             return tree.last.first.to_s if tree.first == 'description'
154: 
155:             tree.last.each do |child|
156:                 d = get_description(child)
157:                 return d if d
158:             end
159: 
160:             nil
161:         end

Returns a string containing the ruby code that generated this raw representation tree.

[Source]

     # File lib/openwfe/expool/parser.rb, line 167
167:         def self.to_code_s (tree, indentation = 0)
168: 
169:             s = ""
170:             tab = "    "
171:             ind = tab * indentation
172: 
173:             s << ind
174:             s << OpenWFE::make_safe(tree.first)
175: 
176:             sa = ""
177:             tree[1].each do |k, v|
178:                 sa << ", :#{OpenWFE::to_underscore(k)} => '#{v}'"
179:             end
180:             s << sa[1..-1] if sa.length > 0
181: 
182:             if tree.last.length > 0
183:                 s << " do\n"
184:                 tree.last.each do |child|
185:                     #if child.respond_to?(:to_code_s)
186:                     if child.is_a?(Array) and child.size == 3 # and ...
187:                         s << to_code_s(child, indentation + 1)
188:                     else
189:                         s << ind
190:                         s << tab
191:                         s << "'#{child.to_s}'"
192:                     end
193:                     s << "\n"
194:                 end
195:                 s << ind
196:                 s << "end"
197:             end
198: 
199:             s
200:         end

[Source]

     # File lib/openwfe/expool/parser.rb, line 226
226:         def self.to_s (tree)
227: 
228:             to_xml(tree).to_s
229:         end

[Source]

     # File lib/openwfe/expool/parser.rb, line 202
202:         def self.to_xml (tree)
203: 
204:             elt = REXML::Element.new tree.first
205: 
206:             tree[1].each do |k, v|
207: 
208:                 elt.attributes[k] = v
209:             end
210: 
211:             tree.last.each do |child|
212: 
213:                 #if child.kind_of?(SimpleExpRepresentation)
214:                 if child.is_a?(Array) and child.size == 3
215: 
216:                     elt << to_xml(child)
217:                 else
218: 
219:                     elt << REXML::Text.new(child.to_s)
220:                 end
221:             end
222: 
223:             elt
224:         end

[Validate]