Class: SrcsetImages::Extension

Inherits:
Middleman::Extension
  • Object
show all
Defined in:
lib/middleman-srcset_images/extension.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options_hash = {}, &block) ⇒ Extension

Returns a new instance of Extension.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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

Instance Attribute Details

#image_versionsObject (readonly)

Returns the value of attribute image_versions.



13
14
15
# File 'lib/middleman-srcset_images/extension.rb', line 13

def image_versions
  @image_versions
end

#scaled_imagesObject (readonly)

Returns the value of attribute scaled_images.



13
14
15
# File 'lib/middleman-srcset_images/extension.rb', line 13

def scaled_images
  @scaled_images
end

#sizesObject (readonly)

Returns the value of attribute sizes.



13
14
15
# File 'lib/middleman-srcset_images/extension.rb', line 13

def sizes
  @sizes
end

Instance Method Details

#after_configurationObject



39
40
41
# File 'lib/middleman-srcset_images/extension.rb', line 39

def after_configuration
  FileUtils.mkdir_p options.cache_dir
end

#manipulate_resource_list(resources) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 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