Sha256: ad69350df9f6f0d0bfcc515b03151af5830b8b92141c466892371b0046c0183a

Contents?: true

Size: 1.23 KB

Versions: 12

Compression:

Stored size: 1.23 KB

Contents

# Automatic Image Sizes extension
class Middleman::Extensions::AutomaticImageSizes < ::Middleman::Extension

  def initialize(app, options_hash={}, &block)
    super

    # Include 3rd-party fastimage library
    require "vendored-middleman-deps/fastimage"
  end

  helpers do
    # Override default image_tag helper to automatically calculate and include
    # image dimensions.
    #
    # @param [String] path
    # @param [Hash] params
    # @return [String]
    def image_tag(path, params={})
      if !params.has_key?(:width) && !params.has_key?(:height) && !path.include?("://")
        params[:alt] ||= ""

        real_path = path
        real_path = File.join(images_dir, real_path) unless real_path.start_with?('/')
        full_path = File.join(source_dir, real_path)

        if File.exists?(full_path)
          begin
            width, height = ::FastImage.size(full_path, :raise_on_failure => true)
            params[:width]  = width
            params[:height] = height
          rescue FastImage::UnknownImageType
            # No message, it's just not supported
          rescue
            warn "Couldn't determine dimensions for image #{path}: #{$!.message}"
          end
        end
      end

      super(path, params)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
middleman-core-3.2.1 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.2.0 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.6 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.5 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.4 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.3 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.2 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.1 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.0 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.0.rc.4 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.0.rc.3 lib/middleman-more/extensions/automatic_image_sizes.rb
middleman-core-3.1.0.rc.2 lib/middleman-more/extensions/automatic_image_sizes.rb