Ruby ffast: Difference between revisions
From wikinotes
(→Usage) |
(→Usage) |
||
Line 22: | Line 22: | ||
fast --ast some/file.rb # show ast | fast --ast some/file.rb # show ast | ||
fast '(const _ _)' some/file.rb # find matching in some/file.rb | fast '(const _ _)' some/file.rb # find matching in some/file.rb | ||
</source> | |||
<source lang="bash"> | |||
# find all method-calls for 'say_hello()' parallelized in a rails codebase | |||
find app bin lib components -type f -name '*.rb' -not -path '*/test/*' -print0 \ | |||
| xargs -0 -n 500 -P 4 fast '(send {nil _} :say_hello' | |||
</source> | </source> | ||
Revision as of 16:18, 1 February 2024
A library and cli tool for searching/matching nodes within ruby's AST.
Documentation
github https://github.com/jonatas/fast
Install
gem install ffast
Usage
fast --ast some/file.rb # show ast fast '(const _ _)' some/file.rb # find matching in some/file.rb# find all method-calls for 'say_hello()' parallelized in a rails codebase find app bin lib components -type f -name '*.rb' -not -path '*/test/*' -print0 \ | xargs -0 -n 500 -P 4 fast '(send {nil _} :say_hello'sample patterns
# an object 'Foo' initialized with the keyword-argument 'two' '(send (const {nil _} :Foo) :new (hash ... (pair (sym :two)) ))' Foo.new(one: "abc", two: "def", three: "ghi") # assignment of 'two' in a specific method call fast --ast '(send {nil _} :sayhi {nil ...} (str "two") {nil ...})' foo.rb sayhi("one", "two", "three")