Skip to content

Commit 4f50015

Browse files
authored
Change toc var descriptions to be the first sentance of their doc (#17)
Co-authored-by: ikappaki <ikappaki@users.noreply.github.com>
1 parent a8068f1 commit 4f50015

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

src/quickdoc/impl.clj

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,38 @@
2020
(str/replace s #"`(.*?)`" (fn [[_ s]]
2121
(format "<code>%s</code>" s))))
2222

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+
)
2755

2856
(defn var-source [var {:keys [github/repo git/branch
2957
source-uri]}]

0 commit comments

Comments
 (0)