From 5f36e76c3cf3ce97a4d6f9c78f78d2298a0a095c Mon Sep 17 00:00:00 2001 From: Fanis Kalimullin Date: Mon, 25 Mar 2013 23:12:04 +0400 Subject: [PATCH 1/4] first commit --- src/clojure_course_task02/core.clj | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/clojure_course_task02/core.clj b/src/clojure_course_task02/core.clj index e4da2b7..b2484ea 100644 --- a/src/clojure_course_task02/core.clj +++ b/src/clojure_course_task02/core.clj @@ -1,14 +1,22 @@ (ns clojure-course-task02.core (:gen-class)) +(defn get-directories [path] + (filter #(.isDirectory %) (file-seq (clojure.java.io/file path)))) + +(defn get-files [path] + (filter #(.isFile %) (.listFiles path))) (defn find-files [file-name path] - "TODO: Implement searching for a file using his name as a regexp." - nil) + (->> path + get-directories + (pmap get-files) + flatten + (pmap #(.getName %)) + (filter #(not (nil? (re-find (re-pattern file-name) %)))))) (defn usage [] (println "Usage: $ run.sh file_name path")) - (defn -main [file-name path] (if (or (nil? file-name) (nil? path)) From 57e8a8f1425febd71cc625d9550d91fe9598990e Mon Sep 17 00:00:00 2001 From: Fanis Kalimullin Date: Mon, 25 Mar 2013 23:38:13 +0400 Subject: [PATCH 2/4] race condition fixed --- src/clojure_course_task02/core.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/clojure_course_task02/core.clj b/src/clojure_course_task02/core.clj index b2484ea..7255708 100644 --- a/src/clojure_course_task02/core.clj +++ b/src/clojure_course_task02/core.clj @@ -10,9 +10,9 @@ (defn find-files [file-name path] (->> path get-directories - (pmap get-files) + (map get-files) flatten - (pmap #(.getName %)) + (map #(.getName %)) (filter #(not (nil? (re-find (re-pattern file-name) %)))))) (defn usage [] From 66e32fefc37f1915a4bca6ee97c4da37aaebf9b6 Mon Sep 17 00:00:00 2001 From: Fanis Kalimullin Date: Tue, 26 Mar 2013 13:47:17 +0400 Subject: [PATCH 3/4] revert to previous --- src/clojure_course_task02/core.clj | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/clojure_course_task02/core.clj b/src/clojure_course_task02/core.clj index 7255708..b2e896e 100644 --- a/src/clojure_course_task02/core.clj +++ b/src/clojure_course_task02/core.clj @@ -7,13 +7,15 @@ (defn get-files [path] (filter #(.isFile %) (.listFiles path))) + (defn find-files [file-name path] - (->> path - get-directories - (map get-files) - flatten - (map #(.getName %)) - (filter #(not (nil? (re-find (re-pattern file-name) %)))))) + (let [regex (re-pattern file-name)] + (->> path + get-directories + (pmap get-files) + flatten + (pmap #(.getName %)) + (filter #(not (nil? (re-find regex %))))))) (defn usage [] (println "Usage: $ run.sh file_name path")) @@ -23,4 +25,5 @@ (usage) (do (println "Searching for " file-name " in " path "...") - (dorun (map println (find-files file-name path)))))) + (dorun (map println (find-files file-name path))) + (shutdown-agents)))) From 50fd8e1fea21ad24221086e9b4ff68b703bca094 Mon Sep 17 00:00:00 2001 From: dbushenko Date: Fri, 29 Mar 2013 17:32:00 +0300 Subject: [PATCH 4/4] Update core.clj --- src/clojure_course_task02/core.clj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/clojure_course_task02/core.clj b/src/clojure_course_task02/core.clj index b2e896e..8b49a15 100644 --- a/src/clojure_course_task02/core.clj +++ b/src/clojure_course_task02/core.clj @@ -2,10 +2,10 @@ (:gen-class)) (defn get-directories [path] - (filter #(.isDirectory %) (file-seq (clojure.java.io/file path)))) + (filter (memfn isDirectory) (file-seq (clojure.java.io/file path)))) (defn get-files [path] - (filter #(.isFile %) (.listFiles path))) + (filter #(.isFile %) (.listFiles path))) ;; memfn (defn find-files [file-name path] @@ -14,8 +14,8 @@ get-directories (pmap get-files) flatten - (pmap #(.getName %)) - (filter #(not (nil? (re-find regex %))))))) + (pmap #(.getName %)) ;; memfn + (filter #(not (nil? (re-find regex %))))))) ;; comp + partial (defn usage [] (println "Usage: $ run.sh file_name path"))