Skip to content

Commit 961f003

Browse files
authored
Merge pull request #18 from JarrodCTaylor/lookbehind-regex
Fix unsupported cljs lookbehind regex in code inherited from Puget
2 parents 35e9c36 + 4cbc155 commit 961f003

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Unreleased
22

3+
- Fix unsupported cljs lookbehind regex in code inherited from Puget
4+
35
## Added
46

57
## Fixed

src/lambdaisland/deep_diff2/puget/color/html.cljc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@
6565
(reduce (fn [acc span]
6666
(case (first span)
6767
nil acc
68-
\& (let [[escaped span] (str/split span #"(?<=;)" 2)
68+
\& (let [semicolon-pos ((fnil inc 0) (str/index-of span \;))
69+
escaped (subs span 0 semicolon-pos)
70+
span (subs span semicolon-pos)
6971
acc (conj acc [:escaped escaped])]
7072
(if (seq span)
7173
(conj acc span)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
(ns lambdaisland.deep-diff2.puget-test
2+
(:require [clojure.test :refer [deftest testing is]]
3+
[lambdaisland.deep-diff2.puget.color.html :as sut]))
4+
5+
(deftest puget-html-test
6+
(testing "properly escape html"
7+
(let [input ["<ul id=someList><li class=red>Item 1</li><li>Item 2</li></ul>"]
8+
expected-result [[:span
9+
[:escaped "&lt;"] "ul id=someList" [:escaped "&gt;"]
10+
[:escaped "&lt;"] "li class=red" [:escaped "&gt;"]
11+
"Item 1"
12+
[:escaped "&lt;"] "/li" [:escaped "&gt;"]
13+
[:escaped "&lt;"] "li" [:escaped "&gt;"]
14+
"Item 2"
15+
[:escaped "&lt;"] "/li" [:escaped "&gt;"]
16+
[:escaped "&lt;"] "/ul" [:escaped "&gt;"]]]]
17+
(is (= expected-result (sut/escape-html-document input))))))
18+

0 commit comments

Comments
 (0)