diff --git a/features/responsive-image-tag.feature b/features/responsive-image-tag.feature index ddad2f9..e8353fa 100644 --- a/features/responsive-image-tag.feature +++ b/features/responsive-image-tag.feature @@ -43,27 +43,26 @@ Feature: Jekyll responsive_image tag - width: 100 - width: 200 """ - And I have a file "index.html" with "{% responsive_image path: assets/everybody-loves-jalapeño-pineapple-cornbread.png %}" + And I have a file "index.html" with "{% responsive_image path: assets/subdir/test.png %}" When I run Jekyll - Then I should see "\"\" +{{ alt }} diff --git a/lib/jekyll/responsive_image/common.rb b/lib/jekyll/responsive_image/common.rb index 51cb0b2..60bc103 100644 --- a/lib/jekyll/responsive_image/common.rb +++ b/lib/jekyll/responsive_image/common.rb @@ -22,8 +22,8 @@ module Jekyll site = context.registers[:site] config = make_config(site) - source_image_path = site.in_source_dir(attributes['path'].to_s) - image = ImageProcessor.process(source_image_path, config) + absolute_image_path = site.in_source_dir(attributes['path'].to_s) + image = ImageProcessor.process(absolute_image_path, attributes['path'], config) attributes['original'] = image[:original] attributes['resized'] = image[:resized] diff --git a/lib/jekyll/responsive_image/extra_image_generator.rb b/lib/jekyll/responsive_image/extra_image_generator.rb index 566f9eb..70932fe 100644 --- a/lib/jekyll/responsive_image/extra_image_generator.rb +++ b/lib/jekyll/responsive_image/extra_image_generator.rb @@ -7,8 +7,10 @@ module Jekyll config = make_config(site) config['extra_images'].each do |pathspec| - Dir.glob(site.in_source_dir(pathspec)) do |path| - result = ImageProcessor.process(path, config) + Dir.glob(site.in_source_dir(pathspec)) do |image_path| + relative_image_path = image_path.sub(/^#{Regexp.escape(image_path)}/, '') + + result = ImageProcessor.process(image_path, relative_image_path, config) result[:resized].each { |image| keep_resized_image!(site, image) } end end diff --git a/lib/jekyll/responsive_image/image_processor.rb b/lib/jekyll/responsive_image/image_processor.rb index afc7689..86a2b3a 100644 --- a/lib/jekyll/responsive_image/image_processor.rb +++ b/lib/jekyll/responsive_image/image_processor.rb @@ -3,20 +3,20 @@ module Jekyll class ImageProcessor include ResponsiveImage::Utils - def process(image_path, config) - raise SyntaxError.new("Invalid image path specified: #{image_path}") unless File.file?(image_path) + def process(absolute_image_path, relative_image_path, config) + raise SyntaxError.new("Invalid image path specified: #{absolute_image_path}") unless File.file?(absolute_image_path) resize_handler = ResizeHandler.new - img = Magick::Image::read(image_path).first + img = Magick::Image::read(absolute_image_path).first { - original: image_hash(config['base_path'], image_path, img.columns, img.rows), + original: image_hash(config['base_path'], relative_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) + def self.process(absolute_image_path, relative_image_path, config) + self.new.process(absolute_image_path, relative_image_path, config) end end end