Returns Present or Blank where useful: * collect (same behavior as fmap) * each (same behavior as present) * find_all (convert to Blank if the block doesn't match) * grep (convert to Blank if the pattern doesn't match) * map (same behavior as fmap) * reject (convert to Blank if the block matches) * select (convert to Blank if the block doesn't match) Allows chaining Enumerable methods to get a wrapped value as well as combining Enumerable methods with wrapped methods like `fmap`. Producing an Array for these methods is not useful, because it's unlikely that you'll want zero or more items (Array) in situations where you started with either zero or one (Blank/Present).
Mike Burns originally made this in 2011. It sat around for three years, working perfectly fine, until Joe Ferris took it up. Now it is an experimental thoughtbot tool, perhaps to someday go on to be a legend in suspenders. Future work will happen at thoughtbot, by Mike and certainly by others.