aboutsummaryrefslogtreecommitdiff
path: root/node_modules/relateurl/lib/index.js
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/relateurl/lib/index.js
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/relateurl/lib/index.js')
-rw-r--r--node_modules/relateurl/lib/index.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/node_modules/relateurl/lib/index.js b/node_modules/relateurl/lib/index.js
new file mode 100644
index 00000000..714237d5
--- /dev/null
+++ b/node_modules/relateurl/lib/index.js
@@ -0,0 +1,94 @@
+"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;