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