|
462 | 462 | (defn clean-ns [m] |
463 | 463 | (dissoc m :aliases :imports :obj :refer :refers)) |
464 | 464 |
|
465 | | -(defn sci-ns-interns [ctx sci-ns] |
| 465 | +(defn sci-ns-interns* [ctx sci-ns] |
466 | 466 | (let [name (sci-ns-name ctx sci-ns) |
467 | 467 | m (get-in @(:env ctx) [:namespaces name]) |
468 | 468 | m (clean-ns m)] |
469 | 469 | m)) |
470 | 470 |
|
471 | | -(defn sci-ns-publics [ctx sci-ns] |
| 471 | +(defn sci-ns-interns [sci-ns] |
| 472 | + (let [ctx (store/get-ctx)] |
| 473 | + (sci-ns-interns* ctx sci-ns))) |
| 474 | + |
| 475 | +(defn sci-ns-publics* [ctx sci-ns] |
472 | 476 | (let [name (sci-ns-name ctx sci-ns) |
473 | 477 | m (get-in @(:env ctx) [:namespaces name]) |
474 | 478 | m (clean-ns m)] |
|
477 | 481 | [k v])) |
478 | 482 | m)))) |
479 | 483 |
|
480 | | -(defn sci-ns-imports [ctx sci-ns] |
| 484 | +(defn sci-ns-publics [sci-ns] |
| 485 | + (let [ctx (store/get-ctx)] |
| 486 | + (sci-ns-publics* ctx sci-ns))) |
| 487 | + |
| 488 | +(defn sci-ns-imports* [ctx sci-ns] |
481 | 489 | (let [name (sci-ns-name ctx sci-ns) |
482 | 490 | env @(:env ctx) |
483 | 491 | global-imports (:imports env) |
|
487 | 495 | all-imports (concat (vals global-imports) (vals namespace-imports))] |
488 | 496 | (zipmap all-aliased (map (comp :class #(get class-opts %)) all-imports)))) |
489 | 497 |
|
490 | | -(defn sci-ns-refers [ctx sci-ns] |
| 498 | +(defn sci-ns-imports [sci-ns] |
| 499 | + (let [ctx (store/get-ctx)] |
| 500 | + (sci-ns-imports* ctx sci-ns))) |
| 501 | + |
| 502 | +(defn sci-ns-refers* [ctx sci-ns] |
491 | 503 | (let [name (sci-ns-name ctx sci-ns) |
492 | 504 | env @(:env ctx) |
493 | 505 | refers (get-in env [:namespaces name :refers]) |
494 | 506 | clojure-core (get-in env [:namespaces 'clojure.core]) |
495 | 507 | clojure-core (clean-ns clojure-core)] |
496 | 508 | (merge clojure-core refers))) |
497 | 509 |
|
498 | | -(defn sci-ns-map [ctx sci-ns] |
499 | | - (merge (sci-ns-interns ctx sci-ns) |
500 | | - (sci-ns-refers ctx sci-ns) |
501 | | - (sci-ns-imports ctx sci-ns))) |
| 510 | +(defn sci-ns-refers [sci-ns] |
| 511 | + (let [ctx (store/get-ctx)] |
| 512 | + (sci-ns-refers* ctx sci-ns))) |
| 513 | + |
| 514 | +(defn sci-ns-map [sci-ns] |
| 515 | + (let [ctx (store/get-ctx)] |
| 516 | + (merge (sci-ns-interns* ctx sci-ns) |
| 517 | + (sci-ns-refers* ctx sci-ns) |
| 518 | + (sci-ns-imports* ctx sci-ns)))) |
502 | 519 |
|
503 | 520 | (defn sci-ns-unmap [ctx sci-ns sym] |
504 | 521 | (assert (symbol? sym)) ; protects :aliases, :imports, :obj, etc. |
|
1489 | 1506 | 'next (copy-core-var next) |
1490 | 1507 | 'nnext (copy-core-var nnext) |
1491 | 1508 | 'ns-aliases (copy-var sci-ns-aliases clojure-core-ns {:name 'ns-aliases}) |
1492 | | - 'ns-imports (copy-var sci-ns-imports clojure-core-ns {:ctx true :name 'ns-imports}) |
1493 | | - 'ns-interns (copy-var sci-ns-interns clojure-core-ns {:ctx true :name 'ns-interns}) |
1494 | | - 'ns-publics (copy-var sci-ns-publics clojure-core-ns {:ctx true :name 'ns-publics}) |
1495 | | - 'ns-refers (copy-var sci-ns-refers clojure-core-ns {:ctx true :name 'ns-refers}) |
1496 | | - 'ns-map (copy-var sci-ns-map clojure-core-ns {:name 'ns-map :ctx true}) |
| 1509 | + 'ns-imports (copy-var sci-ns-imports clojure-core-ns {:name 'ns-imports}) |
| 1510 | + 'ns-interns (copy-var sci-ns-interns clojure-core-ns {:name 'ns-interns}) |
| 1511 | + 'ns-publics (copy-var sci-ns-publics clojure-core-ns {:name 'ns-publics}) |
| 1512 | + 'ns-refers (copy-var sci-ns-refers clojure-core-ns {:name 'ns-refers}) |
| 1513 | + 'ns-map (copy-var sci-ns-map clojure-core-ns {:name 'ns-map}) |
1497 | 1514 | 'ns-unmap (copy-var sci-ns-unmap clojure-core-ns {:ctx true :name 'ns-unmap}) |
1498 | 1515 | 'ns-unalias (copy-var sci-ns-unalias clojure-core-ns {:ctx true :name 'ns-unalias}) |
1499 | 1516 | 'ns-name (copy-var sci-ns-name clojure-core-ns {:name 'ns-name :ctx true}) |
|
1719 | 1736 | (let [current-ns (sci.impl.utils/current-ns-name) |
1720 | 1737 | the-ns (sci-the-ns ctx |
1721 | 1738 | (get (sci-ns-aliases* ctx current-ns) ns ns))] |
1722 | | - (sort (map first (sci-ns-publics ctx the-ns))))) |
| 1739 | + (sort (map first (sci-ns-publics* ctx the-ns))))) |
1723 | 1740 |
|
1724 | 1741 | (defn dir |
1725 | 1742 | [_ _ nsname] |
|
1754 | 1771 | [ctx re-string-or-pattern] |
1755 | 1772 | (let [re (re-pattern re-string-or-pattern) |
1756 | 1773 | ans (sci-all-ns) |
1757 | | - ms (concat (mapcat #(sort-by :name (map meta (vals (sci-ns-interns ctx %)))) |
| 1774 | + ms (concat (mapcat #(sort-by :name (map meta (vals (sci-ns-interns* ctx %)))) |
1758 | 1775 | ans) |
1759 | 1776 | (map #(assoc (meta %) |
1760 | 1777 | :name (types/getName %)) ans) |
|
1776 | 1793 | (sort (mapcat (fn [ns] |
1777 | 1794 | (let [ns-name (str ns)] |
1778 | 1795 | (map #(symbol ns-name (str %)) |
1779 | | - (filter matches? (keys (sci-ns-publics ctx ns)))))) |
| 1796 | + (filter matches? (keys (sci-ns-publics* ctx ns)))))) |
1780 | 1797 | (sci-all-ns))))) |
1781 | 1798 |
|
1782 | 1799 | #_(defn source-fn |
|
0 commit comments