postcss-normalize-url
Advanced tools
Comparing version
@@ -0,1 +1,5 @@ | ||
# 3.0.3 | ||
* Updates postcss-value-parser to version 3 (thanks to @TrySound). | ||
# 3.0.2 | ||
@@ -2,0 +6,0 @@ |
63
index.js
'use strict'; | ||
var postcss = require('postcss'); | ||
var parser = require('postcss-value-parser'); | ||
var trimSpaceNodes = parser.trim; | ||
var stringify = parser.stringify; | ||
var valueParser = require('postcss-value-parser'); | ||
var normalize = require('normalize-url'); | ||
@@ -22,44 +20,29 @@ var isAbsolute = require('is-absolute-url'); | ||
function namespaceOptimiser (options) { | ||
return function (rule) { | ||
rule.params = parser(rule.params).walk(function (node, i, parentNodes) { | ||
var nodes = node.nodes; | ||
if (node.type === 'function' && node.value === 'url') { | ||
trimSpaceNodes(node.nodes); | ||
if (nodes.length === 1 && nodes[0].type === 'string' && nodes[0].quote) { | ||
node = nodes[0]; | ||
} else { | ||
node = { type: 'string', quote: '"', value: stringify(nodes) }; | ||
} | ||
parentNodes[i] = node; | ||
} | ||
function transformNamespace (rule, opts) { | ||
rule.params = valueParser(rule.params).walk(function (node) { | ||
if (node.type === 'function' && node.value === 'url' && node.nodes.length) { | ||
node.type = 'string'; | ||
node.quote = node.nodes[0].quote || '"'; | ||
node.value = node.nodes[0].value; | ||
} | ||
if (node.type === 'string') { | ||
node.value = convert(node.value.trim(), options); | ||
} | ||
if (node.type === 'string') { | ||
node.value = convert(node.value.trim(), opts); | ||
} | ||
return false; | ||
}).toString(); | ||
}; | ||
return false; | ||
}).toString(); | ||
} | ||
function transformDecl(decl, opts) { | ||
decl.value = decl.value.replace(multiline, ''); | ||
decl.value = parser(decl.value).walk('url', function (node) { | ||
var nodes = node.nodes; | ||
var url; | ||
var escaped; | ||
if (node.type !== 'function') { | ||
function transformDecl (decl, opts) { | ||
decl.value = valueParser(decl.value).walk(function (node) { | ||
if (node.type !== 'function' || node.value !== 'url' && node.nodes.length) { | ||
return; | ||
} | ||
trimSpaceNodes(nodes); | ||
var url = node.nodes[0]; | ||
var escaped; | ||
if (nodes.length === 1 && nodes[0].type === 'string' && nodes[0].quote) { | ||
url = nodes[0]; | ||
} else { | ||
url = { type: 'word', value: stringify(nodes) }; | ||
} | ||
node.nodes = [url]; | ||
node.before = node.after = ''; | ||
url.value = url.value.trim().replace(multiline, ''); | ||
@@ -70,3 +53,2 @@ if (~url.value.indexOf('data:image/') || ~url.value.indexOf('data:application/')) { | ||
url.value = url.value.trim(); | ||
if (!~url.value.indexOf('chrome-extension')) { | ||
@@ -101,8 +83,7 @@ url.value = convert(url.value, opts); | ||
return transformDecl(node, opts); | ||
} else if (node.type === 'atrule' && node.name === 'namespace') { | ||
return transformNamespace(node, opts); | ||
} | ||
if (node.type === 'atrule' && node.name === 'namespace') { | ||
return namespaceOptimiser(opts)(node); | ||
} | ||
}); | ||
}; | ||
}); |
{ | ||
"name": "postcss-normalize-url", | ||
"version": "3.0.2", | ||
"version": "3.0.3", | ||
"description": "Normalize URLs with PostCSS", | ||
@@ -29,3 +29,3 @@ "main": "index.js", | ||
"postcss": "^5.0.8", | ||
"postcss-value-parser": "^2.0.2" | ||
"postcss-value-parser": "^3.0.1" | ||
}, | ||
@@ -32,0 +32,0 @@ "devDependencies": { |
7811
-6.14%71
-20.22%+ Added
- Removed
Updated