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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cd519ff05ce42574ccbb38196f5e9aab016a5480
4
- data.tar.gz: 370e59f6edc7cc712a854d2329e2a7dfb27c6809
3
+ metadata.gz: a737cfbd8c307195f1b5c65a166b55537726c298
4
+ data.tar.gz: b8cca78be777777673ca21d7505c9c9754dbec8f
5
5
  SHA512:
6
- metadata.gz: 33f3cb656564ffe0ad37bb9ce6a2b30e46cf452deb0a02ab4cccb712066ee39c68caf40e82c6e0194398f033ed55b128288c9507d8a225a2f86c3887e55bfec0
7
- data.tar.gz: 4566366ccfe96aa497dffedf64f471eab950dc1acd72d1a00310e9b9c8cbb7ef40b3cbba90296df86660cf5fe877015de99db403fa4b0d118b36c17700007a96
6
+ metadata.gz: 0be2674631c601c265582e77870cd45850d99d07226cb4089a51dcb9b5294153c4c029009d9509fb3ce5d68020bac631d6b0ff9d301b9ba877eebb6091625358
7
+ data.tar.gz: 883e8dd54a831943e2352f78b931b6938d634e9e1618c2f042a24f4b69cddf1c26b694e6bc0668f7971c4185bf8b87072dca159c0ea5221947d22710b224bd92
@@ -6,8 +6,6 @@ rvm:
6
6
  - ruby-head
7
7
  - 2.3.1
8
8
  - 2.2.4
9
- - 2.1
10
- - 2.0
11
9
  matrix:
12
10
  allow_failures:
13
11
  - rvm: ruby-head
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
- image10x10 = "<img src=\"data:image/jpeg;base64,#{Base64.encode64(cached_10x10_data)}\" class=\"image-resized-to10x10\" />"
28
- image5x5 = "<img src=\"data:image/jpeg;base64,#{Base64.encode64(cached_5x5_data)}\" class=\"image-resized-to5x5\" />"
29
- step %Q{I should see '#{image10x10}'}
30
- step %Q{I should see '#{image5x5}'}
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
@@ -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,12 @@
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' %>" media="(min-width: 900px)">
9
+ <%= image_tag 'original.jpg' %>
10
+ </picture>
11
+ </body>
12
+ </html>
@@ -0,0 +1 @@
1
+ activate :middleman_simple_thumbnailer
@@ -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, options) unless resize_to
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}", options)
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, options)
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.encode64(File.read(cached_resized_img_abs_path))
30
+ Base64.strict_encode64(File.read(cached_resized_img_abs_path))
31
31
  end
32
32
 
33
33
  def save!
34
- resize!
35
- image.write(resized_img_abs_path)
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)
@@ -1,3 +1,3 @@
1
1
  module MiddlemanSimpleThumbnailer
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
3
3
  end
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.1.0
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-09-04 00:00:00.000000000 Z
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