59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var hrefInfo   = require("./hrefInfo");
 | |
| var parseHost  = require("./host");
 | |
| var parsePath  = require("./path");
 | |
| var parsePort  = require("./port");
 | |
| var parseQuery = require("./query");
 | |
| var parseUrlString = require("./urlstring");
 | |
| var pathUtils      = require("../util/path");
 | |
| 
 | |
| 
 | |
| 
 | |
| function parseFromUrl(url, options, fallback)
 | |
| {
 | |
| 	if (url)
 | |
| 	{
 | |
| 		var urlObj = parseUrl(url, options);
 | |
| 		
 | |
| 		// Because the following occurs in the relate stage for "to" URLs,
 | |
| 		// such had to be mostly duplicated here
 | |
| 		
 | |
| 		var pathArray = pathUtils.resolveDotSegments(urlObj.path.absolute.array);
 | |
| 		
 | |
| 		urlObj.path.absolute.array  = pathArray;
 | |
| 		urlObj.path.absolute.string = "/" + pathUtils.join(pathArray);
 | |
| 		
 | |
| 		return urlObj;
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		return fallback;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| function parseUrl(url, options)
 | |
| {
 | |
| 	var urlObj = parseUrlString(url, options);
 | |
| 	
 | |
| 	if (urlObj.valid===false) return urlObj;
 | |
| 	
 | |
| 	parseHost(urlObj, options);
 | |
| 	parsePort(urlObj, options);
 | |
| 	parsePath(urlObj, options);
 | |
| 	parseQuery(urlObj, options);
 | |
| 	hrefInfo(urlObj);
 | |
| 	
 | |
| 	return urlObj;
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| module.exports =
 | |
| {
 | |
| 	from: parseFromUrl,
 | |
| 	to:   parseUrl
 | |
| };
 |