From 4de5db835dd2cde58dc9bfbcabc869bae66febb0 Mon Sep 17 00:00:00 2001 From: Joseph Wynn Date: Tue, 27 Sep 2016 23:49:18 +0100 Subject: [PATCH] Refactor to config class --- lib/jekyll/responsive_image.rb | 2 +- lib/jekyll/responsive_image/config.rb | 26 +++++++++++++++++++ lib/jekyll/responsive_image/defaults.rb | 15 ----------- .../responsive_image/extra_image_generator.rb | 3 +-- lib/jekyll/responsive_image/renderer.rb | 8 +----- 5 files changed, 29 insertions(+), 25 deletions(-) create mode 100644 lib/jekyll/responsive_image/config.rb delete mode 100644 lib/jekyll/responsive_image/defaults.rb diff --git a/lib/jekyll/responsive_image.rb b/lib/jekyll/responsive_image.rb index 0224bcf..1913060 100644 --- a/lib/jekyll/responsive_image.rb +++ b/lib/jekyll/responsive_image.rb @@ -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' diff --git a/lib/jekyll/responsive_image/config.rb b/lib/jekyll/responsive_image/config.rb new file mode 100644 index 0000000..d11a24c --- /dev/null +++ b/lib/jekyll/responsive_image/config.rb @@ -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 diff --git a/lib/jekyll/responsive_image/defaults.rb b/lib/jekyll/responsive_image/defaults.rb deleted file mode 100644 index 6665cda..0000000 --- a/lib/jekyll/responsive_image/defaults.rb +++ /dev/null @@ -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 diff --git a/lib/jekyll/responsive_image/extra_image_generator.rb b/lib/jekyll/responsive_image/extra_image_generator.rb index 9a15703..80ab4e7 100644 --- a/lib/jekyll/responsive_image/extra_image_generator.rb +++ b/lib/jekyll/responsive_image/extra_image_generator.rb @@ -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| diff --git a/lib/jekyll/responsive_image/renderer.rb b/lib/jekyll/responsive_image/renderer.rb index a03201c..2c30679 100644 --- a/lib/jekyll/responsive_image/renderer.rb +++ b/lib/jekyll/responsive_image/renderer.rb @@ -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)