Skip to content

Commit 1964353

Browse files
author
Yannick Scherer
committed
adjust whitespace handling/predicates (closes #43).
1 parent 43a70fa commit 1964353

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

src/rewrite_clj/node/whitespace.clj

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,26 +67,29 @@
6767

6868
;; ## Constructors
6969

70+
(defn- string-of?
71+
[^String s pred]
72+
(and s
73+
(string? s)
74+
(pos? (.length s))
75+
(every? pred s)))
76+
7077
(defn whitespace-node
7178
"Create whitespace node."
7279
[s]
73-
{:pre [(string? s)
74-
(re-matches #"\s+" s)
75-
(not (re-matches #".*[\n\r].*" s))]}
80+
{:pre [(string-of? s r/space?)]}
7681
(->WhitespaceNode s))
7782

7883
(defn comma-node
7984
"Create comma node."
8085
[s]
81-
{:pre [(string? s)
82-
(re-matches #",+" s)]}
86+
{:pre [(string-of? s r/comma?)]}
8387
(->CommaNode s))
8488

8589
(defn newline-node
8690
"Create newline node."
8791
[s]
88-
{:pre [(string? s)
89-
(re-matches #"[\n\r]+" s)]}
92+
{:pre [(string-of? s r/linebreak?)]}
9093
(->NewlineNode s))
9194

9295
(defn- classify-whitespace
@@ -98,8 +101,7 @@
98101
(defn whitespace-nodes
99102
"Convert a string of whitespace to whitespace/newline nodes."
100103
[s]
101-
{:pre [(string? s)
102-
(re-matches #"(\s|,)+" s)]}
104+
{:pre [(string-of? s r/whitespace?)]}
103105
(->> (partition-by classify-whitespace s)
104106
(map
105107
(fn [char-seq]

src/rewrite_clj/reader.clj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@
4444

4545
(defn space?
4646
[^java.lang.Character c]
47-
(and (whitespace? c)
48-
(not (linebreak? c))))
47+
(and c
48+
(Character/isWhitespace c)
49+
(not (contains? #{\newline \return \,} c))))
4950

5051
(defn whitespace-or-boundary?
5152
[c]

0 commit comments

Comments
 (0)