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