Skip to content
This repository was archived by the owner on Jan 2, 2023. It is now read-only.

Commit 36e7aca

Browse files
committed
js/keys - but this will change
1 parent 65b40dd commit 36e7aca

File tree

3 files changed

+33
-13
lines changed

3 files changed

+33
-13
lines changed

squint/corpus/destructuring.cljs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
(ns destructuring)
22

3-
(let [{:keys [a]} {:a 1}
3+
(let [{:js/keys [a] :as m} (clj->js {:a 1})
44
[b c d] [2 3 4]]
5-
(js/console.log a b c d))
5+
(prn m a b c d))
6+
7+
(let [{:js/keys [a] :as m} {:js/a 1}]
8+
(prn m a))

squint/corpus/destructuring.mjs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,26 @@
1-
import { get, nth, vector, __destructure_map, keyword, arrayMap } from 'cherry-cljs/cljs.core.js'
1+
import { prn, nth, vector, __destructure_map, keyword, clj__GT_js, arrayMap } from 'cherry-cljs/cljs.core.js'
22

33
(function () {
4-
let map__1124, a, vec__1125, b, c, d;
5-
map__1124 = arrayMap(keyword("a"), 1);
4+
let map__1124, m, a, vec__1125, b, c, d;
5+
map__1124 = clj__GT_js(arrayMap(keyword("a"), 1));
66
map__1124 = __destructure_map(map__1124);
7-
a = get(map__1124, keyword("a"));
7+
m = map__1124;
8+
a = map__1124["a"];
89
vec__1125 = vector(2, 3, 4);
910
b = nth(vec__1125, 0, null);
1011
c = nth(vec__1125, 1, null);
1112
d = nth(vec__1125, 2, null);
1213
return (function () {
13-
return console.log(a, b, c, d);
14+
return prn(m, a, b, c, d);
15+
})();
16+
})();
17+
(function () {
18+
let map__1129, m, a;
19+
map__1129 = arrayMap(keyword("js/a"), 1);
20+
map__1129 = __destructure_map(map__1129);
21+
m = map__1129;
22+
a = map__1129["a"];
23+
return (function () {
24+
return prn(m, a);
1425
})();
1526
})();

squint/src/cherry/internal/destructure.cljc

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,12 @@
5757
(if (keyword? mk)
5858
(let [mkns (namespace mk)
5959
mkn (name mk)]
60-
(cond (= mkn "keys") (assoc transforms mk #(keyword (or mkns (namespace %)) (name %)))
61-
(= mkn "syms") (assoc transforms mk #(list `quote (symbol (or mkns (namespace %)) (name %))))
62-
(= mkn "strs") (assoc transforms mk str)
63-
:else transforms))
60+
(cond
61+
(= mk "js/keys") (assoc transforms mk str)
62+
(= mkn "keys") (assoc transforms mk #(keyword (or mkns (namespace %)) (name %)))
63+
(= mkn "syms") (assoc transforms mk #(list `quote (symbol (or mkns (namespace %)) (name %))))
64+
(= mkn "strs") (assoc transforms mk str)
65+
:else transforms))
6466
transforms))
6567
{}
6668
(keys b))]
@@ -79,8 +81,12 @@
7981
(with-meta (symbol nil (name bb)) (meta bb))
8082
bb)
8183
bv (if (contains? defaults local)
82-
(list 'cljs.get gmap bk (defaults local))
83-
(list 'cljs.core/get gmap bk))]
84+
(if (= "js" (namespace bk))
85+
(list 'cljs.core/aget gmap (name bk) (defaults local))
86+
(list 'cljs.core/get gmap bk (defaults local)))
87+
(if (= "js" (namespace bk))
88+
(list 'cljs.core/aget gmap (name bk))
89+
(list 'cljs.core/get gmap bk)))]
8490
(recur
8591
(if (or (keyword? bb) (symbol? bb)) ;(ident? bb)
8692
(-> ret (conj local bv))

0 commit comments

Comments
 (0)