Class: Middleman::Presentation::Transformers::GroupSlides

Inherits:
Object
  • Object
show all
Defined in:
lib/middleman-presentation-core/transformers/group_slides.rb

Overview

Group slides together

Instance Method Summary collapse

Constructor Details

#initialize(template:) ⇒ GroupSlides

Returns a new instance of GroupSlides.



13
14
15
# File 'lib/middleman-presentation-core/transformers/group_slides.rb', line 13

def initialize(template:)
  @template = template
end

Instance Method Details

#transform(slides) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/middleman-presentation-core/transformers/group_slides.rb', line 17

def transform(slides)
  groups = Set.new

  new_slides = slides.map do |slide|
    if slide.group && groups.none? { |g| g.name == slide.group }
      slide = group = SlideGroup.new name: slide.group, slides: slides.select { |s| s.group? slide.group }, template: template
      groups << group
    end

    slide
  end

  new_slides - groups.map(&:slides).flatten
end