Module: LazyImages::Rails::TagHelper

Defined in:
lib/lazy_images/rails/tag_helper.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



8
9
10
# File 'lib/lazy_images/rails/tag_helper.rb', line 8

def self.included(base)
  base.alias_method_chain :image_tag, :lazy_images
end

Instance Method Details

#image_tag_with_lazy_images(source, options = {}) ⇒ Object



12
13
14
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/lazy_images/rails/tag_helper.rb', line 12

def image_tag_with_lazy_images(source, options={})
  src = path_to_image(source)
  data = { rli_image_src: src, rli_placeholder: true }
  placeholder = LazyImages::Rails.placeholder.dup

  if options[:size]
    # N. B. extract_dimensions is a private method from
    # actionview/lib/action_view/helpers/asset_tag_helper.rb
    # beware of breakage
    options[:width], options[:height] = extract_dimensions(options.delete(:size))

    fragment = Nokogiri::XML::DocumentFragment.parse(placeholder)
    fragment.first_element_child.set_attribute('width', options[:width])
    fragment.first_element_child.set_attribute('height', options[:height])

    placeholder = fragment.to_s
  end

  (:div, data: data, class: 'rli-wrapper') do
    placeholder.html_safe + (:noscript) do
      options[:src] = src
      options[:class] = "#{options[:class]} rli-image"
      image_tag_without_lazy_images(source, options)
    end
  end
end