| "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 |
| }; |