diff --git a/lib/jekyll/responsive_image.rb b/lib/jekyll/responsive_image.rb index 5b6d3ec..5571de1 100644 --- a/lib/jekyll/responsive_image.rb +++ b/lib/jekyll/responsive_image.rb @@ -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' diff --git a/lib/jekyll/responsive_image/block.rb b/lib/jekyll/responsive_image/block.rb index d52d73d..f629bc2 100644 --- a/lib/jekyll/responsive_image/block.rb +++ b/lib/jekyll/responsive_image/block.rb @@ -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) diff --git a/lib/jekyll/responsive_image/image_processor.rb b/lib/jekyll/responsive_image/image_processor.rb new file mode 100644 index 0000000..184fb8f --- /dev/null +++ b/lib/jekyll/responsive_image/image_processor.rb @@ -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 diff --git a/lib/jekyll/responsive_image/tag.rb b/lib/jekyll/responsive_image/tag.rb index 4d6815e..ac8bade 100644 --- a/lib/jekyll/responsive_image/tag.rb +++ b/lib/jekyll/responsive_image/tag.rb @@ -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']