MCPcopy
hub / github.com/OpenListTeam/OpenList / getPathCommonAncestor

Function getPathCommonAncestor

drivers/github/util.go:61–97  ·  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

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

Callers 1

MoveMethod · 0.85

Calls 1

FixAndCleanPathFunction · 0.92

Tested by

no test coverage detected