class SrcsetImages::Extension

Attributes

image_versions[R]
scaled_images[R]
sizes[R]

Public Class Methods

new(app, options_hash={}, &block) click to toggle source
Calls superclass method
# File lib/middleman-srcset_images/extension.rb, line 15
def initialize(app, options_hash={}, &block)
  # Call super to build options from the options_hash
  super

  # Require libraries only when activated
  require 'middleman-srcset_images/img'
  require 'middleman-srcset_images/version_resource'
  require 'middleman-srcset_images/html_converter'
  require 'middleman-srcset_images/srcset_config'

  # set up your extension
  # puts options.my_option

  @config = app.data['srcset_images'] || {}
  @image_versions = @config['image_versions'] || {}
  @images = @config['images']
  @sizes = @config['sizes'] || {}
  @scaled_images = Hash.new{|h,k| h[k] = []}

  puts "Image versions: #{image_versions.keys.join ", "}"

  HtmlConverter.install
end

Public Instance Methods

after_configuration() click to toggle source
# File lib/middleman-srcset_images/extension.rb, line 39
def after_configuration
  FileUtils.mkdir_p options.cache_dir
end
manipulate_resource_list(resources) click to toggle source
# File lib/middleman-srcset_images/extension.rb, line 43
def manipulate_resource_list(resources)
  basedir = File.absolute_path(File.join(app.root, app.config[:source]))
  Dir.chdir(basedir) do
    versions = []
    cache_dir = File.absolute_path(options.cache_dir, app.root)

    configurations = image_versions.map do |name, config|
      SrcsetImages::SrcsetConfig.new name, config, cache_dir: cache_dir
    end

    images = Dir.glob(@images).map{|f| SrcsetImages::Img.new(f)}

    # loop over configurations for landscape, portrait, teasers
    configurations.each do |config|

      #loop over original image files
      images.each do |img|

        # loop over different image sizes of configuration
        config.image_versions(img).each do |v|
          v.app = app
          v.prepare_image
          @scaled_images[img.path] << v
          versions << VersionResource.new(app.sitemap, v)
        end

      end
    end
    versions.flatten!
    versions.compact!
    puts "added #{versions.size} image versions"
    resources + versions
  end
end