Skip to content

Commit 65e8431

Browse files
committed
Refactor: centralizing the line splitting of SSE datalines
1 parent 38880a4 commit 65e8431

File tree

3 files changed

+18
-23
lines changed

3 files changed

+18
-23
lines changed

libraries/sdk/src/main/starfederation/datastar/clojure/api/common.clj

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
(ns starfederation.datastar.clojure.api.common)
1+
(ns starfederation.datastar.clojure.api.common
2+
(:require
3+
[clojure.string :as string]))
24

35
;; -----------------------------------------------------------------------------
46
;; Option names
@@ -41,12 +43,12 @@
4143

4244
(defn add-data-lines!
4345
"Add several data-lines to the `data-lines!` transient vector."
44-
[data-lines! prefix lines-seq]
46+
[data-lines! prefix text]
4547
(reduce
4648
(fn [acc part]
4749
(conj! acc (str prefix part)))
4850
data-lines!
49-
lines-seq))
51+
(string/split-lines text)))
5052

5153

5254
(defn add-boolean-option?
@@ -56,6 +58,3 @@
5658
(and
5759
(boolean? val)
5860
(not= val default-val)))
59-
60-
61-

libraries/sdk/src/main/starfederation/datastar/clojure/api/elements.clj

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
(cond-> data-lines!
3131
(and sel (valid-selector? sel))
3232
(common/add-opt-line! consts/selector-dataline-literal sel)
33-
33+
3434
(and patch-mode (add-epm? patch-mode))
3535
(common/add-opt-line! consts/mode-dataline-literal patch-mode)
3636

@@ -47,8 +47,7 @@
4747
[data-lines! element]
4848
(cond-> data-lines!
4949
(u/not-empty-string? element)
50-
(common/add-data-lines! consts/elements-dataline-literal
51-
(string/split-lines element))))
50+
(common/add-data-lines! consts/elements-dataline-literal element)))
5251

5352

5453
(defn ->patch-elements
@@ -91,13 +90,15 @@
9190
(defn conj-patch-elements-seq
9291
"Adds a the data-lines when patching a seq of strings elements."
9392
[data-lines! elements-seq]
94-
(cond-> data-lines!
95-
(seq elements-seq)
96-
(common/add-data-lines! consts/elements-dataline-literal
97-
(eduction
98-
(comp (mapcat string/split-lines)
99-
(remove string/blank?))
100-
elements-seq))))
93+
(if (seq elements-seq)
94+
(reduce
95+
(fn [data-lines! elements]
96+
(if (string/blank? elements)
97+
data-lines!
98+
(common/add-data-lines! data-lines! consts/elements-dataline-literal elements)))
99+
data-lines!
100+
elements-seq)
101+
data-lines!))
101102

102103

103104
(defn ->patch-elements-seq
@@ -146,5 +147,3 @@
146147
(patch-elements! sse-gen "" (assoc opts
147148
common/selector selector
148149
common/patch-mode consts/element-patch-mode-remove)))
149-
150-

libraries/sdk/src/main/starfederation/datastar/clojure/api/signals.clj

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,15 @@
2121
(common/add-opt-line! consts/only-if-missing-dataline-literal oim)
2222

2323
(u/not-empty-string? signals)
24-
(common/add-data-lines! consts/signals-dataline-literal
25-
(string/split-lines signals))))))
24+
(common/add-data-lines! consts/signals-dataline-literal signals)))))
2625

2726

2827

2928
(comment
3029
(= (->patch-signals "{'some': \n 'json'}" {})
3130
["signals {'some': "
3231
"signals 'json'}"]))
33-
32+
3433
(defn patch-signals! [sse-gen signals-content opts]
3534
(try
3635
(sse/send-event! sse-gen
@@ -56,5 +55,3 @@
5655
(if (= :get (:request-method request))
5756
(get-in request [:query-params consts/datastar-key])
5857
(:body request)))
59-
60-

0 commit comments

Comments
 (0)