26 lines
		
	
	
		
			597 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			597 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| module.exports = function (url, options) {
 | |
|   if (!options) {
 | |
|     options = {};
 | |
|   }
 | |
|   if (!url) {
 | |
|     return url;
 | |
|   }
 | |
|   url = String(url.__esModule ? url.default : url);
 | |
| 
 | |
|   // If url is already wrapped in quotes, remove them
 | |
|   if (/^['"].*['"]$/.test(url)) {
 | |
|     url = url.slice(1, -1);
 | |
|   }
 | |
|   if (options.hash) {
 | |
|     url += options.hash;
 | |
|   }
 | |
| 
 | |
|   // Should url be wrapped?
 | |
|   // See https://drafts.csswg.org/css-values-3/#urls
 | |
|   if (/["'() \t\n]|(%20)/.test(url) || options.needQuotes) {
 | |
|     return "\"".concat(url.replace(/"/g, '\\"').replace(/\n/g, "\\n"), "\"");
 | |
|   }
 | |
|   return url;
 | |
| }; |