class Middleman::Imgix

Public Class Methods

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

  app.rewrite_inline_urls id: :imgix,
                          url_extensions: options.exts,
                          source_extensions: options.sources,
                          ignore: options.ignore,
                          rewrite_ignore: options.rewrite_ignore,
                          proc: method(:rewrite_url)

  require 'imgix'
end

Public Instance Methods

image_tag(path, params={}) click to toggle source
Calls superclass method
# File lib/middleman-imgix/extension.rb, line 46
def image_tag(path, params={})
  if imgix_options.imgix_js_version && imgix_image?(path)
    version = imgix_options.imgix_js_version.to_i
    params[:class] ||= 'imgix-fluid' if version == 2
    src = version == 2 ? 'data-src=' : 'ix-src='
    super(path, params).gsub('src=', src)
  else
    super
  end
end
imgix_image?(path) click to toggle source
# File lib/middleman-imgix/extension.rb, line 57
def imgix_image?(path)
  uri = URI.parse(path)
  uri.relative? &&
  imgix_options.exts.include?(::File.extname(uri.path)) &&
  imgix_options.sources.include?(::File.extname(current_resource.path)) &&
  imgix_options.ignore.none? { |r| ::Middleman::Util.should_ignore?(r, uri.path) } &&
  imgix_options.rewrite_ignore.none? { |i| ::Middleman::Util.path_match(i, uri.path) }
end
rewrite_url(asset_path, dirpath, _request_path) click to toggle source
# File lib/middleman-imgix/extension.rb, line 31
def rewrite_url(asset_path, dirpath, _request_path)
  uri = URI.parse(asset_path)

  if uri.relative?
    params = CGI::parse(uri.query.to_s)
    params = params.reverse_merge(options.default_params)
    path = client.path(uri.path)
    path.to_url(params)
  else
    asset_path
  end
end

Private Instance Methods

client() click to toggle source
# File lib/middleman-imgix/extension.rb, line 69
def client
  @client ||= Imgix::Client.new({
    host: options.host,
    secure_url_token: options.secure_url_token,
    use_https: options.use_https,
    shard_strategy: options.shard_strategy,
    include_library_param: options.include_library_param
  })
end