Sha256: 183ead8576926172b32b3132d485e132fbbd7dcd7d0133079fb919166303bb92
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
# encoding: utf-8 require "ace/filters" require "nokogiri" # <thumbnail src="assets/img/motivation-sheet.jpg" /> # <thumbnail src="assets/img/motivation-sheet.jpg" size="550" /> # <thumbnail src="assets/img/motivation-sheet.jpg" size="550x20" /> # TODO: # class Post < Ace::Item # before Ace::ImageThumbnailerFilter, default_thumb_size: 550 # end module Ace class ImageThumbnailerFilter < Filter def thumb_path(file_name) @file_name ||= file_name @thumb_path ||= file_name.gsub(/\.([^\.]*)$/, '_thumb.\1') end def thumb_server_path @thumb_path.sub("content", "") end def original_image_server_path @file_name.sub("content", "") end def thumbnail_nodeset(file_name, doc) link = Nokogiri::XML::Node.new("a", doc) image = Nokogiri::XML::Node.new("img", doc) link.set_attribute("href", original_image_server_path) image.set_attribute("src", thumb_server_path) image.parent = link return link end def call(item, content) puts "~ [THUMB] #{item.original_path}" doc = Nokogiri::HTML(content) doc.css("thumbnail").each do |thumb| original_file = "content/#{thumb[:src]}" generate_thumbnail(original_file, thumb[:size] || 550) thumb.replace(thumbnail_nodeset(original_file, doc)) end doc.to_s end private def generate_thumbnail(file_name, size) unless File.exist?(thumb_path(file_name)) command = "convert #{file_name} -resize #{size} #{thumb_path(file_name)}" warn "~ $ #{command}" system(command) raise "Error when converting image '#{file_name}'" if $?.to_i != 0 else warn "~ File #{thumb_path(file_name)} already exists." end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ace-0.4.2 | lib/ace/filters/image_thumbnailer.rb |