194: def process_match(cmd_array)
195: return_value = false
196:
197:
198: fail("Invalid command: #{cmd_array.join(" ")}") if cmd_array.length < 3
199: cmd = cmd_array.shift
200: path = cmd_array.shift
201:
202:
203: clause_array = parse_commands(cmd_array.shift)[0]
204: verb = clause_array.shift
205:
206:
207: result = @aug.match(path) || []
208: fail("Error trying to match path '#{path}'") if (result == -1)
209:
210:
211: case verb
212: when "size"
213: fail("Invalid command: #{cmd_array.join(" ")}") if clause_array.length != 2
214: comparator = clause_array.shift
215: arg = clause_array.shift
216: return_value = (result.size.send(comparator, arg))
217: when "include"
218: arg = clause_array.shift
219: return_value = result.include?(arg)
220: when "not_include"
221: arg = clause_array.shift
222: return_value = !result.include?(arg)
223: when "=="
224: begin
225: arg = clause_array.shift
226: new_array = eval arg
227: return_value = (result == new_array)
228: rescue
229: fail("Invalid array in command: #{cmd_array.join(" ")}")
230: end
231: when "!="
232: begin
233: arg = clause_array.shift
234: new_array = eval arg
235: return_value = (result != new_array)
236: rescue
237: fail("Invalid array in command: #{cmd_array.join(" ")}")
238: end
239: end
240: !!return_value
241: end