Fuzz—Use Fuzzy Matchers on Ruby Objects
Published 18 Mar 2018. Tags: beards, ruby, unix.
Quick summary: I wrote a small Ruby library called fuzz.
Lately I’ve been writing a handful of interactive Ruby scripts that require the
user to choose among a collection of objects (
stuff like that).
There are a lot of great interactive tools for performing fuzzy matching on a
list of strings (I mostly use
dmenu is really popular,
too). Since these are Unix tools, though, you gotta shell out to them with a
list of strings, not real Ruby objects.
While it’s not all that difficult to translate between strings (which the user sees and selects) and objects (which your script uses), it’s a hassle to manually manage that translation in every script. So I extracted a little gem called fuzz to handle it.
Fuzz abstracts over
dmenu, along with the CLI tools
selecta. It’s also easy to add a new custom selector. I
don’t have a Mac handy these days, so I’m not sure, but it would also be fairly
simple to integrate with Alfred or Quicksilver, for example.
If you wanna see what this looks like in practice, check out some of the examples.
Anyway, if you’re in the (admittedly small) set of folks that use Ruby to write interactive scripts with fuzzy matchers who also favor an especially OO style, check out fuzz! It might be right up your alley.