185: def process_match(cmd_array)
186: return_value = false
187:
188:
189: fail("Invalid command: #{cmd_array.join(" ")}") if cmd_array.length < 3
190: cmd = cmd_array.shift
191: path = cmd_array.shift
192:
193:
194: clause_array = parse_commands(cmd_array.shift)[0]
195: verb = clause_array.shift
196:
197:
198: result = @aug.match(path) || []
199:
200: case verb
201: when "size"
202: fail("Invalid command: #{cmd_array.join(" ")}") if clause_array.length != 2
203: comparator = clause_array.shift
204: arg = clause_array.shift
205: return_value = (result.size.send(comparator, arg))
206: when "include"
207: arg = clause_array.shift
208: return_value = result.include?(arg)
209: when "=="
210: begin
211: arg = clause_array.shift
212: new_array = eval arg
213: return_value = (result == new_array)
214: rescue
215: fail("Invalid array in command: #{cmd_array.join(" ")}")
216: end
217: when "!="
218: begin
219: arg = clause_array.shift
220: new_array = eval arg
221: return_value = (result != new_array)
222: rescue
223: fail("Invalid array in command: #{cmd_array.join(" ")}")
224: end
225: end
226: return !!return_value
227: end