From: Jakub Pawlowicz Date: Tue, 21 Apr 2015 17:23:47 +0000 (+0100) Subject: Cleans up url rebase code getting rid of unnecessary state. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=730ac09e5b45f889d7f9142ae6ca6e9e253a041b;p=clean-css.git Cleans up url rebase code getting rid of unnecessary state. --- diff --git a/History.md b/History.md index b1f95cae..8915d280 100644 --- a/History.md +++ b/History.md @@ -1,6 +1,7 @@ [3.3.0 / 2015-xx-xx](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.2...HEAD) ================== +* Cleans up url rebase code getting rid of unnecessary state. * Fixed issue [#436](https://github.com/jakubpawlowicz/clean-css/issues/436) - refactors URI rewriting. [3.2.2 / 2015-04-21](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.1...v3.2.2) diff --git a/lib/clean.js b/lib/clean.js index c6917b86..9c410cbb 100644 --- a/lib/clean.js +++ b/lib/clean.js @@ -6,7 +6,7 @@ */ var ImportInliner = require('./imports/inliner'); -var UrlRebase = require('./images/url-rebase'); +var rebaseUrls = require('./images/rebase-urls'); var SelectorsOptimizer = require('./selectors/optimizer'); var simpleStringify = require('./stringifier/simple'); @@ -163,7 +163,6 @@ function minify(context, data) { var freeTextProcessor = new FreeTextProcessor(options.sourceMap); var urlsProcessor = new UrlsProcessor(context, options.sourceMap, options.compatibility.properties.urlQuotes); - var urlRebase = new UrlRebase(context); var selectorsOptimizer = new SelectorsOptimizer(options, context); var stringify = options.sourceMap ? sourceMapStringify : simpleStringify; @@ -185,7 +184,7 @@ function minify(context, data) { return selectorsOptimizer.process(data, stringify, function (data) { data = freeTextProcessor.restore(data); data = urlsProcessor.restore(data); - data = options.rebase ? urlRebase.process(data) : data; + data = options.rebase ? rebaseUrls(data, context) : data; data = expressionsProcessor.restore(data); return commentsProcessor.restore(data); }, sourceMapTracker); diff --git a/lib/images/rebase-urls.js b/lib/images/rebase-urls.js new file mode 100644 index 00000000..f585e4b5 --- /dev/null +++ b/lib/images/rebase-urls.js @@ -0,0 +1,30 @@ +var path = require('path'); + +var rewriteUrls = require('./rewrite-urls'); + +function rebaseUrls(data, context) { + var rebaseOpts = { + absolute: context.options.explicitRoot, + relative: !context.options.explicitRoot && context.options.explicitTarget, + fromBase: context.options.relativeTo + }; + + if (!rebaseOpts.absolute && !rebaseOpts.relative) + return data; + + if (rebaseOpts.absolute && context.options.explicitTarget) + context.warnings.push('Both \'root\' and output file given so rebasing URLs as absolute paths'); + + if (rebaseOpts.absolute) + rebaseOpts.toBase = path.resolve(context.options.root); + + if (rebaseOpts.relative) + rebaseOpts.toBase = path.resolve(context.options.target); + + if (!rebaseOpts.fromBase || !rebaseOpts.toBase) + return data; + + return rewriteUrls(data, rebaseOpts, context); +} + +module.exports = rebaseUrls; diff --git a/lib/images/url-rebase.js b/lib/images/url-rebase.js deleted file mode 100644 index 193c7e9d..00000000 --- a/lib/images/url-rebase.js +++ /dev/null @@ -1,36 +0,0 @@ -var path = require('path'); - -var rewriteUrls = require('./rewrite-urls'); - -function UrlRebase(outerContext) { - this.outerContext = outerContext; -} - -UrlRebase.prototype.process = function (data) { - var options = this.outerContext.options; - - var rebaseOpts = { - absolute: options.explicitRoot, - relative: !options.explicitRoot && options.explicitTarget, - fromBase: options.relativeTo - }; - - if (!rebaseOpts.absolute && !rebaseOpts.relative) - return data; - - if (rebaseOpts.absolute && options.explicitTarget) - this.outerContext.warnings.push('Both \'root\' and output file given so rebasing URLs as absolute paths'); - - if (rebaseOpts.absolute) - rebaseOpts.toBase = path.resolve(options.root); - - if (rebaseOpts.relative) - rebaseOpts.toBase = path.resolve(options.target); - - if (!rebaseOpts.fromBase || !rebaseOpts.toBase) - return data; - - return rewriteUrls(data, rebaseOpts, this.outerContext); -}; - -module.exports = UrlRebase;