Sha256: 4cfec1e3e477dd6985ade0e5def7f70bc85eb703bca7ffc2f7e66f82d3bd94bf

Contents?: true

Size: 1.63 KB

Versions: 4

Compression:

Stored size: 1.63 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 remote_image(*args, **kwargs)
      points << RemoteImage.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

4 entries across 4 versions & 1 rubygems

Version Path
slide_hero-0.0.9 lib/slide_hero/slide.rb
slide_hero-0.0.8 lib/slide_hero/slide.rb
slide_hero-0.0.7 lib/slide_hero/slide.rb
slide_hero-0.0.6 lib/slide_hero/slide.rb