Skip to content

Commit 205f7a3

Browse files
committed
pretty print/truncate eval results
1 parent ffaf575 commit 205f7a3

File tree

10 files changed

+1643
-4753
lines changed

10 files changed

+1643
-4753
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ Alpha. Certainly contains bugs. There is a [live demo](https://bobbicodes.github
3838
- ✅ Create test suite
3939
- ✅ Test published package
4040
- ✅ Handle errors
41-
- [ ] Truncate very long eval results
41+
- ✅ Pretty-print eval result
42+
- ✅ Truncate very long eval result
4243
- [ ] Handle infinite loops
4344

4445
## Run demo locally

dist/assets/index-1ed6b52a.js

Lines changed: 0 additions & 1030 deletions
This file was deleted.

dist/assets/index-53d4dbe5.js

Lines changed: 1051 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<link rel="icon" type="image/svg+xml" href="/lang-clojure-eval/assets/vite-4a748afd.svg" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>Vite App</title>
8-
<script type="module" crossorigin src="/lang-clojure-eval/assets/index-1ed6b52a.js"></script>
8+
<script type="module" crossorigin src="/lang-clojure-eval/assets/index-53d4dbe5.js"></script>
99
<link rel="stylesheet" href="/lang-clojure-eval/assets/index-b488241e.css">
1010
</head>
1111
<body>

dist/js/sci.js

Lines changed: 0 additions & 1671 deletions
This file was deleted.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "lang-clojure-eval",
3-
"version": "0.0.12",
3+
"version": "0.0.13",
44
"author": "Bobbi Towers <[email protected]>",
55
"description": "Lezer-based Clojure Codemirror 6 extension with live evaluation",
66
"main": "dist/index.cjs",

public/js/sci.js

Lines changed: 0 additions & 1671 deletions
This file was deleted.

src/eval-region.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,13 @@ function updateEditor(view, text, pos) {
131131
})
132132
}
133133

134+
function splitResult(s) {
135+
if (s.length > 100) {
136+
return "\n" + s.substring(0, 100) + "..." + s.substring(s.length -2)
137+
}
138+
return s
139+
}
140+
134141
function tryEval(ctx, s) {
135142
try {
136143
return evalString(ctx, s)
@@ -146,7 +153,7 @@ function evalAtCursor(view) {
146153
posBeforeEval = view.state.selection.main.head
147154
const codeBeforeCursor = codeBeforeEval.slice(0, posBeforeEval)
148155
const codeAfterCursor = codeBeforeEval.slice(posBeforeEval, codeBeforeEval.length)
149-
evalResult = tryEval(ctx, cursorNodeString(view.state))
156+
evalResult = splitResult(tryEval(ctx, cursorNodeString(view.state)))
150157
const codeWithResult = codeBeforeCursor + " => " + evalResult + " " + codeAfterCursor
151158
updateEditor(view, codeWithResult, posBeforeEval)
152159
view.dispatch({selection: {anchor: posBeforeEval, head: posBeforeEval}})
@@ -167,15 +174,15 @@ function evalTopLevel(view) {
167174
codeBeforeEval = doc
168175
const codeBeforeFormEnd = codeBeforeEval.slice(0, posAtFormEnd)
169176
const codeAfterFormEnd = codeBeforeEval.slice(posAtFormEnd, codeBeforeEval.length)
170-
evalResult = tryEval(ctx, topLevelString(view.state))
177+
evalResult = splitResult(tryEval(ctx, topLevelString(view.state)))
171178
const codeWithResult = codeBeforeFormEnd + " => " + evalResult + " " + codeAfterFormEnd
172179
updateEditor(view, codeWithResult, posBeforeEval)
173180
return true
174181
}
175182

176183
function evalCell(view) {
177184
const doc = view.state.doc.toString()
178-
evalResult = tryEval(ctx, view.state.doc.text.join(" "))
185+
evalResult = splitResult(tryEval(ctx, view.state.doc.text.join(" ")))
179186
const codeWithResult = doc + "\n" + " => " + evalResult
180187
updateEditor(view, codeWithResult, posBeforeEval)
181188
//console.log("evalCell>", evalString(ctx, view.state.doc.text.join(" ")))

src/lang_clojure_eval/main.cljs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
(ns lang-clojure-eval.main
2-
(:require [sci.core :as sci]))
2+
(:require [sci.core :as sci]
3+
[clojure.pprint :as pprint]))
34

45
(defn sci-init []
56
(sci/init {}))
67

78
(defn eval-string [ctx s]
8-
(str (sci/eval-string* ctx s)))
9+
(with-out-str (pprint/pprint (sci/eval-string* ctx s))))
10+
11+

src/sci.js

Lines changed: 573 additions & 373 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)