module Jekyll::FirstImageFilter
Public Instance Methods
extract_largest_image(srcset)
click to toggle source
gist.github.com/nhoizey/224a1c9dfb396a4c7b41ea114f175712#gistcomment-2637934
# 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)
click to toggle source
# 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