All Projects → clj-commons → zprint-clj

clj-commons / zprint-clj

Licence: MIT License
Node.js wrapper for ZPrint Clojure source code formatter

Programming Languages

clojure
4091 projects

Projects that are alternatives of or similar to zprint-clj

snakefmt
The uncompromising Snakemake code formatter
Stars: ✭ 78 (+500%)
Mutual labels:  fmt
php-ast-reverter
Reverts the php-ast AST back into (somewhat) PSR-compliant code
Stars: ✭ 49 (+276.92%)
Mutual labels:  pretty-printer
glitter
Display git status information in your shell prompt
Stars: ✭ 47 (+261.54%)
Mutual labels:  pretty-printer
minformat
gominfmt makes the Go code more compact to aid further compression; revert with gofmt
Stars: ✭ 19 (+46.15%)
Mutual labels:  fmt
StyLua
An opinionated Lua code formatter
Stars: ✭ 479 (+3584.62%)
Mutual labels:  pretty-printer
pretty print formatter
Pretty Print Formatter for Elixir Logger module -- Colorize Ecto's SQL ouput 🖌️
Stars: ✭ 22 (+69.23%)
Mutual labels:  pretty-printer
pretty.rs
Wadler-style pretty-printing combinators in Rust
Stars: ✭ 85 (+553.85%)
Mutual labels:  pretty-printer
Tabula
🈸 Pretty printer for maps/structs collections (Elixir)
Stars: ✭ 85 (+553.85%)
Mutual labels:  pretty-printer
tv
📺(tv) Tidy Viewer is a cross-platform CLI csv pretty printer that uses column styling to maximize viewer enjoyment.
Stars: ✭ 1,763 (+13461.54%)
Mutual labels:  pretty-printer
ex format
ExFormat formats Elixir source code according to a standard set of rules
Stars: ✭ 39 (+200%)
Mutual labels:  pretty-printer
kotlin-metadata-printer
Prints the Kotlin metadata attached to Java class files
Stars: ✭ 41 (+215.38%)
Mutual labels:  pretty-printer
fmtc
fmtc overrides print functions of the fmt package and add ability to coloring the console output in the HTML-style
Stars: ✭ 15 (+15.38%)
Mutual labels:  fmt
sexp-grammar
Invertible parsing for S-expressions
Stars: ✭ 28 (+115.38%)
Mutual labels:  pretty-printer
language-rust
Parser and pretty-printer for the Rust language
Stars: ✭ 78 (+500%)
Mutual labels:  pretty-printer
html-pretty-min
PHP library for minifying and indenting HTML documents that works on the DOM tree
Stars: ✭ 19 (+46.15%)
Mutual labels:  pretty-printer
Logger
✔️ Simple, pretty and powerful logger for android
Stars: ✭ 13,093 (+100615.38%)
Mutual labels:  pretty-printer

CircleCI

Node.js wrapper for ZPrint Clojure source code formatter

Usage

CLI

Install

npm i -g zprint-clj

Format and write back

zprint-clj -i "./src/**/*.{clj,cljs,cljc,edn}" -o ./

Check formatting without writing (useful for CI)

zprint-clj --check "./src/**/*.{clj,cljs,cljc,edn}"

API

npm i zprint-clj
const printFile = require('zprint-clj');
const outputText = format(inputText, inputFilePath, opts);

Options

  • isHangEnabled true|false — enable hang mode (disabled by default), slows down formatting, but results in better formatted output

Difference between output when Hang mode is on and off

diff --git a/hang.clj b/nohang.clj
index 907120f..965fdfa 100644
--- a/hang.clj
+++ b/nohang.clj
@@ -1,6 +1,7 @@
 (ns zprint-clj.core
-  (:require [zprint.core :as zprint]
-            [goog.object :as gobj]))
+  (:require
+    [zprint.core :as zprint]
+    [goog.object :as gobj]))
@@ -15,8 +16,9 @@

 (defn- make-cfg
   [opts]
-  (cond (false? (gobj/get opts "isHangEnabled")) no-hang
-        :else {}))
+  (cond
+    (false? (gobj/get opts "isHangEnabled")) no-hang
+    :else {}))

Advanced Configuration

You can configure zprint-clj with a .zprintrc file. The .zprintrc is written in EDN format.

Your .zprintrc file will be resolved if it is found in one of two locations:

  1. The current directory where the zprint-clj process was initialized
  2. The global HOME directory

If none found, we fall back on zprint-clj default settings.

Building

production

clojure scripts/build.clj

debug

clojure scripts/build_debug.clj

Local Development

The following guide outlines how to locally develop zprint-clj. Please make sure you have the clj cli tool installed.

  • Install zprint-clj dependencies

    npm install
  • Make your your code changes in the src directory

  • Compile your changes

    clojure scripts/build_debug.clj
  • Update js-src/index to look like this

    const zp = require("../out/main-debug").zprint_clj.core;

    This tells zprint-clj to use the debug version

  • Create a test Clojure file with some test code you want to see formatted

  • Open the test file in your editor of choice

  • Run zprint-clj against your test file

    js-src/cli.js -i <your-filename-here> -o <your-filename-here>

    If you are running in a different directory you will have to update above path to js-src/cli.js. The reason we run this instead of main-debug is because cli, or index, act as the entry points for JS for this library.

Editor plugins

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].