Skip to content

Instantly share code, notes, and snippets.

@twmulloy
Last active August 29, 2015 14:06
Show Gist options
  • Save twmulloy/23804260e0676f1d59b2 to your computer and use it in GitHub Desktop.
Save twmulloy/23804260e0676f1d59b2 to your computer and use it in GitHub Desktop.
group consecutive models
# elements = [{name: "story"}, {name: "social"}, {name: "article"}, {name: "article"}, {name: "story"}, {name: "story"}, {name: "article"}]
# group_consecutive_elements("article", elements)
def group_consecutive_elements(name, elements)
grouped_elements = []
elements.chunk{ |e| e.name == name }.each{ |name, ary| grouped_elements.push((name and ary.length > 1) ? [ary] : ary) }
grouped_elements.flatten!(1)
grouped_elements
end
# => [{name: "story"}, {name: "social"}, [{name: "article"}, {name: "article"}], {name: "story"}, {name: "story"}, {name: "article"}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment