aboutsummaryrefslogtreecommitdiff
path: root/node_modules/relateurl/lib/parse/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/relateurl/lib/parse/index.js')
-rw-r--r--node_modules/relateurl/lib/parse/index.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/node_modules/relateurl/lib/parse/index.js b/node_modules/relateurl/lib/parse/index.js
new file mode 100644
index 000000000..9f3677818
--- /dev/null
+++ b/node_modules/relateurl/lib/parse/index.js
@@ -0,0 +1,58 @@
+"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
+};