I recently whipped up a command-line utility / Ruby gem called ‘whiteout’ which removes trailing whitespace from files. As you would imagine, it’s a simple piece of code, but it’s a bit more convenient than the shell script I was using. It also gave me a chance to learn how to cut a gem and how to structure a command-line utility in Ruby.
You can use whiteout to remove trailing whitespace from a single file, a directory of files (recursively), or from standard input:
1 2 3
Convenient, right? And you can install it with a simple
whiteout (as 230 others already have!).
One could make a perfectly reasonable case that Ruby is too slow of a language for this type of utility, but I tend to think that in this age of spare cycles the most important aspect of a utility is defining its interface and establishing its presence. The underlying code can be swapped out later.
Let’s call a spade a spade: checking in code with janky whitespace is
shameful. But fighting Xcode’s whitespace habits is
time-consuming. Instead of bothering, drop this in your
Now, when you run your pre-commit diff and find messy whitespace, just
git whiteout to remove trailing whitespace from every file
you’ve modified. Go, go, programmer laziness.