Skip to content

Commit d40a16e

Browse files
author
Yannick Scherer
committed
add :uneval element type.
1 parent 39a6264 commit d40a16e

File tree

4 files changed

+35
-9
lines changed

4 files changed

+35
-9
lines changed

src/rewrite_clj/parser/core.clj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
\' (parse-prefixed :var reader delim)
9797
\^ (parse-pair :meta* reader delim)
9898
\= (parse-prefixed :eval reader delim)
99+
\_ (parse-prefixed :uneval reader delim)
99100
(do (r/unread reader \#) (parse-pair :reader-macro reader delim)))))
100101

101102
(defn- parse-unquote

src/rewrite_clj/printer.clj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
(defmethod print-edn :map [data] (print-children "{" data "}"))
4242
(defmethod print-edn :set [data] (print-children "#{" data "}"))
4343
(defmethod print-edn :eval [data] (print-children "#=" data))
44+
(defmethod print-edn :uneval [data] (print-children "#_" data))
4445
(defmethod print-edn :reader-macro [data] (print-children "#" data))
4546
(defmethod print-edn :quote [data] (print-children "'" data))
4647
(defmethod print-edn :syntax-quote [data] (print-children "`" data))

test/rewrite_clj/parser_test.clj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@
105105
"#'a" :var :token 1
106106
"#(+ % 1)" :fn :token 5
107107
"#=(+ 1 2)" :eval :list 1
108-
"#macro 1" :reader-macro :token 3)
108+
"#macro 1" :reader-macro :token 3
109+
"#_abc" :uneval :token 1
110+
"#_(+ 1 2)" :uneval :list 1)
109111

110112
(tabular
111113
(fact "about parsing exceptions"

test/rewrite_clj/printer_test.clj

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(ns ^{:doc "Tests for EDN printer."
1+
(ns ^{:doc "Tests for EDN printer."
22
:author "Yannick Scherer"}
33
rewrite-clj.printer-test
44
(:require [midje.sweet :refer :all]
@@ -11,19 +11,41 @@
1111
(estimate-length tree) => (count ?str)
1212
(->string tree) => ?str))
1313
?str
14-
"0" "0.1" "1N"
15-
":key" ":ns/key" "::key"
16-
"sym" "sym#"
14+
"0"
15+
"0.1"
16+
"1N"
17+
18+
":key"
19+
":ns/key"
20+
"::key"
21+
22+
"sym"
23+
"sym#"
24+
1725
"\"string\""
26+
"\"string\nnewline\""
27+
"\"string\n newline\n other\""
1828

19-
"@sym" "#'sym" "'sym" "~sym"
20-
"~@sym" "`sym" "#=sym"
29+
"@sym"
30+
"#'sym"
31+
"'sym"
32+
"~sym"
33+
"~@sym"
34+
"`sym"
35+
"#=sym"
2136

2237
"(first form) (second form)"
2338
"[:complex (list {:map 0})]"
24-
"#=(eval this)" "#date s"
2539

26-
"#\"regex\"" "#\"regex\\.\"" "#\"[reg|k].x\""
40+
"#=(eval this)"
41+
"#date s"
42+
"#(+ 1 2)"
43+
"#_abc"
44+
"#_(+ 1 2)"
45+
46+
"#\"regex\""
47+
"#\"regex\\.\""
48+
"#\"[reg|k].x\""
2749

2850
"^:private s"
2951
"^{:private true} s"

0 commit comments

Comments
 (0)