SyntaxTree::ERB
Syntax Tree support for ERB.
Currently handles
- ERB
- Tags with and without output
- Tags inside strings
if
, elsif
, else
and unless
statements- blocks
- comments
- Formatting of the ruby-code is done by
syntax_tree
- HTML
- Tags with attributes
- Tags with and without closing tags
- Comments
- Vue
- Attributes, events and slots using
:
, @
and #
respectively
- Text output
Unhandled cases
Installation
Add this line to your application's Gemfile:
gem "w_syntax_tree-erb", "~> 0.11", require: false
I added the w_
prefix to avoid conflicts if there will ever be an official syntax_tree-erb
gem.
Usage
Parsing
bundle exec stree ast --plugins=erb "./**/*.html.erb"
Format
bundle exec stree write --plugins=erb "./**/*.html.erb"
In code
require "syntax_tree/erb"
pp SyntaxTree::ERB.parse(source)
puts SyntaxTree::ERB.format(source)
List all parsing errors
In order to get a list of all parsing errors (which needs to be fixed before the formatting works), this script can be used:
#!/bin/ruby
require "syntax_tree/erb"
failures = []
Dir
.glob("./app/**/*.html.erb")
.each do |file|
puts("Processing #{file}")
begin
source = SyntaxTree::ERB.read(file)
SyntaxTree::ERB.parse(source)
SyntaxTree::ERB.format(source)
rescue => exception
failures << { file: file, message: exception.message }
end
end
puts failures
Development
Install husky
:
npm i -g husky
Setup linting:
npm run prepare
Install dependencies and run tests:
bundle
bundle exec rake
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/davidwessman/syntax_tree-erb.
License
The gem is available as open source under the terms of the MIT License.