You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					59 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					59 lines
				
				1.1 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								"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
							 | 
						||
| 
								 | 
							
								};
							 |