diff options
Diffstat (limited to 'node_modules/clean-css/lib/reader/rewrite-url.js')
-rw-r--r-- | node_modules/clean-css/lib/reader/rewrite-url.js | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/node_modules/clean-css/lib/reader/rewrite-url.js b/node_modules/clean-css/lib/reader/rewrite-url.js deleted file mode 100644 index a4793fd1c..000000000 --- a/node_modules/clean-css/lib/reader/rewrite-url.js +++ /dev/null @@ -1,118 +0,0 @@ -var path = require('path'); -var url = require('url'); - -var DOUBLE_QUOTE = '"'; -var SINGLE_QUOTE = '\''; -var URL_PREFIX = 'url('; -var URL_SUFFIX = ')'; - -var QUOTE_PREFIX_PATTERN = /^["']/; -var QUOTE_SUFFIX_PATTERN = /["']$/; -var ROUND_BRACKETS_PATTERN = /[\(\)]/; -var URL_PREFIX_PATTERN = /^url\(/i; -var URL_SUFFIX_PATTERN = /\)$/; -var WHITESPACE_PATTERN = /\s/; - -var isWindows = process.platform == 'win32'; - -function rebase(uri, rebaseConfig) { - if (!rebaseConfig) { - return uri; - } - - if (isAbsolute(uri) && !isRemote(rebaseConfig.toBase)) { - return uri; - } - - if (isRemote(uri) || isSVGMarker(uri) || isInternal(uri)) { - return uri; - } - - if (isData(uri)) { - return '\'' + uri + '\''; - } - - if (isRemote(rebaseConfig.toBase)) { - return url.resolve(rebaseConfig.toBase, uri); - } - - return rebaseConfig.absolute ? - normalize(absolute(uri, rebaseConfig)) : - normalize(relative(uri, rebaseConfig)); -} - -function isAbsolute(uri) { - return path.isAbsolute(uri); -} - -function isSVGMarker(uri) { - return uri[0] == '#'; -} - -function isInternal(uri) { - return /^\w+:\w+/.test(uri); -} - -function isRemote(uri) { - return /^[^:]+?:\/\//.test(uri) || uri.indexOf('//') === 0; -} - -function isData(uri) { - return uri.indexOf('data:') === 0; -} - -function absolute(uri, rebaseConfig) { - return path - .resolve(path.join(rebaseConfig.fromBase || '', uri)) - .replace(rebaseConfig.toBase, ''); -} - -function relative(uri, rebaseConfig) { - return path.relative(rebaseConfig.toBase, path.join(rebaseConfig.fromBase || '', uri)); -} - -function normalize(uri) { - return isWindows ? uri.replace(/\\/g, '/') : uri; -} - -function quoteFor(unquotedUrl) { - if (unquotedUrl.indexOf(SINGLE_QUOTE) > -1) { - return DOUBLE_QUOTE; - } else if (unquotedUrl.indexOf(DOUBLE_QUOTE) > -1) { - return SINGLE_QUOTE; - } else if (hasWhitespace(unquotedUrl) || hasRoundBrackets(unquotedUrl)) { - return SINGLE_QUOTE; - } else { - return ''; - } -} - -function hasWhitespace(url) { - return WHITESPACE_PATTERN.test(url); -} - -function hasRoundBrackets(url) { - return ROUND_BRACKETS_PATTERN.test(url); -} - -function rewriteUrl(originalUrl, rebaseConfig, pathOnly) { - var strippedUrl = originalUrl - .replace(URL_PREFIX_PATTERN, '') - .replace(URL_SUFFIX_PATTERN, '') - .trim(); - - var unquotedUrl = strippedUrl - .replace(QUOTE_PREFIX_PATTERN, '') - .replace(QUOTE_SUFFIX_PATTERN, '') - .trim(); - - var quote = strippedUrl[0] == SINGLE_QUOTE || strippedUrl[0] == DOUBLE_QUOTE ? - strippedUrl[0] : - quoteFor(unquotedUrl); - - return pathOnly ? - rebase(unquotedUrl, rebaseConfig) : - URL_PREFIX + quote + rebase(unquotedUrl, rebaseConfig) + quote + URL_SUFFIX; -} - -module.exports = rewriteUrl; |