File tree Expand file tree Collapse file tree 5 files changed +36
-10
lines changed Expand file tree Collapse file tree 5 files changed +36
-10
lines changed Original file line number Diff line number Diff line change 1212 protocols
1313 quote
1414 reader-macro
15+ regex
1516 seq
1617 string
1718 token
5758 meta-node
5859 raw-meta-node]
5960
61+ [rewrite-clj.node.regex
62+ regex-node]
63+
6064 [rewrite-clj.node.reader-macro
6165 deref-node
6266 eval-node
Original file line number Diff line number Diff line change 1+ (ns ^:no-doc rewrite-clj.node.regex
2+ (:require [rewrite-clj.node.protocols :as node]))
3+
4+
5+ ; ; ## Node
6+
7+ (defrecord RegexNode [pattern]
8+ rewrite-clj.node.protocols /Node
9+ (tag [_] :regex )
10+ (printable-only? [_] false )
11+ (sexpr [_] (list 're-pattern pattern))
12+ (length [_] 1 )
13+ (string [_] (str " #\" " pattern " \" " )))
14+
15+ (node/make-printable! RegexNode)
16+
17+ ; ; ## Constructor
18+
19+ (defn regex-node
20+ " Create node representing a regex"
21+ [pattern-string]
22+ (->RegexNode pattern-string))
Original file line number Diff line number Diff line change 114114 nil (reader/throw-reader reader " Unexpected EOF." )
115115 \{ (node/set-node (parse-delim reader \}))
116116 \( (node/fn-node (parse-delim reader \)))
117- \" (parse-regex reader)
117+ \" (node/regex-node ( parse-regex reader) )
118118 \^ (node/raw-meta-node (parse-printables reader :meta 2 true ))
119119 \' (node/var-node (parse-printables reader :var 1 true ))
120120 \= (node/eval-node (parse-printables reader :eval 1 true ))
Original file line number Diff line number Diff line change 4040(defn parse-regex
4141 [reader]
4242 (let [h (read-string-data reader)]
43- (node/token-node ( re-pattern ( string/join " \n " h)) )))
43+ (string/join " \n " h)))
Original file line number Diff line number Diff line change 112112(tabular
113113 (fact " about parsing regular expressions"
114114 (let [n (p/parse-string ?s)]
115- (node/tag n) => :token
116- (class (node/sexpr n)) => java.util.regex.Pattern
117- (str (node/sexpr n)) => ?p))
115+ (node/tag n) => :regex
116+ (node/sexpr n) => ?p))
118117 ?s ?p
119- " #\" regex\" " " regex"
120- " #\" regex\\ .\" " " regex\\ ."
121- " #\" [reg|k].x\" " " [reg|k].x"
122- " #\" a\\ nb\" " " a\\ nb"
123- " #\" a\n b\" " " a\n b" )
118+
119+ " #\" regex\" " '(re-pattern " regex" )
120+ " #\" regex\\ .\" " '(re-pattern " regex\\ ." )
121+ " #\" [reg|k].x\" " '(re-pattern " [reg|k].x" )
122+ " #\" a\\ nb\" " '(re-pattern " a\\ nb" )
123+ " #\" a\n b\" " '(re-pattern " a\n b" ))
124124
125125(tabular
126126 (fact " about parsing strings"
You can’t perform that action at this time.
0 commit comments