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 "
+
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