Как определить полный путь к файлу, в котором определено пространство имен Clojure? - PullRequest
0 голосов
/ 25 июня 2019

Например:

(defn show-full-path-of-ns [namespace-symbol]
    ;; how to do it?
    )

(show-full-path-of-ns 'ring.middleware.session)
;; => ~/.m2/repository/ring/ring-core/1.7.1/ring-core-1.7.1.jar!ring/middleware/session.clj

(Да, я знаю, что можно разделить пространство имен на несколько файлов, но мы можем игнорировать это.)

1 Ответ

0 голосов
/ 25 июня 2019

Это частичное решение проблемы.Он работает для jar-файлов в classpath, но может дать вам некоторое представление.

(ns so.find-namespaces
    (:require
        [clojure.tools.namespace.find :as f]
        [clojure.java.classpath :as cp])
    (:import
        [java.util.jar JarFile]))

(apply hash-map (->> (cp/classpath)
                     (filter (memfn isFile))
                     (mapcat #(interleave (f/find-namespaces-in-jarfile (JarFile. %)) (repeat (.getCanonicalPath %))))))

В любом случае, если есть решение, оно, вероятно, находится в здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...