class RubySlides::Presentation

Attributes

slides[R]

Public Class Methods

new() click to toggle source
# File lib/ruby_slides/presentation.rb, line 11
def initialize
  @slides = []
end

Public Instance Methods

chart_slide(title, series = [{}]) click to toggle source
# File lib/ruby_slides/presentation.rb, line 53
def chart_slide(title, series = [{}])
  @slides << RubySlides::Slide::Chart.new(presentation: self,
                                          title: title,
                                          series: series)
end
charts() click to toggle source
# File lib/ruby_slides/presentation.rb, line 99
def charts
  slides.map {|slide|
    slide.class == RubySlides::Slide::Chart
  }.count
end
file_types() click to toggle source
# File lib/ruby_slides/presentation.rb, line 93
def file_types
  slides.map {|slide|
    slide.file_type if slide.respond_to? :file_type
  }.compact.uniq
end
introduction_slide(title, subtitle) click to toggle source
# File lib/ruby_slides/presentation.rb, line 15
def introduction_slide(title, subtitle)
  @slides << RubySlides::Slide::Introduction.new(title: title,
                                                 subtitle: subtitle)
end
pictorial_slide(title, image_path, coords = {}) click to toggle source
# File lib/ruby_slides/presentation.rb, line 26
def pictorial_slide(title, image_path, coords = {})
  @slides << RubySlides::Slide::Pictorial.new(presentation: self,
                                              title: title,
                                              image_path: image_path,
                                              coords: coords)
end
picture_description_slide(title, image_path, content = []) click to toggle source
# File lib/ruby_slides/presentation.rb, line 40
def picture_description_slide(title, image_path, content = [])
  @slides << RubySlides::Slide::DescriptionPic.new(presentation: self,
                                                   title: title,
                                                   image_path: image_path,
                                                   content: content)
end
save(path) click to toggle source
# File lib/ruby_slides/presentation.rb, line 59
def save(path)
  Dir.mktmpdir do |dir|
    extract_path = "#{dir}/extract_#{Time.now.strftime("%Y-%m-%d-%H%M%S")}"

    # Copy template to temp path
    FileUtils.copy_entry(TEMPLATE_PATH, extract_path)

    # Remove keep files
    Dir.glob("#{extract_path}/**/.keep").each do |keep_file|
      FileUtils.rm_rf(keep_file)
    end

    # Render/save generic stuff
    render_view('content_type.xml.erb',
                "#{extract_path}/[Content_Types].xml")
    render_view('presentation.xml.rel.erb',
                "#{extract_path}/ppt/_rels/presentation.xml.rels")
    render_view('presentation.xml.erb',
                "#{extract_path}/ppt/presentation.xml")
    render_view('app.xml.erb',
                "#{extract_path}/docProps/app.xml")

    # Save slides
    slides.each_with_index do |slide, index|
      slide.save(extract_path, index + 1)
    end

    # Create .pptx file
    File.delete(path) if File.exist?(path)
    RubySlides.compress_pptx(extract_path, path)
  end
  path
end
table_slide(title, content = []) click to toggle source
# File lib/ruby_slides/presentation.rb, line 47
def table_slide(title, content = [])
  @slides << RubySlides::Slide::Table.new(presentation: self,
                                          title: title,
                                          content: content)
end
text_picture_slide(title, image_path, content = []) click to toggle source
# File lib/ruby_slides/presentation.rb, line 33
def text_picture_slide(title, image_path, content = [])
  @slides << RubySlides::Slide::TextPicSplit.new(presentation: self,
                                                 title: title,
                                                 image_path: image_path,
                                                 content: content)
end
textual_slide(title, content = []) click to toggle source
# File lib/ruby_slides/presentation.rb, line 20
def textual_slide(title, content = [])
  @slides << RubySlides::Slide::Textual.new(presentation: self,
                                            title: title,
                                            content: content)
end