Cleans up url rebase code getting rid of unnecessary state.
authorJakub Pawlowicz <contact@jakubpawlowicz.com>
Tue, 21 Apr 2015 17:23:47 +0000 (18:23 +0100)
committerJakub Pawlowicz <contact@jakubpawlowicz.com>
Tue, 21 Apr 2015 17:23:47 +0000 (18:23 +0100)
History.md
lib/clean.js
lib/images/rebase-urls.js [new file with mode: 0644]
lib/images/url-rebase.js [deleted file]

index b1f95ca..8915d28 100644 (file)
@@ -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)
index c6917b8..9c410cb 100644 (file)
@@ -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 (file)
index 0000000..f585e4b
--- /dev/null
@@ -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 (file)
index 193c7e9..0000000
+++ /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;