MCPcopy
hub / github.com/AlistGo/alist / getPathCommonAncestor

Function getPathCommonAncestor

drivers/github/util.go:60–96  ·  view source on GitHub ↗

Example input: a = /aaa/bbb/ccc b = /aaa/b11/ddd/ccc Output: ancestor = /aaa aChildName = bbb bChildName = b11 aRest = bbb/ccc bRest = b11/ddd/ccc

(a, b string)

Source from the content-addressed store, hash-verified

58// aRest = bbb/ccc
59// bRest = b11/ddd/ccc
60func getPathCommonAncestor(a, b string) (ancestor, aChildName, bChildName, aRest, bRest string) {
61 a = utils.FixAndCleanPath(a)
62 b = utils.FixAndCleanPath(b)
63 idx := 1
64 for idx < len(a) && idx < len(b) {
65 if a[idx] != b[idx] {
66 break
67 }
68 idx++
69 }
70 aNextIdx := idx
71 for aNextIdx < len(a) {
72 if a[aNextIdx] == '/' {
73 break
74 }
75 aNextIdx++
76 }
77 bNextIdx := idx
78 for bNextIdx < len(b) {
79 if b[bNextIdx] == '/' {
80 break
81 }
82 bNextIdx++
83 }
84 for idx > 0 {
85 if a[idx] == '/' {
86 break
87 }
88 idx--
89 }
90 ancestor = utils.FixAndCleanPath(a[:idx])
91 aChildName = a[idx+1 : aNextIdx]
92 bChildName = b[idx+1 : bNextIdx]
93 aRest = a[idx+1:]
94 bRest = b[idx+1:]
95 return ancestor, aChildName, bChildName, aRest, bRest
96}
97
98func getUsername(ctx context.Context) string {
99 user, ok := ctx.Value("user").(*model.User)

Callers 1

MoveMethod · 0.85

Calls 1

FixAndCleanPathFunction · 0.92

Tested by

no test coverage detected