| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | 
							- "use strict";
 
- var constants  = require("./constants");
 
- var formatUrl  = require("./format");
 
- var getOptions = require("./options");
 
- var objUtils   = require("./util/object");
 
- var parseUrl   = require("./parse");
 
- var relateUrl  = require("./relate");
 
- function RelateUrl(from, options)
 
- {
 
- 	this.options = getOptions(options,
 
- 	{
 
- 		defaultPorts: {ftp:21, http:80, https:443},
 
- 		directoryIndexes: ["index.html"],
 
- 		ignore_www: false,
 
- 		output: RelateUrl.SHORTEST,
 
- 		rejectedSchemes: ["data","javascript","mailto"],
 
- 		removeAuth: false,
 
- 		removeDirectoryIndexes: true,
 
- 		removeEmptyQueries: false,
 
- 		removeRootTrailingSlash: true,
 
- 		schemeRelative: true,
 
- 		site: undefined,
 
- 		slashesDenoteHost: true
 
- 	});
 
- 	
 
- 	this.from = parseUrl.from(from, this.options, null);
 
- }
 
- /*
 
- 	Usage: instance=new RelateUrl(); instance.relate();
 
- */
 
- RelateUrl.prototype.relate = function(from, to, options)
 
- {
 
- 	// relate(to,options)
 
- 	if ( objUtils.isPlainObject(to) )
 
- 	{
 
- 		options = to;
 
- 		to = from;
 
- 		from = null;
 
- 	}
 
- 	// relate(to)
 
- 	else if (!to)
 
- 	{
 
- 		to = from;
 
- 		from = null;
 
- 	}
 
- 	
 
- 	options = getOptions(options, this.options);
 
- 	from = from || options.site;
 
- 	from = parseUrl.from(from, options, this.from);
 
- 	
 
- 	if (!from || !from.href)
 
- 	{
 
- 		throw new Error("from value not defined.");
 
- 	}
 
- 	else if (from.extra.hrefInfo.minimumPathOnly)
 
- 	{
 
- 		throw new Error("from value supplied is not absolute: "+from.href);
 
- 	}
 
- 	
 
- 	to = parseUrl.to(to, options);
 
- 	
 
- 	if (to.valid===false) return to.href;
 
- 	
 
- 	to = relateUrl(from, to, options);
 
- 	to = formatUrl(to, options);
 
- 	
 
- 	return to;
 
- }
 
- /*
 
- 	Usage: RelateUrl.relate();
 
- */
 
- RelateUrl.relate = function(from, to, options)
 
- {
 
- 	return new RelateUrl().relate(from, to, options);
 
- }
 
- // Make constants accessible from API
 
- objUtils.shallowMerge(RelateUrl, constants);
 
- module.exports = RelateUrl;
 
 
  |