Skip to content

Instantly share code, notes, and snippets.

@chrisbnt
Created October 19, 2010 13:06
Show Gist options
  • Save chrisbnt/634156 to your computer and use it in GitHub Desktop.
Save chrisbnt/634156 to your computer and use it in GitHub Desktop.
Enumerable#split_where
module Enumerable
def split_where(&block)
inject([[]]) do |result, item|
if block.call(item)
result.push []
else
result.last.push item
end
result
end
end
end
# Example: split an array of lorem words by any word starting with s
words = %w(lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliqua ut enim ad minim veniam)
words.split_where{|word| word =~ /^s/} # => [["lorem", "ipsum", "dolor"], ["amet", "consectetur", "adipisicing", "elit"], ["do", "eiusmod", "tempor", "incididunt", "ut", "labore", "et", "dolore", "magna", "aliqua", "ut", "enim", "ad", "minim", "veniam"]]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment