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.
		
		
		
		
		
			
		
			
				
					
					
						
							67 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							67 lines
						
					
					
						
							1.0 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
var pathUtils = require("../util/path"); | 
						|
 | 
						|
 | 
						|
 | 
						|
/* | 
						|
	Get a path relative to the site path. | 
						|
*/ | 
						|
function relatePath(absolutePath, siteAbsolutePath) | 
						|
{ | 
						|
	var relativePath = []; | 
						|
	 | 
						|
	// At this point, it's related to the host/port | 
						|
	var related = true; | 
						|
	var parentIndex = -1; | 
						|
	 | 
						|
	// Find parents | 
						|
	siteAbsolutePath.forEach( function(siteAbsoluteDir, i) | 
						|
	{ | 
						|
		if (related) | 
						|
		{ | 
						|
			if (absolutePath[i] !== siteAbsoluteDir) | 
						|
			{ | 
						|
				related = false; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				parentIndex = i; | 
						|
			} | 
						|
		} | 
						|
		 | 
						|
		if (!related) | 
						|
		{ | 
						|
			// Up one level | 
						|
			relativePath.push(".."); | 
						|
		} | 
						|
	}); | 
						|
	 | 
						|
	// Form path | 
						|
	absolutePath.forEach( function(dir, i) | 
						|
	{ | 
						|
		if (i > parentIndex) | 
						|
		{ | 
						|
			relativePath.push(dir); | 
						|
		} | 
						|
	}); | 
						|
	 | 
						|
	return relativePath; | 
						|
} | 
						|
 | 
						|
 | 
						|
 | 
						|
function relativize(urlObj, siteUrlObj, options) | 
						|
{ | 
						|
	if (urlObj.extra.relation.minimumScheme) | 
						|
	{ | 
						|
		var pathArray = relatePath(urlObj.path.absolute.array, siteUrlObj.path.absolute.array); | 
						|
		 | 
						|
		urlObj.path.relative.array  = pathArray; | 
						|
		urlObj.path.relative.string = pathUtils.join(pathArray); | 
						|
	} | 
						|
} | 
						|
 | 
						|
 | 
						|
 | 
						|
module.exports = relativize;
 | 
						|
 |