Skip to content

Commit 91bac50

Browse files
committed
Fix multiline folding according to rfc2445
1 parent beae7d1 commit 91bac50

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/tick/alpha/ical.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@
263263
[^java.io.BufferedReader rdr hold]
264264
(if-let [line (.readLine rdr)]
265265
(if (= (.charAt line 0) \space)
266-
(recur rdr (conj hold line))
266+
(recur rdr (conj hold (.substring line 1)))
267267
(cons (str/join hold) (lazy-seq (unfolding-line-seq* rdr [line]))))
268268
[(str/join hold)]))
269269

test/tick/alpha/ical_test.clj

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,23 @@
4040
(is (= "DTSTART" name))
4141
(is (= "US-EAST" (get params "TZID")))
4242
(is (= "20180116T140000" value)))))
43+
44+
(def multiline
45+
"X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-SOME-HEADER-BREAKING-SOMEWHERE-AT-
46+
75=foobar;X-TITLE=Some Place:geo:44.815458,20.462758")
47+
48+
(deftest parse-line-folding-test
49+
(testing "Folded lines can be parsed"
50+
(is (= {:name "X-APPLE-STRUCTURED-LOCATION",
51+
:params
52+
{"VALUE" "URI",
53+
"X-SOME-HEADER-BREAKING-SOMEWHERE-AT-75" "foobar",
54+
"X-TITLE" "Some Place"},
55+
:value "geo:44.815458,20.462758",
56+
:string-value "geo:44.815458,20.462758"}
57+
(-> multiline
58+
char-array
59+
io/reader
60+
ical/unfolding-line-seq
61+
first
62+
ical/line->contentline)))))

0 commit comments

Comments
 (0)