Skip to content

Commit a178fca

Browse files
author
Yannick Scherer
committed
upgrade dependencies.
1 parent 5361548 commit a178fca

File tree

3 files changed

+30
-22
lines changed

3 files changed

+30
-22
lines changed

project.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
:key "mit"}
88
:repositories {"sonatype-oss-public" "https://oss.sonatype.org/content/groups/public/"}
99
:dependencies [[org.clojure/clojure "1.6.0"]
10-
[org.clojure/tools.reader "0.8.13"]]
10+
[org.clojure/tools.reader "0.9.2"]]
1111
:profiles {:dev {:dependencies [[midje "1.6.3" :exclusions [joda-time]]
1212
[joda-time "2.7"]]
1313
:plugins [[lein-midje "3.1.3"]

src/rewrite_clj/reader.clj

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,20 @@
109109
[reader]
110110
(r/peek-char reader))
111111

112+
(defn position
113+
"Create map of `row-k` and `col-k` representing the current reader position."
114+
[reader row-k col-k]
115+
{row-k (r/get-line-number reader)
116+
col-k (r/get-column-number reader)})
117+
112118
(defn read-with-meta
113119
"Use the given function to read value, then attach row/col metadata."
114120
[reader read-fn]
115-
(let [row (r/get-line-number reader)
116-
col (r/get-column-number reader)]
121+
(let [start-position (position reader :row :col)]
117122
(if-let [entry (read-fn reader)]
118-
(with-meta
119-
entry
120-
{:row row :col col}))))
123+
(->> (position reader :end-row :end-col)
124+
(merge start-position)
125+
(with-meta entry)))))
121126

122127
(defn read-repeatedly
123128
"Call the given function on the given reader until it returns

test/rewrite_clj/parser_test.clj

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -270,28 +270,31 @@
270270
(defn- nodes-with-meta
271271
"Create map associating row/column number pairs with the node at that position."
272272
[n]
273-
(let [pos ((juxt :row :col) (meta n))]
273+
(let [start-pos ((juxt :row :col) (meta n))
274+
end-pos ((juxt :end-row :end-col) (meta n))
275+
entry {start-pos {:node n, :end-pos end-pos}}]
274276
(if (node/inner? n)
275277
(->> (node/children n)
276278
(map nodes-with-meta)
277-
(into {pos n}))
278-
{pos n})))
279+
(into entry))
280+
entry)))
279281

280282
(let [s "(defn f\n [x]\n (println x))"
281283
positions (->> (p/parse-string-all s)
282284
(nodes-with-meta))]
283285
(tabular
284286
(fact "about row/column metadata."
285-
(let [n (positions ?pos)]
286-
(node/tag n) => ?t
287-
(node/string n) => ?s
288-
(node/sexpr n) => ?sexpr))
289-
?pos ?t ?s ?sexpr
290-
[1 1] :list s '(defn f [x] (println x))
291-
[1 2] :token "defn" 'defn
292-
[1 7] :token "f" 'f
293-
[2 3] :vector "[x]" '[x]
294-
[2 4] :token "x" 'x
295-
[3 3] :list "(println x)" '(println x)
296-
[3 4] :token "println" 'println
297-
[3 12] :token "x" 'x))
287+
(let [{:keys [node end-pos]} (positions ?pos)]
288+
(node/tag node) => ?t
289+
(node/string node) => ?s
290+
(node/sexpr node) => ?sexpr
291+
end-pos => ?end))
292+
?pos ?end ?t ?s ?sexpr
293+
[1 1] [3 14] :list s '(defn f [x] (println x))
294+
[1 2] [1 5] :token "defn" 'defn
295+
[1 7] [1 8] :token "f" 'f
296+
[2 3] [2 5] :vector "[x]" '[x]
297+
[2 4] [2 5] :token "x" 'x
298+
[3 3] [3 13] :list "(println x)" '(println x)
299+
[3 4] [3 10] :token "println" 'println
300+
[3 12] [3 13] :token "x" 'x))

0 commit comments

Comments
 (0)