Extract common image processing into a module

This commit is contained in:
Joseph Wynn 2014-12-07 22:17:19 +00:00
parent 4112992565
commit ddff9d7cc1
4 changed files with 30 additions and 12 deletions

View File

@ -7,6 +7,7 @@ require 'rmagick'
require 'jekyll/responsive_image/version'
require 'jekyll/responsive_image/defaults'
require 'jekyll/responsive_image/utils'
require 'jekyll/responsive_image/image_processor'
require 'jekyll/responsive_image/resize_handler'
require 'jekyll/responsive_image/tag'
require 'jekyll/responsive_image/block'

View File

@ -1,8 +1,6 @@
module Jekyll
class ResponsiveImage
class Block < Liquid::Block
include ResponsiveImage::Utils
def render(context)
config = ResponsiveImage.defaults.dup
config.merge!(context.registers[:site].config['responsive_image'])
@ -10,10 +8,9 @@ module Jekyll
attributes = YAML.load(super)
image_template = attributes['template'] || config['template']
resize_handler = ResizeHandler.new
img = Magick::Image::read(attributes['path']).first
attributes['original'] = image_hash(attributes['path'], img.columns, img.rows)
attributes['resized'] = resize_handler.resize_image(img, config)
image = ImageProcessor.process(attributes['path'], config)
attributes['original'] = image[:original]
attributes['resized'] = image[:resized]
partial = File.read(image_template)
template = Liquid::Template.parse(partial)

View File

@ -0,0 +1,23 @@
module Jekyll
class ResponsiveImage
class ImageProcessor
include ResponsiveImage::Utils
def process(image_path, config)
raise SyntaxError.new('Invalid image path specified') unless File.exists?(image_path)
resize_handler = ResizeHandler.new
img = Magick::Image::read(image_path).first
{
original: image_hash(image_path, img.columns, img.rows),
resized: resize_handler.resize_image(img, config),
}
end
def self.process(image_path, config)
self.new.process(image_path, config)
end
end
end
end

View File

@ -1,8 +1,6 @@
module Jekyll
class ResponsiveImage
class Tag < Liquid::Tag
include ResponsiveImage::Utils
def initialize(tag_name, markup, tokens)
super
@ -18,10 +16,9 @@ module Jekyll
config = ResponsiveImage.defaults.dup
config.merge!(context.registers[:site].config['responsive_image'])
resize_handler = ResizeHandler.new
img = Magick::Image::read(@attributes['path']).first
@attributes['original'] = image_hash(@attributes['path'], img.columns, img.rows)
@attributes['resized'] = resize_handler.resize_image(img, config)
image = ImageProcessor.process(@attributes['path'], config)
@attributes['original'] = image[:original]
@attributes['resized'] = image[:resized]
image_template = @attributes['template'] || config['template']