block by zachmargolis 729b4e7b6d46fd835f157043898f19d8

Case-sensitive replacement script

replace.rb

Handles a bunch of combinations of case/underscore name replacements

type from to
upper camel case FromName ToName
lower camel case fromName toName
lower kebab case from-name to-name
upper kebab case Case From-Name To-Name
snake case from_name to_name

Requirements

Ruby, activesupport installed

Usage

# preview changes (uses colordiff if you have it!!)
./replace.rb --from OldName --to NewName --show-diff FILE1 FILE2...

# write changes
./replace.rb --from OldName --to NewName --write  FILE1 FILE2...

Running tests

Install the dependencies, then run the specs:

bundle install

bundle exec ruby replace_spec.rb

(GitHub gists don’t allow directories so this is what we do instead)

Gemfile

Gemfile.lock

replace.rb

replace_spec.rb