class Middleman::DragonflyThumbnailer::Extension

Public Class Methods

new(app, options_hash = {}, &block) click to toggle source
Calls superclass method
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 7
def initialize(app, options_hash = {}, &block)
  super
  configure_dragonfly
end

Public Instance Methods

absolute_build_path(image) click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 22
def absolute_build_path(image)
  File.join(app.config[:build_dir], app.config[:images_dir],
            build_path(image))
end
absolute_source_path(path) click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 12
def absolute_source_path(path)
  File.join(app.config[:source], app.config[:images_dir], path)
end
build_path(image) click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 16
def build_path(image)
  dir = File.dirname(image.meta['original_path'])
  subdir = image.meta['geometry'].gsub(/[^a-zA-Z0-9\-]/, '')
  File.join(dir, subdir, image.name)
end
extract_image_options(options) click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 44
def extract_image_options(options)
  image_options = {
    'format' => options.delete(:format),
    'frame'  => options.delete(:frame)
  }.delete_if { |_k, v| v.nil? }

  return options, image_options
end
persist_file(image) click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 53
def persist_file(image)
  path = absolute_build_path(image)
  image.to_file(path).close
end
thumb(path, geometry, image_options = {}) click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 27
def thumb(path, geometry, image_options = {})
  absolute_path = absolute_source_path path
  return unless File.exist?(absolute_path)

  image = ::Dragonfly.app.fetch_file(absolute_path)
  image.meta['original_path'] = path
  image.meta['geometry'] = geometry
  image = image.thumb(geometry, image_options)

  if app.build?
    persist_file(image)
    build_path(image)
  else
    image.b64_data
  end
end
thumb_path(path, geometry, options = {}) click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 68
def thumb_path(path, geometry, options = {})
  extension = extensions[:dragonfly_thumbnailer]

  _options, image_options = extension.extract_image_options(options)
  url = extension.thumb(path, geometry, image_options)

  image_path(url) if url
end
thumb_tag(path, geometry, options = {}) click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 59
def thumb_tag(path, geometry, options = {})
  extension = extensions[:dragonfly_thumbnailer]

  options, image_options = extension.extract_image_options(options)
  url = extension.thumb(path, geometry, image_options)

  image_tag(url, options) if url
end

Private Instance Methods

configure_dragonfly() click to toggle source
# File lib/middleman/dragonfly_thumbnailer/extension.rb, line 80
def configure_dragonfly
  ::Dragonfly.app.configure do
    datastore :memory
    plugin :imagemagick
  end
end