MCPcopy
hub / github.com/rclone/rclone / transformPathSegment

Function transformPathSegment

lib/transform/transform.go:124–239  ·  view source on GitHub ↗

transformPathSegment transforms one path segment (or really any string) according to the chosen TransformAlgo. It assumes path separators have already been trimmed.

(s string, t transform)

Source from the content-addressed store, hash-verified

122// transformPathSegment transforms one path segment (or really any string) according to the chosen TransformAlgo.
123// It assumes path separators have already been trimmed.
124func transformPathSegment(s string, t transform) (string, error) {
125 switch t.key {
126 case ConvNone:
127 return s, nil
128 case ConvToNFC:
129 return norm.NFC.String(s), nil
130 case ConvToNFD:
131 return norm.NFD.String(s), nil
132 case ConvToNFKC:
133 return norm.NFKC.String(s), nil
134 case ConvToNFKD:
135 return norm.NFKD.String(s), nil
136 case ConvBase64Encode:
137 return base64.URLEncoding.EncodeToString([]byte(s)), nil // URLEncoding to avoid slashes
138 case ConvBase64Decode:
139 if s == ".DS_Store" {
140 return s, nil
141 }
142 b, err := base64.URLEncoding.DecodeString(s)
143 if err != nil {
144 fs.Errorf(s, "base64 error")
145 }
146 return string(b), err
147 case ConvFindReplace:
148 split := strings.Split(t.value, ":")
149 if len(split) != 2 {
150 return s, fmt.Errorf("wrong number of values: %v", t.value)
151 }
152 return strings.ReplaceAll(s, split[0], split[1]), nil
153 case ConvPrefix:
154 return t.value + s, nil
155 case ConvSuffix:
156 return s + t.value, nil
157 case ConvSuffixKeepExtension:
158 return SuffixKeepExtension(s, t.value), nil
159 case ConvTrimPrefix:
160 return strings.TrimPrefix(s, t.value), nil
161 case ConvTrimSuffix:
162 return strings.TrimSuffix(s, t.value), nil
163 case ConvTruncate:
164 max, err := strconv.Atoi(t.value)
165 if err != nil {
166 return s, err
167 }
168 return truncateChars(s, max, false), nil
169 case ConvTruncateKeepExtension:
170 max, err := strconv.Atoi(t.value)
171 if err != nil {
172 return s, err
173 }
174 return truncateChars(s, max, true), nil
175 case ConvTruncateBytes:
176 max, err := strconv.Atoi(t.value)
177 if err != nil {
178 return s, err
179 }
180 return truncateBytes(s, max, false)
181 case ConvTruncateBytesKeepExtension:

Callers 1

transformPathFunction · 0.85

Calls 15

SetMethod · 0.95
EncodeMethod · 0.95
DecodeMethod · 0.95
ErrorfFunction · 0.92
SuffixKeepExtensionFunction · 0.85
truncateCharsFunction · 0.85
truncateBytesFunction · 0.85
encodeWithReplacementFunction · 0.85
charmapByIDFunction · 0.85
toASCIIFunction · 0.85
AppyTimeGlobsFunction · 0.85
mapperFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…