Refactor to config class

This commit is contained in:
Joseph Wynn 2016-09-27 23:49:18 +01:00
parent 6d569710b9
commit 4de5db835d
5 changed files with 29 additions and 25 deletions

View File

@ -5,7 +5,7 @@ require 'jekyll'
require 'rmagick'
require 'jekyll/responsive_image/version'
require 'jekyll/responsive_image/defaults'
require 'jekyll/responsive_image/config'
require 'jekyll/responsive_image/utils'
require 'jekyll/responsive_image/render_cache'
require 'jekyll/responsive_image/image_processor'

View File

@ -0,0 +1,26 @@
module Jekyll
module ResponsiveImage
class Config
DEFAULTS = {
'default_quality' => 85,
'base_path' => 'assets',
'output_path_format' => 'assets/resized/%{filename}-%{width}x%{height}.%{extension}',
'sizes' => [],
'extra_images' => []
}
def initialize(site)
@site = site
end
def to_h
config = DEFAULTS.merge(@site.config['responsive_image'])
.merge(site_source: @site.source, site_dest: @site.dest)
config['base_path'] = @site.in_source_dir(config['base_path'])
config
end
end
end
end

View File

@ -1,15 +0,0 @@
module Jekyll
module ResponsiveImage
@defaults = {
'default_quality' => 85,
'base_path' => 'assets',
'output_path_format' => 'assets/resized/%{filename}-%{width}x%{height}.%{extension}',
'sizes' => [],
'extra_images' => []
}.freeze
class << self
attr_reader :defaults
end
end
end

View File

@ -4,8 +4,7 @@ module Jekyll
include Jekyll::ResponsiveImage::Utils
def generate(site)
renderer = Renderer.new(site, {})
config = renderer.make_config
config = Config.new(site).to_h
config['extra_images'].each do |pathspec|
Dir.glob(site.in_source_dir(pathspec)) do |image_path|

View File

@ -8,18 +8,12 @@ module Jekyll
@attributes = attributes
end
def make_config
ResponsiveImage.defaults.dup
.merge(@site.config['responsive_image'])
.merge(:site_source => @site.source, :site_dest => @site.dest)
end
def render_responsive_image
cache_key = @attributes.to_s
result = @attributes['cache'] ? RenderCache.get(cache_key) : nil
if result.nil?
config = make_config
config = Config.new(@site).to_h
absolute_image_path = @site.in_source_dir(@attributes['path'].to_s)
image = ImageProcessor.process(absolute_image_path, @attributes['path'], config)