(use 'uwh.common.jline) (use '[clojure.contrib.io :only (file read-lines)]) (def processor (atom identity)) (defn nil-safe [f] #(if (nil? %) % (f %))) (defn add! [f] (swap! processor #(comp (nil-safe f) %))) (run (commands (transform [f :file] (doall (map (comp (nil-safe println) @processor) (read-lines (file f))))) (reset [] (reset! processor identity)) (include [re :any] (add! #(if (.matches % (str ".*" re ".*")) % nil))) (exclude [re :any] (add! #(if (.matches % (str ".*" re ".*")) nil %))) (replace [re :any s :any] (add! #(.replaceAll % re s))) (exit [] (reset! *exit* true))))