TQFormat
Applying the TruQu formatting preferences to our Erlang-ish code
TQFormat is a rebar3 plugin for applying our formatting preferences to our code.
It is highly opinionated and very much unconfigurable. The only configuration option concerns the page-width.
It is roughly based on Jean-Philippe Bernardy's A Pretty But Not Greedy Printer, and uses erlfmt for parsing Erlang-ish code into an AST. That AST is then fed to the formatter, which turns the AST into a document-tree. The document-tree, finally, is evaluated given the paper-width, which produces a set of printable lines.
Examples
Our formatting style is largely based on how Emacs formats comma-first Erlang code. Hence, a map like this:
#{this => is, a => record, with => many, keys => and_, values => and_, wont => fit, on => a, single => line}.will result in the following:
erlang formatted #{ this => is , a => record , with => many , keys => and_ , values => and_ , wont => fit , on => a , single => line }.
We inline singular clauses in case (etc) expressions, though multiple
expressions will always be laid out as an indented block.
Therefore, this code:
case Foo of bar -> do(something), ok; baz -> help end.Will be formatted like so:
erlang formatted case Foo of bar -> do(something), ok; baz -> help end.
Usage
This is a rebar3 plugin, so you'll want to add it to the plugins section of the configuration.
Configuration can be provided through rebar.config or through command-line
parameters.
License
TQFormat is released under the Apache 2.0 license, as found in the LICENSE
file.