Ruby rubocop-ast

From wikinotes

A DSL for ruby parser that simplifies matching AST nodes.

Documentation

All AST nodes https://github.com/rubocop/rubocop-ast/blob/master/docs/modules/ROOT/pages/node_types.adoc
Node Patterns (like AST selectors) https://docs.rubocop.org/rubocop-ast/node_pattern.html
official docs https://docs.rubocop.org/rubocop-ast/
test patterns https://nodepattern.herokuapp.com/

Usage

you can show the ast for a file

ruby-parse --legacy -e 'foo(1)'  # print the AST
(send nil :foo (int 1))

there's a lisp-like DSL for matching nodes

_   // any one thing
... // any number of items
(const _ _)                # any const
(casgn <(const _ _) ...>)  # any const being assigned via 'casgn'