Now and again I've had a need to split an array of strings into chunks divided by certain boundary patterns. Kind of like
String.split, but for an array, and with multiple boundary patterns. The problem is something akin to splitting the different sections of a MIME multipart message.
In the latest instance, I wrestled with Ruby's
drop_while for a bit, before giving in and kludging together an ugly state machine solution, which I shipped. However, I wasn't happy with it, so I went back and built a better solution.
Enumerable.split method below will take an arbitrary number of patterns and split the enumerable object into chunks at each of the pattern boundaries.
An example is given below:
I'm not entirely happy with the name
split, but it was the best I could come up with at the time.