| Module | OpenWFE::ExpressionTree |
| In: |
lib/openwfe/expool/parser.rb
|
A set of methods for manipulating / querying a process expression tree
Extracts the description out of a process definition tree.
TODO 14964 : add language support here
# 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.
# 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
# File lib/openwfe/expool/parser.rb, line 226
226: def self.to_s (tree)
227:
228: to_xml(tree).to_s
229: end
# 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