clj-commons / Rewrite Clj
Programming Languages
:notitle: :figure-caption!: :imagesdir: ./doc :project-src-coords: clj-commons/rewrite-clj :project-mvn-coords: rewrite-clj/rewrite-clj :workflow-url: https://github.com/{project-src-coords}/actions/workflows
image:rewrite-clj-logo.png[rewrite-clj,270,60]
https://cljdoc.org/d/{project-mvn-coords}/CURRENT[image:https://cljdoc.org/badge/{project-mvn-coords}[cljdoc]] {workflow-url}/unit-test.yml[image:{workflow-url}/unit-test.yml/badge.svg[Unit Tests]] {workflow-url}/libs-test.yml[image:{workflow-url}/libs-test.yml/badge.svg[Libs Test]] {workflow-url}/native-image-test.yml[image:{workflow-url}/native-image-test.yml/badge.svg[Native Image Tests]] https://codecov.io/gh/{project-src-coords}[image:https://codecov.io/gh/{project-src-coords}/branch/main/graph/badge.svg[Code Coverage]] https://clojurians.slack.com/messages/CHB5Q2XUJ[image:https://img.shields.io/badge/slack-join_chat-brightgreen.svg[Join chat]] https://clojars.org/rewrite-clj[image:https://img.shields.io/clojars/v/rewrite-clj.svg[Clojars project]]
A library that reads and writes Clojure, ClojureScript and https://github.com/edn-format/edn[EDN] from Clojure and ClojureScript in a whitespace and comment preserving way.
== Status
Warning: v1 Alpha Release
- Migration from https://github.com/lread/rewrite-cljc-playground[rewrite-cljc-playground] complete. Rewrite-cljc-playground is where I first merged rewrite-clj v0 and rewrite-cljs.
- We are automatically link:doc/02-developer-guide.adoc#libs-test[testing against popular libraries]. We patch them to use rewrite-clj v1 and then run their test suites. Only a minor failure on zprint v1.1.1 was found due to intentional breaking changes in namespaced maps.
- Please review link:CHANGELOG.adoc[change log] for an overview of all v1 changes.
- I am very conservative on making any further v0->v1 breaking changes, but am open to breaking changes to any of the new v1 work.
We'll move out of alpha after folks have had a chance to give rewrite-clj v1 alpha a good shake. Things look solid but I would be very surprised if there are no issues and/or feedback.
See https://github.com/clj-commons/rewrite-clj/projects/1[project page for current priorities].
== Docs
- link:doc/01-user-guide.adoc[User Guide]
- link:doc/02-developer-guide.adoc[Developer Guide]
- Design ** link:doc/design/01-merging-rewrite-clj-and-rewrite-cljs.adoc[Merging rewrite-clj and rewrite-cljs]
- link:doc/03-faq.adoc[FAQ]
[[used-in]] == Used In...
Some projects using rewrite-clj v1
- https://github.com/liquidz/antq[antq] ^🐥^
- https://github.com/borkdude/carve[carve] ^🐥^ (in dev)
- https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] ^🐥^ (in dev)
- https://github.com/borkdude/rewrite-edn[rewrite-edn] ^🐥^
- https://github.com/lread/test-doc-blocks[test-doc-blocks] ^🐥^
Some projects using rewrite-clj v0 and/or rewrite-cljs
- https://github.com/mauricioszabo/atom-chlorine[atom-chlorine] ^📍^
- https://github.com/weavejester/cljfmt[cljfmt] ^🐥^
- https://github.com/greglook/cljstyle[cljstyle] ^🐥^ ^🩹^
- https://github.com/Olical/depot[depot] ^🐥^ ^🩹^
- https://github.com/jonase/kibit[kibit] ^🐥^
- https://github.com/xsc/lein-ancient[lein-ancient] ^🐥^
- https://github.com/benedekfazekas/mranderson[mranderson] ^🐥^
- https://github.com/jstepien/mutant[mutant] ^🐥^
- https://github.com/juxt/pack.alpha[pack (alpha)] ^📍^
- https://github.com/clojure-emacs/refactor-nrepl[refactor-nrepl] ^🐥^
- https://github.com/mauricioszabo/repl-tooling[repl-tooling] ^📍^
- https://github.com/atomist-skills/update-leiningen-dependencies-skill[update-leiningen-dependencies-skill] ^📍^
- https://github.com/kkinnear/zprint[zprint] ^🐥^ ^🩹^
Have an update? Let us know!
^🐥^ [.small]#canary tested against rewrite-clj v1 link:doc/02-developer-guide.adoc#libs-test[lib test suite]# + ^🩹^ [.small]#source required minor change to work with rewrite-clj v1# + ^📍^ [.small]#no easy to run unit tests found for this project#
== Versioning
Rewrite-clj versioning scheme is: major
.minor
.patch
-test-qualifier
-
major
increments when a non alpha release API has been broken - something, as a rule, we'd like to avoid. -
minor
increments to convey significant new features have been added. -
patch
indicates bug fixes - it is the total number of commits in the repo. -
test-qualifier
is absent for stable releases. Can bealpha
,beta
,rc1
, etc.
== People
=== Contributors // Contributors updated by script, do not edit // AUTO-GENERATED:CONTRIBUTORS-START :imagesdir: ./doc/generated/contributors [.float-group]
image:borkdude.png[borkdude,role="left",width=310,link="https://github.com/borkdude"] image:slipset.png[slipset,role="left",width=310,link="https://github.com/slipset"] image:sogaiu.png[sogaiu,role="left",width=310,link="https://github.com/sogaiu"] image:danielcompton.png[danielcompton,role="left",width=310,link="https://github.com/danielcompton"] image:kkinnear.png[kkinnear,role="left",width=310,link="https://github.com/kkinnear"] image:PEZ.png[PEZ,role="left",width=310,link="https://github.com/PEZ"] image:vemv.png[vemv,role="left",width=310,link="https://github.com/vemv"] image:AndreaCrotti.png[AndreaCrotti,role="left",width=310,link="https://github.com/AndreaCrotti"] image:anmonteiro.png[anmonteiro,role="left",width=310,link="https://github.com/anmonteiro"] image:arrdem.png[arrdem,role="left",width=310,link="https://github.com/arrdem"] image:bbatsov.png[bbatsov,role="left",width=310,link="https://github.com/bbatsov"] image:brian-dawn.png[brian-dawn,role="left",width=310,link="https://github.com/brian-dawn"] image:eraserhd.png[eraserhd,role="left",width=310,link="https://github.com/eraserhd"] image:ericdallo.png[ericdallo,role="left",width=310,link="https://github.com/ericdallo"] image:green-coder.png[green-coder,role="left",width=310,link="https://github.com/green-coder"] image:jespera.png[jespera,role="left",width=310,link="https://github.com/jespera"] image:martinklepsch.png[martinklepsch,role="left",width=310,link="https://github.com/martinklepsch"] image:mhuebert.png[mhuebert,role="left",width=310,link="https://github.com/mhuebert"] image:plexus.png[plexus,role="left",width=310,link="https://github.com/plexus"] image:stathissideris.png[stathissideris,role="left",width=310,link="https://github.com/stathissideris"] image:swannodette.png[swannodette,role="left",width=310,link="https://github.com/swannodette"]
// AUTO-GENERATED:CONTRIBUTORS-END
=== Founders // Founders updated by script, do not edit // AUTO-GENERATED:FOUNDERS-START :imagesdir: ./doc/generated/contributors [.float-group]
image:rundis.png[rundis,role="left",width=310,link="https://github.com/rundis"] image:xsc.png[xsc,role="left",width=310,link="https://github.com/xsc"]
// AUTO-GENERATED:FOUNDERS-END
=== Current maintainers // Maintainers updated by script, do not edit // AUTO-GENERATED:MAINTAINERS-START :imagesdir: ./doc/generated/contributors [.float-group]
image:lread.png[lread,role="left",width=310,link="https://github.com/lread"]
// AUTO-GENERATED:MAINTAINERS-END
== link:CHANGELOG.adoc[Changes]
== Licences We honor the original MIT license from link:LICENSE[rewrite-clj v0].
Code has been merged/adapted from:
- https://github.com/clj-commons/rewrite-cljs/blob/master/LICENSE[rewrite-cljs which has an MIT license]
- https://github.com/clojure/clojure/blob/master/src/clj/clojure/zip.clj[clojure zip] which is covered by https://clojure.org/community/license[Eclipse Public License 1.0]