Skip to content
Clojure library for creating (dev) namespaces of proxy vars
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/com/gfredericks
test/com/gfredericks
tmp-test-classpath
.gitignore
CHANGELOG.md
LICENSE
README.md
project.clj

README.md

dot-slash-2

dot-slash-2 is a library version of lein-shorthand, which is a leiningen plugin.

It lets you create namespaces with proxies to other namespaces. It is named after the idea of creating a namespace called . with dev utilities, to allow accessing them with the syntax ./foo from anywhere without needing to require anything.

Obtention

[com.gfredericks/dot-slash-2 "0.1.5"]

Usage

Raw

Basic

(require '[com.gfredericks.dot-slash-2 :as dot-slash-2])

;; Defines a namespace called . and adds ./doc, ./source,
;; ./run-tests, and ./refresh
(dot-slash-2/!
 '{. [clojure.repl/doc
      clojure.repl/source
      clojure.test/run-tests
      clojure.tools.namespace.repl/refresh]})

Advanced

(require '[com.gfredericks.dot-slash-2 :as dot-slash-2])

(dot-slash-2/!
 '{& [{:var clojure.repl/doc
       ;; :name allows renaming the alias
       :name d}

      {:var user/cool-util
       ;; dynamic? means the var will be looked up on each call, which
       ;; supports namespace reloading
       :dynamic? true}

      ;; the map form can be mixed with the simple form
      clojure.data/diff

      {:var    clojure.core/and
       ;; lazy? means the underlying namespace will not be required
       ;; until the first call
       :lazy?  true
       ;; when using lazy? you have to indicate if it is a macro or
       ;; not
       :macro? true}]})

Leiningen

In your project.clj or :user profile or whatever:

:injections [(do
               (require 'com.gfredericks.dot-slash-2)
               ((resolve 'com.gfredericks.dot-slash-2/!)
                '{. [clojure.repl/doc
                     clojure.repl/source
                     clojure.test/run-tests
                     clojure.tools.namespace.repl/refresh]}))]

License

Copyright © 2017 Gary Fredericks

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

You can’t perform that action at this time.