Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Module to find all Clojure modules in compiled .jar-files (listed in Classpath)
(ns comp-ns-find
(:require [clojure.contrib.seq :as seq]
[clojure.contrib.classpath :as cp]
[clojure.contrib.jar :as jar])
(:import (java.util.jar JarFile)))
(defn find-compiled-modules
"Performs search for clojure namespaces in .jar files"
(map symbol
(filter (comp not nil?)
(seq/flatten (map
(fn [#^JarFile jar-file]
(when jar-file
(fn [#^String jar-entry]
(-> jar-entry
(.replaceAll "__init\\.class" "")
(.replaceAll "/" ".")
(.replaceAll "_" "-")))
(filter (fn [jar-entry]
(.endsWith jar-entry "__init.class"))
(jar/filenames-in-jar jar-file)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment