Skip to content
This repository has been archived by the owner on Jun 12, 2024. It is now read-only.

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
minhtuannguyen committed Jun 14, 2016
1 parent 1c44186 commit 919c78e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 31 deletions.
25 changes: 12 additions & 13 deletions src/leiningen/list_ns.clj
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
(m/info " -" empty-occurence-str
" : the namespace/resource does not exist in the project although it has been specified")
(m/info " - hash-value (.i.e ddfa3d66) : the namespace/resource is defined in the project.clj")
(m/info " ==> hash : means that the resource doesn't match on all projects\n")
(m/info " =[x]=> hash : means that the resource on this project is different from others\n")
(m/info " ==> hash : means that the resource doesn't match on all projects")
(m/info " =[x]=> hash : means that the resource on this project is different from others")
(pp/print-table (sort-by :name m))
(m/info "\n"))

Expand Down Expand Up @@ -59,7 +59,7 @@
existing-paths (filter u/exists? paths)]
(render existing-paths project)))

(defn map-ns->project [project project-desc empty-project-occurence render]
(defn resource->project [project project-desc empty-project-occurence render]
(fn [resource]
[(keyword resource) (merge-with
str
Expand All @@ -71,7 +71,7 @@
(reduce-kv
(fn [m project desc]
(into m (map
(map-ns->project project desc empty-occurence render)
(resource->project project desc empty-occurence render)
(get-in desc selector))))
[]
projects)))
Expand All @@ -83,34 +83,33 @@
:name (last name-segments)})
{:name (name k)}))

(defn mark-value-as-different
(defn mark-value-with
([marker v] (if (empty? v) "" (str marker (str/upper-case v))))
([assertion-marker standard-marker assertion v]
(if (assertion v)
(mark-value-as-different assertion-marker v)
(mark-value-as-different standard-marker v))))
(mark-value-with assertion-marker v)
(mark-value-with standard-marker v))))

(defn mark-as-diffrent
([m] (zipmap (keys m)
(map (partial mark-value-as-different all-resources-different-marker)
(map (partial mark-value-with all-resources-different-marker)
(vals m))))
([m first-val second-val]
(let [not-empty-values (remove empty? (vals m))
first-val-occurence (count (remove #(= first-val %) not-empty-values))
second-val-occurence (count (remove #(= second-val %) not-empty-values))]

(if (or (= first-val-occurence 1) (= second-val-occurence 1))
(cond
(< first-val-occurence second-val-occurence)
(zipmap (keys m)
(map (partial mark-value-as-different
(map (partial mark-value-with
one-resource-different-marker
all-resources-different-marker
#(= % second-val))
(vals m)))
(> first-val-occurence second-val-occurence)
(zipmap (keys m)
(map (partial mark-value-as-different
(map (partial mark-value-with
one-resource-different-marker
all-resources-different-marker
#(= % first-val))
Expand All @@ -129,7 +128,7 @@
(mark-as-diffrent m (first unique-values) (second unique-values))
:else (mark-as-diffrent m))))

(defn ->pretty-print-structure [data selector]
(defn pretty-print-structure [data selector]
(reduce-kv
(fn [m k v] (conj m (merge
(occurence-map-for k selector)
Expand All @@ -141,7 +140,7 @@
(-> projects
(resource-name->project selector render)
(merge-project-occurence)
(->pretty-print-structure selector)))
(pretty-print-structure selector)))

(defn list-resources [projects-desc selector]
(-> projects-desc
Expand Down
36 changes: 18 additions & 18 deletions test/leiningen/ns_list_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -11,35 +11,35 @@
(deftest ^:unit unterline-different-values
(testing "all resources are different"
(let [m {:a "1", :b "2", :c "1", :d "2"}]
(is (= {:a (l/mark-value-as-different l/all-resources-different-marker (:a m))
:b (l/mark-value-as-different l/all-resources-different-marker (:b m))
:c (l/mark-value-as-different l/all-resources-different-marker (:c m))
:d (l/mark-value-as-different l/all-resources-different-marker (:d m))}
(is (= {:a (l/mark-value-with l/all-resources-different-marker (:a m))
:b (l/mark-value-with l/all-resources-different-marker (:b m))
:c (l/mark-value-with l/all-resources-different-marker (:c m))
:d (l/mark-value-with l/all-resources-different-marker (:d m))}
(l/unterline-different-values m))))

(let [m {:a "1" :b "1" :c "1" :d "2" :e "2"}]
(is (= {:a (l/mark-value-as-different l/all-resources-different-marker (:a m))
:b (l/mark-value-as-different l/all-resources-different-marker (:b m))
:c (l/mark-value-as-different l/all-resources-different-marker (:c m))
:d (l/mark-value-as-different l/all-resources-different-marker (:d m))
:e (l/mark-value-as-different l/all-resources-different-marker (:e m))}
(is (= {:a (l/mark-value-with l/all-resources-different-marker (:a m))
:b (l/mark-value-with l/all-resources-different-marker (:b m))
:c (l/mark-value-with l/all-resources-different-marker (:c m))
:d (l/mark-value-with l/all-resources-different-marker (:d m))
:e (l/mark-value-with l/all-resources-different-marker (:e m))}
(l/unterline-different-values m)))))

(testing "one resources is different"
(let [m {:a "1" :b "1" :c "1" :d "2"}]
(is (= {:a (l/mark-value-as-different l/all-resources-different-marker (:a m))
:b (l/mark-value-as-different l/all-resources-different-marker (:b m))
:c (l/mark-value-as-different l/all-resources-different-marker (:c m))
:d (l/mark-value-as-different l/one-resource-different-marker (:d m))}
(is (= {:a (l/mark-value-with l/all-resources-different-marker (:a m))
:b (l/mark-value-with l/all-resources-different-marker (:b m))
:c (l/mark-value-with l/all-resources-different-marker (:c m))
:d (l/mark-value-with l/one-resource-different-marker (:d m))}
(l/unterline-different-values m)))))

(testing "edge case where one project does not has this namespace"
(let [m {:a "1" :b "1" :c "1" :d "2" :e ""}]
(is (= {:a (l/mark-value-as-different l/all-resources-different-marker (:a m))
:b (l/mark-value-as-different l/all-resources-different-marker (:b m))
:c (l/mark-value-as-different l/all-resources-different-marker (:c m))
:d (l/mark-value-as-different l/one-resource-different-marker (:d m))
:e (l/mark-value-as-different l/all-resources-different-marker (:e m))}
(is (= {:a (l/mark-value-with l/all-resources-different-marker (:a m))
:b (l/mark-value-with l/all-resources-different-marker (:b m))
:c (l/mark-value-with l/all-resources-different-marker (:c m))
:d (l/mark-value-with l/one-resource-different-marker (:d m))
:e (l/mark-value-with l/all-resources-different-marker (:e m))}
(l/unterline-different-values m))))))

(deftest ^:unit occurence-map-for
Expand Down

0 comments on commit 919c78e

Please sign in to comment.