Sha256: 11d3fecd7e955a905753762bcc5230db8ba5c3583f2a28bf3e97f13c13ba3db2

Contents?: true

Size: 1.53 KB

Versions: 1

Compression:

Stored size: 1.53 KB

Contents

module SlideHero
  class Slide
    attr_reader :headline, :headline_size, :transition, :background_color
    def initialize(headline=nil, headline_size: :medium, transition: :default, background_color: nil, &point_block)
      @headline = headline
      @headline_size = headline_size
      @transition = transition

      @background_color = background_color
      instance_eval(&point_block) if block_given?
    end

    def compile
      Tilt::ERBTemplate.new(File.join(SlideHero.template_path, 
                                      'lib/slide_hero/views/slide.html.erb')).
                                      render(self)
    end

    def point(text, animation: nil)
      points << Point.new(text, animation: animation).compile
    end

    def list(style=:unordered, &block)
      points << List.new(style, &block).compile
    end

    def code(*args, &code)
      points << Code.new(*args, &code).compile
    end

    def points
      @points ||= []
    end

    def note(text)
      points << Note.new(text).compile
    end

    def image(*args, **kwargs)
      points << Image.new(*args, **kwargs).compile
    end

    def media(*args, **kwargs)
      points << Media.new(*args, **kwargs).compile
    end

    private
    def size_to_markup
      { 
        large: :h1,
        medium: :h2,
        small: :h3
      }[headline_size]
    end

    def data_attributes
      "data-transition=\"#{transition}\"".tap do |attr|
        if background_color
          attr << " data-background=\"#{background_color}\""
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slide_hero-0.0.5 lib/slide_hero/slide.rb