Module: Jekyll::FirstImageFilter
- Defined in:
- lib/jekyll/firstimage.rb
Instance Method Summary collapse
Instance Method Details
#extract_largest_image(srcset) ⇒ Object
9 10 11 12 13 14 |
# File 'lib/jekyll/firstimage.rb', line 9 def extract_largest_image(srcset) srcset .scan(/(\S+)\s+(\d+)w/) .map { |url, size| { url: url.strip, size: size.to_i } } .inject { |acc, cur| acc[:size] < cur[:size] ? cur : acc }[:url] end |
#first_image(content) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/jekyll/firstimage.rb', line 16 def first_image(content) return '' if content.nil? doc = Nokogiri::HTML.fragment(content.encode('UTF-8', :invalid => :replace, :undef => :replace, :replace => '')) image_elements = doc.css('img') return '' if image_elements.empty? image = image_elements.first.to_h src = '' if image['srcset'] then src = extract_largest_image(image['srcset']) elsif image['src'] then src = image['src'] end src end |