|
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