https://github.com/rubocop/rubocop-ast
RuboCop's AST extensions and NodePattern functionality
https://github.com/rubocop/rubocop-ast
ast hacktoberfest rubocop ruby
Last synced: about 2 months ago
JSON representation
RuboCop's AST extensions and NodePattern functionality
- Host: GitHub
- URL: https://github.com/rubocop/rubocop-ast
- Owner: rubocop
- License: mit
- Created: 2020-05-12T05:13:43.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2025-04-03T05:14:43.000Z (3 months ago)
- Last Synced: 2025-04-09T21:02:18.507Z (3 months ago)
- Topics: ast, hacktoberfest, rubocop, ruby
- Language: Ruby
- Homepage: https://docs.rubocop.org/rubocop-ast
- Size: 1.33 MB
- Stars: 118
- Watchers: 12
- Forks: 56
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# RuboCop AST
[](https://badge.fury.io/rb/rubocop-ast)
[](https://github.com/rubocop/rubocop-ast/actions/workflows/rubocop.yml)
[](https://codeclimate.com/github/rubocop/rubocop-ast/test_coverage)
[](https://codeclimate.com/github/rubocop/rubocop-ast/maintainability)Contains the classes needed by [RuboCop](https://github.com/rubocop/rubocop) to deal with Ruby's AST, in particular:
* `RuboCop::AST::Node` ([doc](docs/modules/ROOT/pages/node_types.adoc))
* `RuboCop::AST::NodePattern` ([doc](docs/modules/ROOT/pages/node_pattern.adoc))This gem may be used independently from the main RuboCop gem. It was extracted from RuboCop in version 0.84 and its only
dependency is the [parser](https://github.com/whitequark/parser) gem, which `rubocop-ast` extends.## Installation
Just install the `rubocop-ast` gem
```sh
gem install rubocop-ast
```or if you use bundler put this in your `Gemfile`
```ruby
gem 'rubocop-ast'
```## Usage
Refer to the documentation of [`RuboCop::AST::Node`](docs/modules/ROOT/pages/node_types.adoc) and [`RuboCop::AST::NodePattern`](docs/modules/ROOT/pages/node_pattern.adoc)
See the [docs site](https://docs.rubocop.org/rubocop-ast) for more details.
### Parser compatibility switches
This gem, by default, uses most [legacy AST output from parser](https://github.com/whitequark/parser/#usage), except for the following which are set to `true`:
* `emit_forward_arg`
* `emit_match_pattern`The main `RuboCop` gem uses these defaults (and is currently only compatible with these), but this gem can be used separately from `RuboCop` and is meant to be compatible with all settings. For example, to have `-> { ... }` emitted
as `LambdaNode` instead of `SendNode`:```ruby
RuboCop::AST::Builder.emit_lambda = true
```## Contributing
Checkout the [contribution guidelines](CONTRIBUTING.md).
## License
`rubocop-ast` is MIT licensed. [See the accompanying file](LICENSE.txt) for
the full text.