From e28ed20c63c598c0e6cfd52d8bda5d625efa90b8 Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Sun, 16 Nov 2014 21:25:28 +0100 Subject: [PATCH] Asset hashing for image references in srcset Fixes #1287 --- middleman-core/features/asset_hash.feature | 6 ++++++ .../asset-hash-app/source/images/200px.jpg | Bin 0 -> 1767 bytes .../asset-hash-app/source/images/300px.jpg | Bin 0 -> 2905 bytes .../asset-hash-app/source/index.html.erb | 2 +- .../lib/middleman-more/extensions/asset_hash.rb | 2 +- 5 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 middleman-core/fixtures/asset-hash-app/source/images/200px.jpg create mode 100644 middleman-core/fixtures/asset-hash-app/source/images/300px.jpg diff --git a/middleman-core/features/asset_hash.feature b/middleman-core/features/asset_hash.feature index a6462098..e8a6ace5 100644 --- a/middleman-core/features/asset_hash.feature +++ b/middleman-core/features/asset_hash.feature @@ -8,6 +8,8 @@ Feature: Assets get a file hash appended to their and references to them are upd | favicon.ico | | images/100px-1242c368.png | | images/100px-5fd6fb90.jpg | + | images/200px-c11eb203.jpg | + | images/300px-59adce76.jpg | | images/100px-5fd6fb90.gif | | javascripts/application-1d8d5276.js | | stylesheets/site-50eaa978.css | @@ -29,6 +31,9 @@ Feature: Assets get a file hash appended to their and references to them are upd And the file "index.html" should contain 'href="stylesheets/site-50eaa978.css"' And the file "index.html" should contain 'src="javascripts/application-1d8d5276.js"' And the file "index.html" should contain 'src="images/100px-5fd6fb90.jpg"' + And the file "index.html" should contain 'srcset="images/100px-5fd6fb90.jpg 1x, images/200px-c11eb203.jpg 2x, images/300px-59adce76.jpg 3x"' + And the file "index.html" should contain 'src="images/100px-5fd6fb90.gif"' + And the file "index.html" should contain 'src="images/100px-1242c368.png"' And the file "subdir/index.html" should contain 'href="../stylesheets/site-50eaa978.css"' And the file "subdir/index.html" should contain 'src="../javascripts/application-1d8d5276.js"' And the file "subdir/index.html" should contain 'src="../images/100px-5fd6fb90.jpg"' @@ -49,6 +54,7 @@ Feature: Assets get a file hash appended to their and references to them are upd And I should see 'href="stylesheets/site-50eaa978.css"' And I should see 'src="javascripts/application-1d8d5276.js"' And I should see 'src="images/100px-5fd6fb90.jpg"' + And I should see 'srcset="images/100px-5fd6fb90.jpg 1x, images/200px-c11eb203.jpg 2x, images/300px-59adce76.jpg 3x"' When I go to "/subdir/" Then I should see 'href="../stylesheets/site-50eaa978.css"' And I should see 'src="../javascripts/application-1d8d5276.js"' diff --git a/middleman-core/fixtures/asset-hash-app/source/images/200px.jpg b/middleman-core/fixtures/asset-hash-app/source/images/200px.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a23674756dc0fbffe5a631a12a57b2f5e47c3ee GIT binary patch literal 1767 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrMU_b4?usLlYAdd38%$3nLpnV-q8g zA&i`yoIKn-61=<;Mv5|uMkIs(2N(o77)~&pU}jWeU=n0x7G(T?gh3wYPgX`SV1NQf zCT12^Hg*n9E^eTLtpW^8jLghTEX=H|EG$6PwLp0W7C}}aMMFn6;lM<8r9u&-#)%6# zl$|yn6b-ugLB%+!sELzHOk6@zN>xo=LsQGd)Xdz%(#qMz)y>_*(Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8+42=DS8dw7W$U)>J9h3m zboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2`tAFVpT9u3cne5E zJci~kL7=~wSXh`@*g^hcWGV+@WL#!3JiU?ciWB$$3+&-C|fPU z5a_C?=%~`bt}=@uN^6h#wd+C>kER&&-RV->yKVafl})Y5x7RX6ELuD%<6-yNiHDZ2 zRS`G1v#=t@fSs*Dby1fF11`L#`$}*Bx7szyXQnovsNelQ>g#mYbqn)8?V24{DXnvM zx4jobN%!2WTV_v_J0{MLbN{lc@0f;Zh@Xhn1ODQ(8Fz1;RJj-vy=l$GCpCXL?6%w} z`4e?s=A4x0Nxj1xzb)YUyy(!aWCeyc?&Af8v#u1Jm1fOdo*sBocg@5j2V>h9O&I43MDKM|&RdxK)=|3sqr9UF z$7Zu-=NMJHKHuPZv?kKAGDo@d==Mo_%ku8jpIqjfT%b1Rwx`sR$9xhp{e=!97kf5j zdi+^gcEav>*G~SE>+WcMkWx6pAE)^_^XJwkix`~=0)hR-@BOxHon*Om$Bxv@B?o?5 VG1zJ_JrxObU>(I2hk^Y6n*dF+TDt%M literal 0 HcmV?d00001 diff --git a/middleman-core/fixtures/asset-hash-app/source/images/300px.jpg b/middleman-core/fixtures/asset-hash-app/source/images/300px.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a1d9e03eb5000663ac4785a9881f95e202ece6c GIT binary patch literal 2905 zcmeIwSy0nQ90&0I=RRN{5Uv0w97@1|5H3Mf5Ca59ArKA&mP5H|Dui%&0P#RMELS;1 zN(BUr2o|}q9V3DuWmM!8#F_$?qqTqn!Z@TsJMB!LY#)5$xAWbX-PxVbZ&xxRc?sm5 z9heRPf&hS|14!1v9(y;29oxmtni6u%F#LE>2qo6U$e2Rq^TN0x6sEHy#o3kNNQt$e z>(eO5f`SA1kuj7gen4bcOae|a2J8U_g+il{7&ID<#bR(WL|GX;UPetpQI4odB5%1tjI3w1dnet-$kdF!aR`LPVrB3$s0Y@Sc2`;oV0JL@#kuJzC#pvv-yQk#VH?M0N7<~qdQ&v$`BW>NLN7XklGq#B_FNdw6N+!p#!26wdn#3abI?6 z-94<1soT6#V00f&S=UUwbzy_{LH22|GyhBWH|!tRD3F0e(#L}nz+UjShgz15+stMU zKIb1WC@DQfEB7^8)ew7DGlY*dd+bkw%%t({wxkBOO2L5;Zcspp=tR+@OwSgkwxz29 zW5;;F%$%({kQBQy)Q`T%X~9!LqAAwE67fZI@Yw4-CbeXl!Q^+5~R;iF0x; z957N=UJ}$Sm`Z9ZH_tIo&%@i~i+oJ|2}8*i*ROec+4e-=q|05exC%?7eo{~kp;HIS z>fE!OrXz3>=Lc`qOk_lQOy*O_Z#u)r{T#z|nc7Xddry9U^Y>6;OOtU{uwF)@>Q!{a zWH$G*ICbw&@52v95xuveELz|*XAcgSZ&M8-i#o_%5-@mhh^r7mRW@zuzL&hEPy*(j zz-FUO`o4UWaQgE5dbcAE=nJB*@k??OourC8vYLv*bZ!!qImhxHcNm2MQN2Os?k>M6 zTa}nf!^(XwrQ~ewE5gR-$5Rb`skR3)U@k6S)iA3Z0{g}8!`!4jNj1zk>oFgjTW1BL z-H$84v8DmR<$MGu}X>gCxo2hQ&)mVl+Z zoEa)qL$Y$4zR8|cuqL$^iTM$8@e}Gw30p6s-!E{Qz4}I(3QjetaxZ?{zKdhPHO$ae zOPwI6P@&OPU7yPMK$k@cAm#cpl(B+KwP4M^pFjODMa^;E1ic`=z@2~PTu~1)<2Bvb zA6>b3?Ja04&WQ2hmG}iG(FO`w0`a`b%2E4w3l2i=eaHQ?fn(o^j;;-OS+bgvlZ|OT z!px}QRafM=etK9|?zH2iQ+1x#p^VO|_Nv!&1u(`bt%vOX#D&wUttl>&pw*d?Ve z#+;iP3wn?A-Y?}9d(2XyoQ~Z6ecgBR+R~~}*%63#SIt6=I}xTS0dnDu4B*k)FK$cQ`E&He_1FFVqZLg8 zLw|4Aoa$o5;o5Kx6{emZT3fa_<@@!Evg)xg&!O9^>8*t^M!d8i8G!Dc6Ix`Y65Y&V zzkF)wU+4_4hi9oy;_fnl4wY{pQqn

Image url:

- +

Ignored path:

diff --git a/middleman-core/lib/middleman-more/extensions/asset_hash.rb b/middleman-core/lib/middleman-more/extensions/asset_hash.rb index ae5bd0fc..2384eacb 100644 --- a/middleman-core/lib/middleman-more/extensions/asset_hash.rb +++ b/middleman-core/lib/middleman-more/extensions/asset_hash.rb @@ -91,7 +91,7 @@ class Middleman::Extensions::AssetHash < ::Middleman::Extension dirpath = Pathname.new(File.dirname(path)) # TODO: This regex will change some paths in plan HTML (not in a tag) - is that OK? - body.gsub(/([=\'\"\(]\s*)([^\s\'\"\)]+(#{@exts_regex_text}))/) do |match| + body.gsub(/([=\'\"\(,]\s*)([^\s\'\"\)]+(#{@exts_regex_text}))/) do |match| opening_character = $1 asset_path = $2