[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)
*/
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');
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;
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);
--- /dev/null
+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;
+++ /dev/null
-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;