source: imaps-frontend/node_modules/relateurl/lib/parse/path.js@ 79a0317

main
Last change on this file since 79a0317 was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 4 days ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 1.6 KB
Line 
1"use strict";
2
3function isDirectoryIndex(resource, options)
4{
5 var verdict = false;
6
7 options.directoryIndexes.every( function(index)
8 {
9 if (index === resource)
10 {
11 verdict = true;
12 return false;
13 }
14
15 return true;
16 });
17
18 return verdict;
19}
20
21
22
23function parsePath(urlObj, options)
24{
25 var path = urlObj.path.absolute.string;
26
27 if (path)
28 {
29 var lastSlash = path.lastIndexOf("/");
30
31 if (lastSlash > -1)
32 {
33 if (++lastSlash < path.length)
34 {
35 var resource = path.substr(lastSlash);
36
37 if (resource!=="." && resource!=="..")
38 {
39 urlObj.resource = resource;
40 path = path.substr(0, lastSlash);
41 }
42 else
43 {
44 path += "/";
45 }
46 }
47
48 urlObj.path.absolute.string = path;
49 urlObj.path.absolute.array = splitPath(path);
50 }
51 else if (path==="." || path==="..")
52 {
53 // "..?var", "..#anchor", etc ... not "..index.html"
54 path += "/";
55
56 urlObj.path.absolute.string = path;
57 urlObj.path.absolute.array = splitPath(path);
58 }
59 else
60 {
61 // Resource-only
62 urlObj.resource = path;
63 urlObj.path.absolute.string = null;
64 }
65
66 urlObj.extra.resourceIsIndex = isDirectoryIndex(urlObj.resource, options);
67 }
68 // Else: query/hash-only or empty
69}
70
71
72
73function splitPath(path)
74{
75 // TWEAK :: condition only for speed optimization
76 if (path !== "/")
77 {
78 var cleaned = [];
79
80 path.split("/").forEach( function(dir)
81 {
82 // Cleanup -- splitting "/dir/" becomes ["","dir",""]
83 if (dir !== "")
84 {
85 cleaned.push(dir);
86 }
87 });
88
89 return cleaned;
90 }
91 else
92 {
93 // Faster to skip the above block and just create an array
94 return [];
95 }
96}
97
98
99
100module.exports = parsePath;
Note: See TracBrowser for help on using the repository browser.