File tree Expand file tree Collapse file tree 2 files changed +30
-1
lines changed Expand file tree Collapse file tree 2 files changed +30
-1
lines changed Original file line number Diff line number Diff line change
1
+ ; ; Thanks to https://gist.github.com/wilkerlucio/db54dc83a9664124f3febf6356f04509
2
+ (ns helper.natural-sort
3
+ (:refer-clojure :exclude [sort sort-by])
4
+ (:require [clojure.string]))
5
+
6
+ (defn vector-compare [[value1 & rest1] [value2 & rest2]]
7
+ (let [result (compare value1 value2)]
8
+ (cond
9
+ (not (zero? result)) result
10
+ (nil? value1) 0
11
+ :else (recur rest1 rest2))))
12
+
13
+ (defn prepare-string [s]
14
+ (let [s (or s " " )
15
+ parts (vec (clojure.string/split s #"\d +" ))
16
+ numbers (->> (re-seq #"\d +" s)
17
+ (map parse-long)
18
+ (vec ))]
19
+ (vec (interleave (conj parts " " ) (conj numbers -1 )))))
20
+
21
+ (defn natural-compare [a b]
22
+ (vector-compare (prepare-string a)
23
+ (prepare-string b)))
24
+
25
+ (defn sort [coll] (clojure.core/sort natural-compare coll))
26
+
27
+ (defn sort-by [keyfn coll]
28
+ (clojure.core/sort-by keyfn natural-compare coll))
Original file line number Diff line number Diff line change 3
3
[cheshire.core :as json]
4
4
[clojure.string :as string]
5
5
[doric.core :as doric]
6
+ [helper.natural-sort :as natural-sort]
6
7
[helper.main :as main]
7
8
[lread.status-line :as status]))
8
9
76
77
(for [jdk-version (get os-jdks " ubuntu" )
77
78
:when (not= jdk-version (:jdk-version default-opts ))]
78
79
(test-doc {:jdk-version jdk-version :os " ubuntu" })))
79
- (sort-by :desc )
80
+ (natural-sort/ sort-by :desc )
80
81
(into [(merge default-opts {:os " ubuntu" :cmd " bb lint" :desc " lint" })])
81
82
(mapv #(assoc % :id (string/replace (:desc %) " " " -" ))))))
82
83
You can’t perform that action at this time.
0 commit comments