/nsorg

Clojure library for organizing ns form

Primary LanguageClojureEclipse Public License 1.0EPL-1.0

nsorg Build Status cljdoc badge

Clojure library for organizing ns form in a way that whitespace and comments are preserved.

Rules to apply are fully customizable; the default implementation

  • sorts :require, :require-macros, :use and :use-macros libspecs alphabetically and removes duplicates
  • sorts :import class names alphabetically and removes duplicates
  • sorts :exclude, :only, :refer, :refer-macros and :rename options alphabetically and removes duplicates

Also available as Leiningen plugin lein-nsorg and command line tool nsorg-cli.

Installation

Dependency information:

[nsorg "0.2.0"]

Usage

(require '[nsorg.core :as nsorg])

(println (nsorg/rewrite-ns-form "
(ns foo
  ;; use
  (:use [a.c :only [y z x z]]
        a
        [a.b]
))
"))

(ns foo
  ;; use
  (:use a
        [a.b]
        [a.c :only [x y z]]
))

Check API documentation for more details.

Limitations

  • Throws exception on some valid ns forms
  • Doesn't sort :refer, :load or :gen-class clauses

License

Copyright © 2018 Immo Heikkinen

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