|
412 | 412 |
|
413 | 413 | ;;;; Namespaces / vars |
414 | 414 |
|
415 | | -(defn sci-ns-name [^sci.lang.Namespace ns] |
416 | | - (types/getName ns)) |
417 | | - |
418 | 415 | (defn sci-alias [ctx alias-sym ns-sym] |
419 | 416 | (swap! (:env ctx) |
420 | 417 | (fn [env] |
|
442 | 439 | (throw (new #?(:clj Exception :cljs js/Error) |
443 | 440 | (str "No namespace: " x " found")))))) |
444 | 441 |
|
| 442 | +(defn sci-ns-name [ctx ns] |
| 443 | + (let [^sci.lang.Namespace ns (sci-the-ns ctx ns)] |
| 444 | + (types/getName ns))) |
| 445 | + |
445 | 446 | (defn sci-ns-aliases [ctx sci-ns] |
446 | | - (let [sci-ns (sci-the-ns ctx sci-ns) |
447 | | - name (sci-ns-name sci-ns) |
| 447 | + (let [name (sci-ns-name ctx sci-ns) |
448 | 448 | aliases (get-in @(:env ctx) [:namespaces name :aliases])] |
449 | 449 | (zipmap (keys aliases) |
450 | 450 | (map (fn [sym] |
|
455 | 455 | (dissoc m :aliases :imports :obj :refer :refers)) |
456 | 456 |
|
457 | 457 | (defn sci-ns-interns [ctx sci-ns] |
458 | | - (let [sci-ns (sci-the-ns ctx sci-ns) |
459 | | - name (sci-ns-name sci-ns) |
| 458 | + (let [name (sci-ns-name ctx sci-ns) |
460 | 459 | m (get-in @(:env ctx) [:namespaces name]) |
461 | 460 | m (clean-ns m)] |
462 | 461 | m)) |
463 | 462 |
|
464 | 463 | (defn sci-ns-publics [ctx sci-ns] |
465 | | - (let [sci-ns (sci-the-ns ctx sci-ns) |
466 | | - name (sci-ns-name sci-ns) |
| 464 | + (let [name (sci-ns-name ctx sci-ns) |
467 | 465 | m (get-in @(:env ctx) [:namespaces name]) |
468 | 466 | m (clean-ns m)] |
469 | 467 | (into {} (keep (fn [[k v]] |
|
472 | 470 | m)))) |
473 | 471 |
|
474 | 472 | (defn sci-ns-imports [ctx sci-ns] |
475 | | - (let [sci-ns (sci-the-ns ctx sci-ns) |
476 | | - name (sci-ns-name sci-ns) |
| 473 | + (let [name (sci-ns-name ctx sci-ns) |
477 | 474 | env @(:env ctx) |
478 | 475 | global-imports (:imports env) |
479 | 476 | namespace-imports (get-in env [:namespaces name :imports]) |
|
483 | 480 | (zipmap all-aliased (map (comp :class #(get class-opts %)) all-imports)))) |
484 | 481 |
|
485 | 482 | (defn sci-ns-refers [ctx sci-ns] |
486 | | - (let [sci-ns (sci-the-ns ctx sci-ns) |
487 | | - name (sci-ns-name sci-ns) |
| 483 | + (let [name (sci-ns-name ctx sci-ns) |
488 | 484 | env @(:env ctx) |
489 | 485 | refers (get-in env [:namespaces name :refers]) |
490 | 486 | clojure-core (get-in env [:namespaces 'clojure.core]) |
|
500 | 496 | (assert (symbol? sym)) ; protects :aliases, :imports, :obj, etc. |
501 | 497 | (swap! (:env ctx) |
502 | 498 | (fn [env] |
503 | | - (let [sci-ns (sci-the-ns ctx sci-ns) |
504 | | - name (sci-ns-name sci-ns)] |
| 499 | + (let [name (sci-ns-name ctx sci-ns)] |
505 | 500 | (update-in env [:namespaces name] |
506 | 501 | (fn [the-ns-map] |
507 | 502 | (cond (contains? (:refers the-ns-map) sym) |
|
522 | 517 | (defn sci-ns-unalias [ctx sci-ns sym] |
523 | 518 | (swap! (:env ctx) |
524 | 519 | (fn [env] |
525 | | - (update-in env [:namespaces (sci-ns-name (sci-the-ns ctx sci-ns)) :aliases] dissoc sym))) |
| 520 | + (update-in env [:namespaces (sci-ns-name ctx sci-ns) :aliases] dissoc sym))) |
526 | 521 | nil) |
527 | 522 |
|
528 | 523 | (defn sci-all-ns [ctx] |
|
541 | 536 | ;; in this case the var will become unbound |
542 | 537 | ([ctx ns var-sym] |
543 | 538 | (let [ns (sci-the-ns ctx ns) |
544 | | - ns-name (sci-ns-name ns) |
| 539 | + ns-name (types/getName ns) |
545 | 540 | env (:env ctx)] |
546 | 541 | (or (get-in @env [:namespaces ns-name var-sym]) |
547 | 542 | (let [var-name (symbol (str ns-name) (str var-sym)) |
|
551 | 546 | new-var)))) |
552 | 547 | ([ctx ns var-sym val] |
553 | 548 | (let [ns (sci-the-ns ctx ns) |
554 | | - ns-name (sci-ns-name ns) |
| 549 | + ns-name (types/getName ns) |
555 | 550 | env (:env ctx)] |
556 | 551 | (or (when-let [v (get-in @env [:namespaces ns-name var-sym])] |
557 | 552 | (sci.impl.vars/bindRoot v val) |
|
717 | 712 | ns (:ns m) |
718 | 713 | nm (:name m)] |
719 | 714 | (when (and ns nm) |
720 | | - (symbol (str (sci-ns-name ns)) |
| 715 | + (symbol (str (types/getName ns)) |
721 | 716 | (str (clojure.core/name nm))))) |
722 | 717 | (symbol name))) |
723 | 718 | ([ns name] (symbol ns name))) |
|
1490 | 1485 | 'ns-map (copy-var sci-ns-map clojure-core-ns {:name 'ns-map :ctx true}) |
1491 | 1486 | 'ns-unmap (copy-var sci-ns-unmap clojure-core-ns {:ctx true :name 'ns-unmap}) |
1492 | 1487 | 'ns-unalias (copy-var sci-ns-unalias clojure-core-ns {:ctx true :name 'ns-unalias}) |
1493 | | - 'ns-name (copy-var sci-ns-name clojure-core-ns {:name 'ns-name}) |
| 1488 | + 'ns-name (copy-var sci-ns-name clojure-core-ns {:name 'ns-name :ctx true}) |
1494 | 1489 | 'odd? (copy-core-var odd?) |
1495 | 1490 | #?@(:cljs ['object? (copy-core-var object?)]) |
1496 | 1491 | 'object-array (copy-core-var object-array) |
|
1727 | 1722 | macro? (:macro m)] |
1728 | 1723 | (sci.impl.io/println "-------------------------") |
1729 | 1724 | (sci.impl.io/println (str (when-let [ns* (:ns m)] |
1730 | | - (str (sci-ns-name ns*) "/")) |
| 1725 | + (str (types/getName ns*) "/")) |
1731 | 1726 | (:name m))) |
1732 | 1727 | (when arglists (sci.impl.io/println arglists)) |
1733 | 1728 | (when macro? (sci.impl.io/println "Macro")) |
|
1750 | 1745 | ms (concat (mapcat #(sort-by :name (map meta (vals (sci-ns-interns ctx %)))) |
1751 | 1746 | (sci-all-ns ctx)) |
1752 | 1747 | (map #(assoc (meta %) |
1753 | | - :name (sci-ns-name %)) (sci-all-ns ctx)) |
| 1748 | + :name (types/getName %)) (sci-all-ns ctx)) |
1754 | 1749 | #_(map special-doc (keys special-doc-map)))] |
1755 | 1750 | (doseq [m ms |
1756 | 1751 | :when (and (:doc m) |
|
1813 | 1808 | (let [f (jio/file file)] |
1814 | 1809 | (when (.exists f) (slurp f))))) |
1815 | 1810 | (when-let [load-fn (:load-fn @(:env ctx))] |
1816 | | - (:source (load-fn {:namespace (sci-ns-name ns)}))))] |
| 1811 | + (:source (load-fn {:namespace (types/getName ns)}))))] |
1817 | 1812 | (let [lines (clojure.string/split source #"\n") |
1818 | 1813 | line (dec line) |
1819 | 1814 | start (clojure.string/join "\n" (drop line lines)) |
|
1860 | 1855 | (let [file (.getFileName el) |
1861 | 1856 | clojure-fn? (and file (or (.endsWith file ".clj") |
1862 | 1857 | (.endsWith file ".cljc") |
1863 | | - (= file "NO_SOURCE_FILE")))] |
| 1858 | + (= "NO_SOURCE_FILE" file)))] |
1864 | 1859 | (str (if clojure-fn? |
1865 | 1860 | (demunge (.getClassName el)) |
1866 | 1861 | (str (.getClassName el) "." (.getMethodName el))) |
|
0 commit comments