Sha256: 2952bfa505ece3e4a5814b08807a0d7248626d709b434eb6c2269c34317fe681

Contents?: true

Size: 935 Bytes

Versions: 1

Compression:

Stored size: 935 Bytes

Contents

module SlideHero
  require 'erb'
  require 'tilt'
  class Presentation
    attr_reader :title
    def initialize(title, &block)
      @title = title
      @slide_defaults = {}
      instance_eval(&block)
    end

    def compile
      gem_path = Gem.loaded_specs['slide_hero'].full_gem_path
      Tilt::ERBTemplate.new(File.join(gem_path, 
                                      'lib/slide_hero/views/layout.html.erb')).
                                      render(self) do 
        collected_slides
      end
    end

    def defaults(args)
      @slide_defaults = args
    end

    def slide(title, **kwargs, &slide_block)
      slides << Slide.new(title, @slide_defaults.merge(**kwargs), &slide_block).compile
    end

    def grouped_slides(&block)
      slides << GroupedSlides.new(@slide_defaults, &block).compile
    end

    def collected_slides
      slides.join
    end

    def slides
      @slides ||= []
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slide_hero-0.0.3 lib/slide_hero/presentation.rb