Skip to content

Commit 7a8045e

Browse files
committed
add Integer/parseInt
1 parent ec47ae8 commit 7a8045e

File tree

5 files changed

+155
-139
lines changed

5 files changed

+155
-139
lines changed

shadow-cljs.edn

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@
88
:modules {:sci {:exports {evalString lang-clojure-eval.main/eval-string
99
context lang-clojure-eval.main/context
1010
isISOControl lang-clojure-eval.character/isISOControl
11-
isLetter lang-clojure-eval.character/isLetter}}}}}}
11+
isLetter lang-clojure-eval.character/isLetter
12+
;; parseInt causes ReferenceError if exported,
13+
;; but somehow works if it's not... why?
14+
;parseInt lang-clojure-eval.integer/parse-int
15+
}}}}}}

src/lang_clojure_eval/character.cljs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
(defn isLetter [char]
55
(and (= 1 (count (str char)))
6-
(not= (str/upper-case char) (str/lower-case char))))
6+
(not= (str/upper-case char)
7+
(str/lower-case char))))
78

89
(defn isISOControl [char]
910
(boolean (re-seq #"[\u0000-\u001F\u007F-\u009F]" char)))

src/lang_clojure_eval/integer.cljs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
(ns lang-clojure-eval.integer
2+
(:require [clojure.edn :as edn]))
3+
4+
(defn parse-int [s]
5+
(edn/read-string s))

src/lang_clojure_eval/main.cljs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
(:require [sci.core :as sci]
33
[lang-clojure-eval.error :refer [error-handler]]
44
[lang-clojure-eval.character :as char]
5+
[lang-clojure-eval.integer :as int]
56
[goog.string]
67
[goog.string.format]
78
[clojure.pprint :as pprint]
@@ -11,12 +12,15 @@
1112
(sci/init {:classes {'js goog/global
1213
:allow :all}
1314
:namespaces {'clojure.core {'format goog.string/format}
14-
'lang-clojure-eval.character
15+
'lang-clojure-eval.character
1516
{'isISOControl char/isISOControl
16-
'isLetter char/isLetter}}}))
17+
'isLetter char/isLetter}
18+
'lang-clojure-eval.integer
19+
{'parseInt int/parse-int}}}))
1720

1821
(defn eval-string [source]
19-
(let [reqs "(require '[lang-clojure-eval.character :as Character])"]
22+
(let [reqs "(require '[lang-clojure-eval.character :as Character]
23+
'[lang-clojure-eval.integer :as Integer])"]
2024
(try (binding [*print-length* 100]
2125
(with-out-str (pprint/pprint (sci/eval-string* context (str reqs source)))))
2226
(catch :default e

0 commit comments

Comments
 (0)