Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

101 lines (81 sloc) 3.027 kB
;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
;; distribution terms for this software are covered by the Eclipse Public
;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
;; be found in the file epl-v10.html at the root of this distribution. By
;; using this software in any fashion, you are agreeing to be bound by the
;; terms of this license. You must not remove this notice, or any other,
;; from this software.
;; scgilardi (gmail)
;; 23 April 2008
;; DEPRECATED in 1.2: dir and print-dir. Use dir and dir-fn in
;; clojure.repl.
(ns
^{:author "Stephen C. Gilardi",
:doc "Namespace utilities
get-ns returns the namespace named by a symbol or throws
if the namespace does not exist
ns-vars returns a sorted seq of symbols naming public vars
in a namespace
print-docs prints documentation for the public vars in a
namespace
immigrate Create a public var in this namespace for each
public var in the namespaces named by ns-names.
From James Reeves
vars returns a sorted seq of symbols naming public vars
in a namespace (macro)
docs prints documentation for the public vars in a
namespace (macro)"}
clojure.contrib.ns-utils
(:use clojure.contrib.except))
;; Namespace Utilities
(defn get-ns
"Returns the namespace named by ns-sym or throws if the
namespace does not exist"
[ns-sym]
(let [ns (find-ns ns-sym)]
(throw-if (not ns) "Unable to find namespace: %s" ns-sym)
ns))
(defn ns-vars
"Returns a sorted seq of symbols naming public vars in
a namespace"
[ns]
(sort (map first (ns-publics ns))))
(defn print-dir
"Prints a sorted directory of public vars in a namespace"
{:deprecated "1.2"}
[ns]
(doseq [item (ns-vars ns)]
(println item)))
(defn print-docs
"Prints documentation for the public vars in a namespace"
[ns]
(doseq [item (ns-vars ns)]
(print-doc (ns-resolve ns item))))
;; Convenience
(defmacro vars
"Returns a sorted seq of symbols naming public vars in
a namespace"
[nsname]
`(ns-vars (get-ns '~nsname)))
(defmacro dir
"Prints a sorted directory of public vars in a namespace"
{:deprecated "1.2"}
[nsname]
`(print-dir (get-ns '~nsname)))
(defmacro docs
"Prints documentation for the public vars in a namespace"
[nsname]
`(print-docs (get-ns '~nsname)))
(defn immigrate
"Create a public var in this namespace for each public var in the
namespaces named by ns-names. The created vars have the same name, root
binding, and metadata as the original except that their :ns metadata
value is this namespace."
[& ns-names]
(doseq [ns ns-names]
(require ns)
(doseq [[sym var] (ns-publics ns)]
(let [sym (with-meta sym (assoc (meta var) :ns *ns*))]
(if (.hasRoot var)
(intern *ns* sym (.getRoot var))
(intern *ns* sym))))))
Jump to Line
Something went wrong with that request. Please try again.