dave wrote:

>  list.delete_if(){
>    d = false
>    tokens.each {|t|  # method, args, object
>      if (! d)
>        d = true if send(t[0].to_sym, t[1], t[2..-1])        
>      end
>    b
>    }
>  }
>
>is there a better way?
>  
>
I assume you mean "shorter without being unreadable". Well, it's 
subjective but...:

  list.delete_if {
    tokens.inject(false) {|d,t|  # method, args, object
        d ||= send(t[0], t[1], t[2..-1])        
    }
  }

That's equivalent functionality, AFAICT, but I'm not sure what you're trying to do. delete_if() passes a parameter to your block (of each individual item). Here, the code will either do nothing, or clear the entire Array. Should the first line be
  list.delete_if {|t|
?

Devin