}
}
+var srcsetTags = createMapFromString('img,source');
+
+function isSrcset(attrName, tag) {
+ return attrName === 'srcset' && srcsetTags(tag);
+}
+
var fnPrefix = '!function(){';
var fnSuffix = '}();';
}
return attrValue;
}
+ else if (isSrcset(attrName, tag)) {
+ // https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset
+ attrValue = trimWhitespace(attrValue).split(/\s+,\s*|\s*,\s+/).map(function(candidate) {
+ var url = candidate;
+ var descriptor = '';
+ var match = candidate.match(/\s+([1-9][0-9]*w|[0-9]+(?:\.[0-9]+)?x)$/);
+ if (match) {
+ url = url.slice(0, -match[0].length);
+ var num = +match[1].slice(0, -1);
+ var suffix = match[1].slice(-1);
+ if (num !== 1 || suffix !== 'x') {
+ descriptor = ' ' + num + suffix;
+ }
+ }
+ if (options.minifyURLs) {
+ url = minifyURLs(url, options.minifyURLs);
+ }
+ return url + descriptor;
+ }).join(', ');
+ }
else if (isMetaViewport(tag, attrs) && attrName === 'content') {
attrValue = attrValue.replace(/\s+/g, '').replace(/[0-9]+\.[0-9]+/g, function(numString) {
// "0.90000" -> "0.9"
minifyCSS: true,
minifyURLs: { site: 'http://website.com/foo bar/' }
}), output);
+
+ input = '<img src="http://cdn.site.com/foo.png">';
+ output = '<img src="//cdn.site.com/foo.png">';
+ equal(minify(input, { minifyURLs: { site: 'http://site.com/' } }), output);
+});
+
+test('srcset attribute minification', function() {
+ input = '<source srcset="http://site.com/foo.gif ,http://site.com/bar.jpg 1x, baz moo 42w,' +
+ '\n\n\n\n\n\t http://site.com/zo om.png 1.00x">';
+ output = '<source srcset="http://site.com/foo.gif, http://site.com/bar.jpg, baz moo 42w, http://site.com/zo om.png">';
+ equal(minify(input), output);
+ output = '<source srcset="foo.gif, bar.jpg, baz%20moo 42w, zo%20om.png">';
+ equal(minify(input, { minifyURLs: { site: 'http://site.com/' } }), output);
});
test('valueless attributes', function() {