|
20 | 20 | (str/replace s #"`(.*?)`" (fn [[_ s]] |
21 | 21 | (format "<code>%s</code>" s)))) |
22 | 22 |
|
23 | | -(defn var-summary [var] |
24 | | - (when-let [first-line (some-> (:doc var) (str/split-lines) (first))] |
25 | | - (let [first-sentence (-> (str/split first-line #"\. ") first)] |
26 | | - (mini-markdown (subs first-sentence 0 (min (count first-sentence) 80)))))) |
| 23 | +(defn var-summary |
| 24 | + "Returns the first sentence of the var's DOC'umentation, if any |
| 25 | +
|
| 26 | + It collapses all continuous whitespaces to a single space." |
| 27 | + [{:keys [doc] :as _var}] |
| 28 | + (when-not (str/blank? doc) |
| 29 | + (let [norm (-> (str/replace doc #"\s+" " ") |
| 30 | + str/trim) |
| 31 | + sen (or (some->> (re-find #"(.*?\.)[\s]|(.*?\.)$" norm) |
| 32 | + rest |
| 33 | + (some identity)) |
| 34 | + (str norm "."))] |
| 35 | + (mini-markdown sen)))) |
| 36 | + |
| 37 | +(comment |
| 38 | + ;; expected outcomes |
| 39 | + [(= (var-summary {}) nil) |
| 40 | + (= (var-summary {:doc ""}) nil) |
| 41 | + (= (var-summary {:doc " "}) nil) |
| 42 | + (= (var-summary {:doc " \n\t \r"}) nil) |
| 43 | + (= (var-summary {:doc " 3\n5\t7 \n9 "}) "3 5 7 9.") |
| 44 | + (= (var-summary {:doc "\n 3\n5\t7 \n9 "}) "3 5 7 9.") |
| 45 | + (= (var-summary {:doc ". 345"}) ".") |
| 46 | + (= (var-summary {:doc "12 45"}) "12 45.") |
| 47 | + |
| 48 | + (= (var-summary {:doc "1 3. 6. 9."}) "1 3.") |
| 49 | + (= (var-summary {:doc "1 3.5 7"}) "1 3.5 7.") |
| 50 | + (= (var-summary {:doc "1 3.5 7."}) "1 3.5 7.") |
| 51 | + (= (var-summary {:doc "1 3.5. 8."}) "1 3.5.") |
| 52 | + (= (var-summary {:doc "1 `4`. 8"}) "1 <code>4</code>.")] |
| 53 | + ;; |
| 54 | + ) |
27 | 55 |
|
28 | 56 | (defn var-source [var {:keys [github/repo git/branch |
29 | 57 | source-uri]}] |
|
0 commit comments