Skip to content

Commit f3229af

Browse files
authored
Expose pr on (#1088)
* Expose clojure.core/pr-on * Drop the pr-on docstring * Bump CI tooling * Print through core-pr-on
1 parent 82a4297 commit f3229af

4 files changed

Lines changed: 42 additions & 24 deletions

File tree

.github/workflows/ci.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ jobs:
1414
fetch_depth: 0
1515

1616
- name: Install clojure tools
17-
uses: DeLaGuardo/setup-clojure@5.0
17+
uses: DeLaGuardo/setup-clojure@13.7.0
1818
with:
19-
cli: 1.10.1.763
19+
cli: 'latest'
2020
lein: 2.9.3
21-
bb: 0.8.2
21+
bb: 'latest'
2222

2323
- name: Prepare java
2424
uses: actions/setup-java@v2
@@ -37,11 +37,11 @@ jobs:
3737
fetch_depth: 0
3838

3939
- name: Install clojure tools
40-
uses: DeLaGuardo/setup-clojure@5.0
40+
uses: DeLaGuardo/setup-clojure@13.7.0
4141
with:
42-
cli: 1.10.1.763
42+
cli: 'latest'
4343
lein: 2.9.3
44-
bb: 0.8.2
44+
bb: 'latest'
4545

4646
- uses: actions/setup-node@v3
4747
with:
@@ -69,11 +69,11 @@ jobs:
6969
fetch_depth: 0
7070

7171
- name: Install clojure tools
72-
uses: DeLaGuardo/setup-clojure@5.0
72+
uses: DeLaGuardo/setup-clojure@13.7.0
7373
with:
74-
cli: 1.10.1.763
74+
cli: 'latest'
7575
lein: 2.9.3
76-
bb: 0.8.2
76+
bb: 'latest'
7777

7878
- uses: graalvm/setup-graalvm@v1
7979
with:
@@ -93,11 +93,11 @@ jobs:
9393
fetch_depth: 0
9494

9595
- name: Install clojure tools
96-
uses: DeLaGuardo/setup-clojure@5.0
96+
uses: DeLaGuardo/setup-clojure@13.7.0
9797
with:
98-
cli: 1.10.1.763
98+
cli: 'latest'
9999
lein: 2.9.3
100-
bb: 0.8.2
100+
bb: 'latest'
101101

102102
- name: Install planck
103103
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install planck
@@ -123,7 +123,7 @@ jobs:
123123
sdk: '3.12.2'
124124

125125
- name: Setup Clojure
126-
uses: DeLaGuardo/setup-clojure@13.4
126+
uses: DeLaGuardo/setup-clojure@13.7.0
127127
with:
128128
cli: 'latest'
129129

@@ -164,9 +164,9 @@ jobs:
164164
components: 'native-image'
165165

166166
- name: Install Clojure tools
167-
uses: DeLaGuardo/setup-clojure@9.5
167+
uses: DeLaGuardo/setup-clojure@13.7.0
168168
with:
169-
bb: '1.0.165'
169+
bb: 'latest'
170170
lein: '2.9.10'
171171

172172
- name: Cache clojure dependencies

src/sci/impl/io.cljc

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,16 @@
8282
(print-method x w))
8383
nil))
8484

85+
#?(:clj (defn core-pr-on
86+
[x w]
87+
(binding [*print-length* @print-length
88+
*print-level* @print-level
89+
*print-meta* @print-meta
90+
*print-namespace-maps* @print-namespace-maps
91+
*print-readably* @print-readably
92+
*print-dup* @print-dup-var]
93+
(pr-on x w))))
94+
8595
#?(:cljd (defn pr
8696
[& objs]
8797
(binding [*out* @out
@@ -93,14 +103,7 @@
93103
(apply cljd.core/pr objs)))
94104
:clj (defn pr
95105
([] nil)
96-
([x]
97-
(binding [*print-length* @print-length
98-
*print-level* @print-level
99-
*print-meta* @print-meta
100-
*print-namespace-maps* @print-namespace-maps
101-
*print-readably* @print-readably
102-
*print-dup* @print-dup-var]
103-
(pr-on x @out)))
106+
([x] (core-pr-on x @out))
104107
([x & more]
105108
(pr x)
106109
(. ^java.io.Writer @out (append \space))

src/sci/impl/namespaces.cljc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1366,6 +1366,7 @@
13661366
'newline (copy-var sci.impl.io/newline clojure-core-ns {:name 'newline})
13671367
'flush (copy-core-var sci.impl.io/flush)
13681368
'pr (copy-var sci.impl.io/pr clojure-core-ns {:name 'pr})
1369+
#?@(:clj ['pr-on (new-var 'pr-on sci.impl.io/core-pr-on clojure-core-ns {:private true})])
13691370
'prn (copy-core-var sci.impl.io/prn)
13701371
'print (copy-core-var sci.impl.io/print)
13711372
'println (copy-core-var sci.impl.io/println)

test/sci/io_test.cljc

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
(:require
33
[clojure.edn :as edn]
44
[clojure.string :as str]
5-
[clojure.test :as test :refer [deftest is]]
5+
[clojure.test :as test :refer [deftest is testing]]
66
[sci.core :as sci]
77
[sci.test-utils :as tu]))
88

@@ -37,6 +37,20 @@
3737
(is (= "\"hello\"" (sci/with-out-str (eval* "(pr \"hello\")"))))
3838
(is (= "\n" (sci/with-out-str (eval* "(newline)"))))))
3939

40+
#?(:cljd nil
41+
:clj
42+
(deftest pr-on-test
43+
(when-not tu/native?
44+
(testing "clojure.core/pr-on prints to the writer it is given"
45+
(let [w (java.io.StringWriter.)]
46+
(tu/eval* "(@#'clojure.core/pr-on (range 5) w)" {:namespaces {'user {'w w}}})
47+
(is (= "(0 1 2 3 4)" (str w)))))
48+
(testing "and under the interpreter's print settings"
49+
(let [w (java.io.StringWriter.)]
50+
(tu/eval* "(binding [*print-length* 3] (@#'clojure.core/pr-on (range 10) w))"
51+
{:namespaces {'user {'w w}}})
52+
(is (= "(0 1 2 ...)" (str w))))))))
53+
4054
(deftest print-length-test
4155
(when-not tu/native?
4256
(is (str/includes?

0 commit comments

Comments
 (0)