# ERB::Formatter 🪜 Format ERB files with speed and precision. Features: - very fast - attempts to limit length (configurable) - tries to have an ouput similar to prettier for HTML - indents correctly ruby blocks (e.g. `if`/`elsif`/`do`/`end`) - designed to be integrated into editors and commit hooks - gives meaningful output in case of errors (most of the time) - will use multiline values for `class` and `data-action` attributes Roadmap: - extensive unit testing - more configuration options - more ruby reformatting capabilities - JavaScript and CSS formatting - VSCode plugin ## Installation Add this line to your application's Gemfile: ```ruby gem 'erb-formatter' gem 'rufo' # for enabling minimal ruby re-formatting ``` And then execute: $ bundle install Or install it yourself as: $ gem install erb-formatter ## Usage ### From the command line $ echo "
asdf <% if 123%> <%='foobar'%> <%end-%>
" | erb-format --stdin
asdf <% if 123 %> <%= 'foobar' %> <% end -%>
Check out `erb-format --help` for more options. ### From Ruby ```ruby require 'erb/formatter' formatted = ERB::Formatter.format <<-ERB
asdf <% if 123%> <%='foobar'%> <%end-%>
ERB # => "
\n asdf\n <% if 123 %>\n <%= 'foobar' %>\n <% end -%>\n
\n" # # Same as: # #
# asdf # <% if 123 %> # <%= 'foobar' %> # <% end -%> #
``` ### With `lint-staged` Add the gem to your gemfile and the following to your `package.json`: ```js "lint-staged": { // … "*.html.erb": "bundle exec erb-format --write" } ``` ### As a TextMate plugin Create a command with the following settings: - **Scope selector:** `text.html.erb` - **Semantic class:** `callback.document.will-save` - **Input:** `document` → `text` - **Output:** `replace document` → `text` - **Caret placement:** `line-interpolation` ```bash #!/usr/bin/env bash cd "$TM_PROJECT_DIRECTORY" bundle exec erb-format --stdin-filename "$TM_FILEPATH" < /dev/stdin 2> /dev/stdout ``` ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org). ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/nebulab/erb-formatter. ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).