|
443 | 443 | (throw (new #?(:clj Exception :cljs js/Error) |
444 | 444 | (str "No namespace: " x " found")))))) |
445 | 445 |
|
446 | | -(defn sci-ns-name [ctx ns] |
| 446 | +(defn sci-ns-name* [ctx ns] |
447 | 447 | (let [^sci.lang.Namespace ns (sci-the-ns ctx ns)] |
448 | 448 | (types/getName ns))) |
449 | 449 |
|
| 450 | +(defn sci-ns-name [ns] |
| 451 | + (let [ctx (store/get-ctx)] |
| 452 | + (sci-ns-name* ctx ns))) |
| 453 | + |
450 | 454 | (defn sci-ns-aliases* [ctx sci-ns] |
451 | | - (let [name (sci-ns-name ctx sci-ns) |
| 455 | + (let [name (sci-ns-name* ctx sci-ns) |
452 | 456 | aliases (get-in @(:env ctx) [:namespaces name :aliases])] |
453 | 457 | (zipmap (keys aliases) |
454 | 458 | (map (fn [sym] |
|
463 | 467 | (dissoc m :aliases :imports :obj :refer :refers)) |
464 | 468 |
|
465 | 469 | (defn sci-ns-interns* [ctx sci-ns] |
466 | | - (let [name (sci-ns-name ctx sci-ns) |
| 470 | + (let [name (sci-ns-name* ctx sci-ns) |
467 | 471 | m (get-in @(:env ctx) [:namespaces name]) |
468 | 472 | m (clean-ns m)] |
469 | 473 | m)) |
|
473 | 477 | (sci-ns-interns* ctx sci-ns))) |
474 | 478 |
|
475 | 479 | (defn sci-ns-publics* [ctx sci-ns] |
476 | | - (let [name (sci-ns-name ctx sci-ns) |
| 480 | + (let [name (sci-ns-name* ctx sci-ns) |
477 | 481 | m (get-in @(:env ctx) [:namespaces name]) |
478 | 482 | m (clean-ns m)] |
479 | 483 | (into {} (keep (fn [[k v]] |
|
486 | 490 | (sci-ns-publics* ctx sci-ns))) |
487 | 491 |
|
488 | 492 | (defn sci-ns-imports* [ctx sci-ns] |
489 | | - (let [name (sci-ns-name ctx sci-ns) |
| 493 | + (let [name (sci-ns-name* ctx sci-ns) |
490 | 494 | env @(:env ctx) |
491 | 495 | global-imports (:imports env) |
492 | 496 | namespace-imports (get-in env [:namespaces name :imports]) |
|
500 | 504 | (sci-ns-imports* ctx sci-ns))) |
501 | 505 |
|
502 | 506 | (defn sci-ns-refers* [ctx sci-ns] |
503 | | - (let [name (sci-ns-name ctx sci-ns) |
| 507 | + (let [name (sci-ns-name* ctx sci-ns) |
504 | 508 | env @(:env ctx) |
505 | 509 | refers (get-in env [:namespaces name :refers]) |
506 | 510 | clojure-core (get-in env [:namespaces 'clojure.core]) |
|
522 | 526 | (assert (symbol? sym)) ; protects :aliases, :imports, :obj, etc. |
523 | 527 | (swap! (:env ctx) |
524 | 528 | (fn [env] |
525 | | - (let [name (sci-ns-name ctx sci-ns)] |
| 529 | + (let [name (sci-ns-name* ctx sci-ns)] |
526 | 530 | (update-in env [:namespaces name] |
527 | 531 | (fn [the-ns-map] |
528 | 532 | (cond (contains? (:refers the-ns-map) sym) |
|
540 | 544 | :else the-ns-map))))))) |
541 | 545 | nil) |
542 | 546 |
|
543 | | -(defn sci-ns-unalias [ctx sci-ns sym] |
544 | | - (swap! (:env ctx) |
545 | | - (fn [env] |
546 | | - (update-in env [:namespaces (sci-ns-name ctx sci-ns) :aliases] dissoc sym))) |
547 | | - nil) |
| 547 | +(defn sci-ns-unalias [sci-ns sym] |
| 548 | + (let [ctx (store/get-ctx)] |
| 549 | + (swap! (:env ctx) |
| 550 | + (fn [env] |
| 551 | + (update-in env [:namespaces (sci-ns-name* ctx sci-ns) :aliases] dissoc sym))) |
| 552 | + nil)) |
548 | 553 |
|
549 | 554 | (defn sci-all-ns [] |
550 | 555 | (let [env (:env (store/get-ctx)) |
|
1513 | 1518 | 'ns-refers (copy-var sci-ns-refers clojure-core-ns {:name 'ns-refers}) |
1514 | 1519 | 'ns-map (copy-var sci-ns-map clojure-core-ns {:name 'ns-map}) |
1515 | 1520 | 'ns-unmap (copy-var sci-ns-unmap clojure-core-ns {:name 'ns-unmap}) |
1516 | | - 'ns-unalias (copy-var sci-ns-unalias clojure-core-ns {:ctx true :name 'ns-unalias}) |
1517 | | - 'ns-name (copy-var sci-ns-name clojure-core-ns {:name 'ns-name :ctx true}) |
| 1521 | + 'ns-unalias (copy-var sci-ns-unalias clojure-core-ns {:name 'ns-unalias}) |
| 1522 | + 'ns-name (copy-var sci-ns-name clojure-core-ns {:name 'ns-name}) |
1518 | 1523 | 'odd? (copy-core-var odd?) |
1519 | 1524 | #?@(:cljs ['object? (copy-core-var object?)]) |
1520 | 1525 | 'object-array (copy-core-var object-array) |
|
0 commit comments