Synvert
https://synvert.net/
TypeScript, JavaScript, RubyのソースコードをDSLに従って置換するツール
https://github.com/synvert-hq/synvert-ruby
example
code:ruby
Synvert::Rewriter.new 'rails', 'convert_head_response' do
if_gem 'actionpack', '>= 5.0'
within_file Synvert::RAILS_CONTROLLER_FILES do
# render nothing: true
# =>
# head :ok
find_node '.sendreceiver=nilmessage=renderarguments.size=1
[arguments.0=.hashnothing_value=truestatus_value=nil]' do
replace :message, with: 'head'
replace :arguments, with: ':ok'
end
# render nothing: true, status: :created
# =>
# head :created
find_node '.sendreceiver=nilmessage=renderarguments.size=1
[arguments.0=.hashnothing_value=truestatus_value!=nil]' do
replace_with '{{message}} {{arguments.0.status_source}}'
end
end
end