middleman-simple-thumbnailer 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +0 -2
- data/README.md +11 -0
- data/features/generate_image_thumbnails_image_path.feature +34 -0
- data/features/support/image_thumbnails_steps.rb +42 -6
- data/fixtures/basic-app-image-path/config.rb +1 -0
- data/fixtures/basic-app-image-path/source/images/original.jpg +0 -0
- data/fixtures/basic-app-image-path/source/page-with-images-to-resize.html.erb +16 -0
- data/fixtures/basic-app-image-path/source/page-with-untouched-image.html.erb +12 -0
- data/fixtures/cached-thumbnails-image-path/config.rb +1 -0
- data/fixtures/cached-thumbnails-image-path/source/images/original.jpg +0 -0
- data/fixtures/cached-thumbnails-image-path/source/page-with-images-to-resize.html.erb +16 -0
- data/lib/middleman-simple-thumbnailer/extension.rb +11 -3
- data/lib/middleman-simple-thumbnailer/image.rb +7 -3
- data/lib/middleman-simple-thumbnailer/version.rb +1 -1
- metadata +26 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a737cfbd8c307195f1b5c65a166b55537726c298
|
4
|
+
data.tar.gz: b8cca78be777777673ca21d7505c9c9754dbec8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0be2674631c601c265582e77870cd45850d99d07226cb4089a51dcb9b5294153c4c029009d9509fb3ce5d68020bac631d6b0ff9d301b9ba877eebb6091625358
|
7
|
+
data.tar.gz: 883e8dd54a831943e2352f78b931b6938d634e9e1618c2f042a24f4b69cddf1c26b694e6bc0668f7971c4185bf8b87072dca159c0ea5221947d22710b224bd92
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -23,6 +23,17 @@ And modify your `image_tag`'s by adding `resize_to` parameter:
|
|
23
23
|
= image_tag image, resize_to: '50x50', class: 'thumbnail'
|
24
24
|
```
|
25
25
|
|
26
|
+
You can also use the `image_path` helper the same way in place where you need only the path of the resized image:
|
27
|
+
```
|
28
|
+
<picture>
|
29
|
+
<source srcset="<%= image_path "original.jpg", resize_to: 1200 %>" media="(min-width: 900px)">
|
30
|
+
<%= image_tag "original.jpg", resize_to: "400%", class: 'the-image-class' %>
|
31
|
+
</picture>
|
32
|
+
```
|
33
|
+
|
34
|
+
This extension use ImageMagick (via mini_magick) to resize the images.
|
35
|
+
The `resize_to` format is therefore the one defined ny ImageMagick. The documentation can be found [there](http://www.imagemagick.org/script/command-line-processing.php#geometry).
|
36
|
+
|
26
37
|
Build/Development modes
|
27
38
|
-----
|
28
39
|
During development thumbnails will be created on fly and presented as a base64 strings.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Feature: Generate image thumbnails with image path
|
2
|
+
|
3
|
+
Scenario: Preserve default image_path behaviour if no resize_to param is given
|
4
|
+
Given the Server is running at "basic-app-image-path"
|
5
|
+
When I go to "/page-with-untouched-image.html"
|
6
|
+
Then I should see '<img src="/images/original.jpg" alt="Original" />'
|
7
|
+
And I should see '<source srcset="/images/original.jpg" media="(min-width: 900px)">'
|
8
|
+
|
9
|
+
Scenario: Preserve default image_path behaviour after build if no resize_to param was given
|
10
|
+
Given a fixture app "basic-app-image-path"
|
11
|
+
And a successfully built app at "basic-app-image-path"
|
12
|
+
When I cd to "build"
|
13
|
+
Then the file "page-with-untouched-image.html" should contain '<img src="/images/original.jpg" alt="Original" />'
|
14
|
+
And the file "page-with-untouched-image.html" should contain '<source srcset="/images/original.jpg" media="(min-width: 900px)">'
|
15
|
+
|
16
|
+
Scenario: Generate base64 thumbnail of image with resize_to param given
|
17
|
+
Given the Server is running at "basic-app-image-path"
|
18
|
+
When I go to "/page-with-images-to-resize.html"
|
19
|
+
Then I should see base64ed thumbnails and srcset of the images
|
20
|
+
|
21
|
+
Scenario: After build server resized images
|
22
|
+
Given a fixture app "basic-app-image-path"
|
23
|
+
And a successfully built app at "basic-app-image-path"
|
24
|
+
When I cd to "build"
|
25
|
+
Then the following images should exist:
|
26
|
+
| filename | dimensions |
|
27
|
+
| images/original.10x10gt.jpg | 10x5 |
|
28
|
+
| images/original.5x5.jpg | 5x2 |
|
29
|
+
| images/original.20x20.jpg | 20x9 |
|
30
|
+
| images/original.15x15.jpg | 15x7 |
|
31
|
+
And the file "page-with-images-to-resize.html" should contain '<img src="/images/original.10x10gt.jpg" class="image-resized-to10x10" alt="Original.10x10gt" />'
|
32
|
+
And the file "page-with-images-to-resize.html" should contain '<source srcset="/images/original.20x20.jpg" media="(min-width: 900px)">'
|
33
|
+
And the file "page-with-images-to-resize.html" should contain '<img src="/images/original.5x5.jpg" class="image-resized-to5x5" alt="Original.5x5" />'
|
34
|
+
And the file "page-with-images-to-resize.html" should contain '<source srcset="/images/original.15x15.jpg" media="(min-width: 900px)">'
|
@@ -1,4 +1,17 @@
|
|
1
1
|
require 'base64'
|
2
|
+
def calculate_resized_image_b64(resize_str)
|
3
|
+
base_image = MiniMagick::Image.open(File.expand_path("../../fixtures/basic-app/source/images/original.jpg", __dir__))
|
4
|
+
base_image.resize(resize_str)
|
5
|
+
Base64.strict_encode64(base_image.to_blob)
|
6
|
+
end
|
7
|
+
|
8
|
+
image10x10 = "<img src=\"data:image/jpeg;base64,"+calculate_resized_image_b64("10x10>")+"\" class=\"image-resized-to10x10\" />"
|
9
|
+
|
10
|
+
image5x5 = "<img src=\"data:image/jpeg;base64,"+calculate_resized_image_b64("5x5")+"\" class=\"image-resized-to5x5\" />"
|
11
|
+
|
12
|
+
srcset20x20 = "<source srcset=\"data:image/jpeg;base64,"+calculate_resized_image_b64("20x20")+"\" media=\"(min-width: 900px)\">"
|
13
|
+
|
14
|
+
srcset15x15 = "<source srcset=\"data:image/jpeg;base64,"+calculate_resized_image_b64("15x15")+"\" media=\"(min-width: 900px)\">"
|
2
15
|
|
3
16
|
Given(/^there is no cache directory yet$/) do
|
4
17
|
if directory? MiddlemanSimpleThumbnailer::Extension.config.cache_dir
|
@@ -7,12 +20,19 @@ Given(/^there is no cache directory yet$/) do
|
|
7
20
|
end
|
8
21
|
|
9
22
|
Then(/^I should see base64ed thumbnails of the images$/) do
|
10
|
-
image10x10 = "<img src=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlu\nbwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMg\nc1JHQgAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAA\nADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAAC\nGAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRk\nAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRt\nZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAA\nCAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXds\nZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2\nNi0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\nAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABv\nogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+E\nAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAA\nAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5\nNjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAA\nAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt\nIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJl\nbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\nAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0y\nLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4A\nEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAA\nAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3Vy\ndgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBU\nAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8AMEA\nxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFF\nAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB\nAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oD\nxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTw\nBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgG\nWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gfl\nB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJ\nugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuw\nC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N\n+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh\nEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMT\nIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYD\nFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZ\nRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyj\nHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEg\nbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRN\nJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEo\noijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\nLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox\n8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp\nNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8\nZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHu\nQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BI\nBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4l\nTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U\n21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuV\nW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi\n8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpI\nap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfBy\nS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pG\neqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC\n9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuW\ni/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU\n9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5A\nnq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\nUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL\nssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9\nFb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/\nyD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHT\nRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i\n3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq\n5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb7\n94r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAgFBgcGBQgH\nBgcJCAgJDBMMDAsLDBgREg4THBgdHRsYGxofIywlHyEqIRobJjQnKi4vMTIx\nHiU2OjYwOiwwMTD/2wBDAQgJCQwKDBcMDBcwIBsgMDAwMDAwMDAwMDAwMDAw\nMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDD/wAARCAAFAAoD\nAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAwf/xAAeEAABBAEFAAAA\nAAAAAAAAAAACAAEDEQQSISIyYf/EABYBAQEBAAAAAAAAAAAAAAAAAAACA//E\nABcRAQEBAQAAAAAAAAAAAAAAAAAxARH/2gAMAwEAAhEDEQA/AJDhyDCBCIMd\nFXN78W0icBJmyjIQ6Q2d26p0f//Z\n\" class=\"image-resized-to10x10\" />"
|
11
|
-
image5x5 = "<img src=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlu\nbwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMg\nc1JHQgAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAA\nADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAAC\nGAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRk\nAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRt\nZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAA\nCAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXds\nZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2\nNi0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\nAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABv\nogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+E\nAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAA\nAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5\nNjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAA\nAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt\nIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJl\nbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\nAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0y\nLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4A\nEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAA\nAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3Vy\ndgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBU\nAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8AMEA\nxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFF\nAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB\nAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oD\nxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTw\nBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgG\nWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gfl\nB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJ\nugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuw\nC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N\n+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh\nEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMT\nIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYD\nFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZ\nRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyj\nHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEg\nbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRN\nJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEo\noijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\nLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox\n8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp\nNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8\nZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHu\nQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BI\nBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4l\nTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U\n21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuV\nW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi\n8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpI\nap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfBy\nS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pG\neqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC\n9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuW\ni/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU\n9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5A\nnq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\nUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL\nssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9\nFb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/\nyD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHT\nRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i\n3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq\n5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb7\n94r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAgFBgcGBQgH\nBgcJCAgJDBMMDAsLDBgREg4THBgdHRsYGxofIywlHyEqIRobJjQnKi4vMTIx\nHiU2OjYwOiwwMTD/2wBDAQgJCQwKDBcMDBcwIBsgMDAwMDAwMDAwMDAwMDAw\nMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDD/wAARCAACAAUD\nAREAAhEBAxEB/8QAFAABAAAAAAAAAAAAAAAAAAAAB//EABkQAQACAwAAAAAA\nAAAAAAAAAAECAwARMf/EABUBAQEAAAAAAAAAAAAAAAAAAAID/8QAFREBAQAA\nAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhEDEQA/ACFkxoqIqGnmWov/2Q==\n\" class=\"image-resized-to5x5\" />"
|
12
23
|
step %Q{I should see '#{image10x10}'}
|
13
24
|
step %Q{I should see '#{image5x5}'}
|
14
25
|
end
|
15
26
|
|
27
|
+
|
28
|
+
Then(/^I should see base64ed thumbnails and srcset of the images$/) do
|
29
|
+
step %Q{I should see '#{image10x10}'}
|
30
|
+
step %Q{I should see '#{image5x5}'}
|
31
|
+
step %Q{I should see '#{srcset20x20}'}
|
32
|
+
step %Q{I should see '#{srcset15x15}'}
|
33
|
+
end
|
34
|
+
|
35
|
+
|
16
36
|
Then(/^the cache directory should exist (?:at "([^"]+)" )?with the following files$/) do |cache_dir, files|
|
17
37
|
cache_dir ||= MiddlemanSimpleThumbnailer::Extension.config.cache_dir
|
18
38
|
check_directory_presence([cache_dir], true)
|
@@ -20,14 +40,30 @@ Then(/^the cache directory should exist (?:at "([^"]+)" )?with the following fil
|
|
20
40
|
files.raw.map{|file_row| file_row[0]}.each { |f| expect(f).to be_existing_file }
|
21
41
|
end
|
22
42
|
|
43
|
+
Then(/^I should see base64ed data of the cached thumbnails with image path$/) do
|
44
|
+
# data that won't ever be generated by resizing an actual image
|
45
|
+
cached_10x10_data = "foo"
|
46
|
+
cached_5x5_data = "bar"
|
47
|
+
cached_15x15_data = "hello"
|
48
|
+
cached_20x20_data = "world"
|
49
|
+
cachedimage10x10 = "<img src=\"data:image/jpeg;base64,#{Base64.strict_encode64(cached_10x10_data)}\" class=\"image-resized-to10x10\" />"
|
50
|
+
cachedimage5x5 = "<img src=\"data:image/jpeg;base64,#{Base64.strict_encode64(cached_5x5_data)}\" class=\"image-resized-to5x5\" />"
|
51
|
+
cachedsrcset20x20 = "<source srcset=\"data:image/jpeg;base64,#{Base64.strict_encode64(cached_20x20_data)}\" media=\"(min-width: 900px)\">"
|
52
|
+
cachedsrcset15x15 = "<source srcset=\"data:image/jpeg;base64,#{Base64.strict_encode64(cached_15x15_data)}\" media=\"(min-width: 900px)\">"
|
53
|
+
step %Q{I should see '#{cachedimage10x10}'}
|
54
|
+
step %Q{I should see '#{cachedimage5x5}'}
|
55
|
+
step %Q{I should see '#{cachedsrcset20x20}'}
|
56
|
+
step %Q{I should see '#{cachedsrcset15x15}'}
|
57
|
+
end
|
58
|
+
|
23
59
|
Then(/^I should see base64ed data of the cached thumbnails$/) do
|
24
60
|
# data that won't ever be generated by resizing an actual image
|
25
61
|
cached_10x10_data = "foo"
|
26
62
|
cached_5x5_data = "bar"
|
27
|
-
|
28
|
-
|
29
|
-
step %Q{I should see '#{
|
30
|
-
step %Q{I should see '#{
|
63
|
+
cachedimage10x10 = "<img src=\"data:image/jpeg;base64,#{Base64.strict_encode64(cached_10x10_data)}\" class=\"image-resized-to10x10\" />"
|
64
|
+
cachedimage5x5 = "<img src=\"data:image/jpeg;base64,#{Base64.strict_encode64(cached_5x5_data)}\" class=\"image-resized-to5x5\" />"
|
65
|
+
step %Q{I should see '#{cachedimage10x10}'}
|
66
|
+
step %Q{I should see '#{cachedimage5x5}'}
|
31
67
|
end
|
32
68
|
|
33
69
|
Then(/^the following images should exist:$/) do |table|
|
@@ -0,0 +1 @@
|
|
1
|
+
activate :middleman_simple_thumbnailer
|
Binary file
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Hello World</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<picture>
|
8
|
+
<source srcset="<%= image_path 'original.jpg', resize_to: '20x20' %>" media="(min-width: 900px)">
|
9
|
+
<%= image_tag 'original.jpg', resize_to: '10x10>', class: 'image-resized-to10x10' %>
|
10
|
+
</picture>
|
11
|
+
<picture>
|
12
|
+
<source srcset="<%= image_path 'original.jpg', resize_to: '15x15' %>" media="(min-width: 900px)">
|
13
|
+
<%= image_tag 'original.jpg', resize_to: '5x5', class: 'image-resized-to5x5' %>
|
14
|
+
</picture>
|
15
|
+
</body>
|
16
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
activate :middleman_simple_thumbnailer
|
Binary file
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Hello World</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<picture>
|
8
|
+
<source srcset="<%= image_path 'original.jpg', resize_to: '20x20>'%>" media="(min-width: 900px)">
|
9
|
+
<%= image_tag 'original.jpg', resize_to: '10x10', class: 'image-resized-to10x10' %>
|
10
|
+
</picture>
|
11
|
+
<picture>
|
12
|
+
<source srcset="<%= image_path 'original.jpg', resize_to: '15x15>'%>" media="(min-width: 900px)">
|
13
|
+
<%= image_tag 'original.jpg', resize_to: '5x5', class: 'image-resized-to5x5' %>
|
14
|
+
</picture>
|
15
|
+
</body>
|
16
|
+
</html>
|
@@ -35,16 +35,24 @@ module MiddlemanSimpleThumbnailer
|
|
35
35
|
helpers do
|
36
36
|
|
37
37
|
def image_tag(path, options={})
|
38
|
+
if (resize_to = options.delete(:resize_to))
|
39
|
+
super(image_path(path, resize_to: resize_to), options)
|
40
|
+
else
|
41
|
+
super(path, options)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def image_path(path, options={})
|
38
46
|
resize_to = options.delete(:resize_to)
|
39
|
-
return super(path
|
47
|
+
return super(path) unless resize_to
|
40
48
|
|
41
49
|
image = MiddlemanSimpleThumbnailer::Image.new(path, resize_to, app)
|
42
50
|
if app.development?
|
43
|
-
super("data:#{image.mime_type};base64,#{image.base64_data}"
|
51
|
+
super("data:#{image.mime_type};base64,#{image.base64_data}")
|
44
52
|
else
|
45
53
|
ext = app.extensions[:middleman_simple_thumbnailer]
|
46
54
|
ext.store_resized_image(path, resize_to)
|
47
|
-
super(image.resized_img_path
|
55
|
+
super(image.resized_img_path)
|
48
56
|
end
|
49
57
|
end
|
50
58
|
|
@@ -27,12 +27,16 @@ module MiddlemanSimpleThumbnailer
|
|
27
27
|
resize!
|
28
28
|
save_cached_thumbnail
|
29
29
|
end
|
30
|
-
Base64.
|
30
|
+
Base64.strict_encode64(File.read(cached_resized_img_abs_path))
|
31
31
|
end
|
32
32
|
|
33
33
|
def save!
|
34
|
-
|
35
|
-
|
34
|
+
unless cached_thumbnail_available?
|
35
|
+
resize!
|
36
|
+
save_cached_thumbnail
|
37
|
+
end
|
38
|
+
|
39
|
+
FileUtils.copy_file(cached_resized_img_abs_path, resized_img_abs_path)
|
36
40
|
end
|
37
41
|
|
38
42
|
def self.options=(options)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-simple-thumbnailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakub Niewczas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: middleman-core
|
@@ -124,12 +124,24 @@ files:
|
|
124
124
|
- Rakefile
|
125
125
|
- features/caching_thumbnails_in_development.feature
|
126
126
|
- features/generate_image_thumbnails.feature
|
127
|
+
- features/generate_image_thumbnails_image_path.feature
|
127
128
|
- features/support/env.rb
|
128
129
|
- features/support/image_thumbnails_steps.rb
|
130
|
+
- fixtures/basic-app-image-path/config.rb
|
131
|
+
- fixtures/basic-app-image-path/source/images/original.jpg
|
132
|
+
- fixtures/basic-app-image-path/source/page-with-images-to-resize.html.erb
|
133
|
+
- fixtures/basic-app-image-path/source/page-with-untouched-image.html.erb
|
129
134
|
- fixtures/basic-app/config.rb
|
130
135
|
- fixtures/basic-app/source/images/original.jpg
|
131
136
|
- fixtures/basic-app/source/page-with-images-to-resize.html.erb
|
132
137
|
- fixtures/basic-app/source/page-with-untouched-image.html.erb
|
138
|
+
- fixtures/cached-thumbnails-image-path/config.rb
|
139
|
+
- fixtures/cached-thumbnails-image-path/source/images/original.jpg
|
140
|
+
- fixtures/cached-thumbnails-image-path/source/page-with-images-to-resize.html.erb
|
141
|
+
- fixtures/cached-thumbnails-image-path/tmp/simple-thumbnailer-cache/images/original.10x10.eb4e78fd2554225b2.jpg
|
142
|
+
- fixtures/cached-thumbnails-image-path/tmp/simple-thumbnailer-cache/images/original.15x15.eb4e78fd2554225b2.jpg
|
143
|
+
- fixtures/cached-thumbnails-image-path/tmp/simple-thumbnailer-cache/images/original.20x20.eb4e78fd2554225b2.jpg
|
144
|
+
- fixtures/cached-thumbnails-image-path/tmp/simple-thumbnailer-cache/images/original.5x5.eb4e78fd2554225b2.jpg
|
133
145
|
- fixtures/cached-thumbnails/config.rb
|
134
146
|
- fixtures/cached-thumbnails/source/images/original.jpg
|
135
147
|
- fixtures/cached-thumbnails/source/page-with-images-to-resize.html.erb
|
@@ -172,12 +184,24 @@ summary: Middleman extension that allows you to create image thumbnails by provi
|
|
172
184
|
test_files:
|
173
185
|
- features/caching_thumbnails_in_development.feature
|
174
186
|
- features/generate_image_thumbnails.feature
|
187
|
+
- features/generate_image_thumbnails_image_path.feature
|
175
188
|
- features/support/env.rb
|
176
189
|
- features/support/image_thumbnails_steps.rb
|
190
|
+
- fixtures/basic-app-image-path/config.rb
|
191
|
+
- fixtures/basic-app-image-path/source/images/original.jpg
|
192
|
+
- fixtures/basic-app-image-path/source/page-with-images-to-resize.html.erb
|
193
|
+
- fixtures/basic-app-image-path/source/page-with-untouched-image.html.erb
|
177
194
|
- fixtures/basic-app/config.rb
|
178
195
|
- fixtures/basic-app/source/images/original.jpg
|
179
196
|
- fixtures/basic-app/source/page-with-images-to-resize.html.erb
|
180
197
|
- fixtures/basic-app/source/page-with-untouched-image.html.erb
|
198
|
+
- fixtures/cached-thumbnails-image-path/config.rb
|
199
|
+
- fixtures/cached-thumbnails-image-path/source/images/original.jpg
|
200
|
+
- fixtures/cached-thumbnails-image-path/source/page-with-images-to-resize.html.erb
|
201
|
+
- fixtures/cached-thumbnails-image-path/tmp/simple-thumbnailer-cache/images/original.10x10.eb4e78fd2554225b2.jpg
|
202
|
+
- fixtures/cached-thumbnails-image-path/tmp/simple-thumbnailer-cache/images/original.15x15.eb4e78fd2554225b2.jpg
|
203
|
+
- fixtures/cached-thumbnails-image-path/tmp/simple-thumbnailer-cache/images/original.20x20.eb4e78fd2554225b2.jpg
|
204
|
+
- fixtures/cached-thumbnails-image-path/tmp/simple-thumbnailer-cache/images/original.5x5.eb4e78fd2554225b2.jpg
|
181
205
|
- fixtures/cached-thumbnails/config.rb
|
182
206
|
- fixtures/cached-thumbnails/source/images/original.jpg
|
183
207
|
- fixtures/cached-thumbnails/source/page-with-images-to-resize.html.erb
|