Class: Middleman::Presentation::Transformers::RemoveDuplicateSlides

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

Overview

Remove duplicates slides from list

Instance Method Summary collapse

Constructor Details

#initialize(additional_slides: [], raise_error: false) ⇒ RemoveDuplicateSlides

Returns a new instance of RemoveDuplicateSlides.



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

def initialize(additional_slides: [], raise_error: false)
  @additional_slides = additional_slides
  @raise_error       = raise_error
end

Instance Method Details

#transform(slides) ⇒ Object



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

def transform(slides)
  temp_slides = (Array(slides) + Array(additional_slides)).uniq

  duplicate_slides = temp_slides.each_with_object([]) do |e, a|
    a << slides.select { |s| e.similar?(s) && !e.eql?(s) }
  end.flatten

  fail ArgumentError, Middleman::Presentation.t('errors.duplicate_slide_names', slide_names: duplicate_slides.map(&:file_name).to_list) if !duplicate_slides.blank? && raise_error

  slides - duplicate_slides
end