Files
theread.me/_plugins/gallery_items.rb
T

25 lines
957 B
Ruby

require 'nokogiri'
module GalleryItems
# Uploaded batches share one source document, but each photo is a gallery item.
# Keeping this at render time also fixes batches that have already been published.
def gallery_items(content)
fragment = Nokogiri::HTML::DocumentFragment.parse(content)
images = fragment.css('img')
return [content] unless images.length > 1 && images.all? { |image|
image['src'].to_s.start_with?('/img/arts/uploads/') && image.parent.name == 'p'
}
captions = fragment.css('.image-details').map(&:to_html).join
images.each { |image| image.parent.remove }
fragment.css('.image-details').each(&:remove)
# Preserve the batch's existing anchor exactly once, before the first photo.
prefix = fragment.to_html
images.each_with_index.map do |image, index|
"#{index.zero? ? prefix : ''}<p>#{image.to_html}</p>#{captions}"
end
end
end
Liquid::Template.register_filter(GalleryItems)