Extract common image processing into a module
This commit is contained in:
parent
4112992565
commit
ddff9d7cc1
|
@ -7,6 +7,7 @@ require 'rmagick'
|
||||||
require 'jekyll/responsive_image/version'
|
require 'jekyll/responsive_image/version'
|
||||||
require 'jekyll/responsive_image/defaults'
|
require 'jekyll/responsive_image/defaults'
|
||||||
require 'jekyll/responsive_image/utils'
|
require 'jekyll/responsive_image/utils'
|
||||||
|
require 'jekyll/responsive_image/image_processor'
|
||||||
require 'jekyll/responsive_image/resize_handler'
|
require 'jekyll/responsive_image/resize_handler'
|
||||||
require 'jekyll/responsive_image/tag'
|
require 'jekyll/responsive_image/tag'
|
||||||
require 'jekyll/responsive_image/block'
|
require 'jekyll/responsive_image/block'
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
module Jekyll
|
module Jekyll
|
||||||
class ResponsiveImage
|
class ResponsiveImage
|
||||||
class Block < Liquid::Block
|
class Block < Liquid::Block
|
||||||
include ResponsiveImage::Utils
|
|
||||||
|
|
||||||
def render(context)
|
def render(context)
|
||||||
config = ResponsiveImage.defaults.dup
|
config = ResponsiveImage.defaults.dup
|
||||||
config.merge!(context.registers[:site].config['responsive_image'])
|
config.merge!(context.registers[:site].config['responsive_image'])
|
||||||
|
@ -10,10 +8,9 @@ module Jekyll
|
||||||
attributes = YAML.load(super)
|
attributes = YAML.load(super)
|
||||||
image_template = attributes['template'] || config['template']
|
image_template = attributes['template'] || config['template']
|
||||||
|
|
||||||
resize_handler = ResizeHandler.new
|
image = ImageProcessor.process(attributes['path'], config)
|
||||||
img = Magick::Image::read(attributes['path']).first
|
attributes['original'] = image[:original]
|
||||||
attributes['original'] = image_hash(attributes['path'], img.columns, img.rows)
|
attributes['resized'] = image[:resized]
|
||||||
attributes['resized'] = resize_handler.resize_image(img, config)
|
|
||||||
|
|
||||||
partial = File.read(image_template)
|
partial = File.read(image_template)
|
||||||
template = Liquid::Template.parse(partial)
|
template = Liquid::Template.parse(partial)
|
||||||
|
|
|
@ -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
|
|
@ -1,8 +1,6 @@
|
||||||
module Jekyll
|
module Jekyll
|
||||||
class ResponsiveImage
|
class ResponsiveImage
|
||||||
class Tag < Liquid::Tag
|
class Tag < Liquid::Tag
|
||||||
include ResponsiveImage::Utils
|
|
||||||
|
|
||||||
def initialize(tag_name, markup, tokens)
|
def initialize(tag_name, markup, tokens)
|
||||||
super
|
super
|
||||||
|
|
||||||
|
@ -18,10 +16,9 @@ module Jekyll
|
||||||
config = ResponsiveImage.defaults.dup
|
config = ResponsiveImage.defaults.dup
|
||||||
config.merge!(context.registers[:site].config['responsive_image'])
|
config.merge!(context.registers[:site].config['responsive_image'])
|
||||||
|
|
||||||
resize_handler = ResizeHandler.new
|
image = ImageProcessor.process(@attributes['path'], config)
|
||||||
img = Magick::Image::read(@attributes['path']).first
|
@attributes['original'] = image[:original]
|
||||||
@attributes['original'] = image_hash(@attributes['path'], img.columns, img.rows)
|
@attributes['resized'] = image[:resized]
|
||||||
@attributes['resized'] = resize_handler.resize_image(img, config)
|
|
||||||
|
|
||||||
image_template = @attributes['template'] || config['template']
|
image_template = @attributes['template'] || config['template']
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue