mirror of https://github.com/minio/minio.git
Merge pull request #680 from harshavardhana/pr_out_rename_functions_for_their_purpose
This commit is contained in:
commit
795e48d492
|
@ -160,36 +160,36 @@ func (b bucket) ListObjects(prefix, marker, delimiter string, maxkeys int) ([]st
|
|||
for objectName := range bucketMetadata.Buckets[b.getBucketName()].BucketObjects {
|
||||
if strings.HasPrefix(objectName, strings.TrimSpace(prefix)) {
|
||||
if objectName > marker {
|
||||
objects = appendUniq(objects, objectName)
|
||||
objects = AppendU(objects, objectName)
|
||||
}
|
||||
}
|
||||
}
|
||||
if strings.TrimSpace(prefix) != "" {
|
||||
objects = removePrefix(objects, prefix)
|
||||
objects = TrimPrefix(objects, prefix)
|
||||
}
|
||||
var prefixes []string
|
||||
var filteredObjects []string
|
||||
if strings.TrimSpace(delimiter) != "" {
|
||||
filteredObjects = filterDelimited(objects, delimiter)
|
||||
prefixes = filterNotDelimited(objects, delimiter)
|
||||
prefixes = extractDelimited(prefixes, delimiter)
|
||||
prefixes = uniqueObjects(prefixes)
|
||||
filteredObjects = HasNoDelimiter(objects, delimiter)
|
||||
prefixes = HasDelimiter(objects, delimiter)
|
||||
prefixes = SplitDelimiter(prefixes, delimiter)
|
||||
prefixes = SortU(prefixes)
|
||||
} else {
|
||||
filteredObjects = objects
|
||||
}
|
||||
var results []string
|
||||
var commonPrefixes []string
|
||||
|
||||
for _, commonPrefix := range prefixes {
|
||||
commonPrefixes = AppendU(commonPrefixes, prefix+commonPrefix)
|
||||
}
|
||||
sort.Strings(filteredObjects)
|
||||
for _, objectName := range filteredObjects {
|
||||
if len(results) >= maxkeys {
|
||||
isTruncated = true
|
||||
break
|
||||
}
|
||||
results = appendUniq(results, prefix+objectName)
|
||||
}
|
||||
for _, commonPrefix := range prefixes {
|
||||
commonPrefixes = appendUniq(commonPrefixes, prefix+commonPrefix)
|
||||
results = AppendU(results, prefix+objectName)
|
||||
}
|
||||
sort.Strings(results)
|
||||
sort.Strings(commonPrefixes)
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
* Minimalist Object Storage, (C) 2015 Minio, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package donut
|
||||
|
||||
import (
|
||||
|
@ -5,7 +21,8 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
func appendUniq(slice []string, i string) []string {
|
||||
// AppendU append to an input slice if the element is unique and provides a new slice
|
||||
func AppendU(slice []string, i string) []string {
|
||||
for _, ele := range slice {
|
||||
if ele == i {
|
||||
return slice
|
||||
|
@ -14,17 +31,8 @@ func appendUniq(slice []string, i string) []string {
|
|||
return append(slice, i)
|
||||
}
|
||||
|
||||
func filterPrefix(objects []string, prefix string) []string {
|
||||
var results []string
|
||||
for _, object := range objects {
|
||||
if strings.HasPrefix(object, prefix) {
|
||||
results = append(results, object)
|
||||
}
|
||||
}
|
||||
return results
|
||||
}
|
||||
|
||||
func removePrefix(objects []string, prefix string) []string {
|
||||
// TrimPrefix trims off a prefix string from all the elements in a given slice
|
||||
func TrimPrefix(objects []string, prefix string) []string {
|
||||
var results []string
|
||||
for _, object := range objects {
|
||||
results = append(results, strings.TrimPrefix(object, prefix))
|
||||
|
@ -32,7 +40,8 @@ func removePrefix(objects []string, prefix string) []string {
|
|||
return results
|
||||
}
|
||||
|
||||
func filterDelimited(objects []string, delim string) []string {
|
||||
// HasNoDelimiter provides a new slice from an input slice which has elements without delimiter
|
||||
func HasNoDelimiter(objects []string, delim string) []string {
|
||||
var results []string
|
||||
for _, object := range objects {
|
||||
if !strings.Contains(object, delim) {
|
||||
|
@ -42,7 +51,8 @@ func filterDelimited(objects []string, delim string) []string {
|
|||
return results
|
||||
}
|
||||
|
||||
func filterNotDelimited(objects []string, delim string) []string {
|
||||
// HasDelimiter provides a new slice from an input slice which has elements with a delimiter
|
||||
func HasDelimiter(objects []string, delim string) []string {
|
||||
var results []string
|
||||
for _, object := range objects {
|
||||
if strings.Contains(object, delim) {
|
||||
|
@ -52,7 +62,8 @@ func filterNotDelimited(objects []string, delim string) []string {
|
|||
return results
|
||||
}
|
||||
|
||||
func extractDelimited(objects []string, delim string) []string {
|
||||
// SplitDelimiter provides a new slice from an input slice by splitting a delimiter
|
||||
func SplitDelimiter(objects []string, delim string) []string {
|
||||
var results []string
|
||||
for _, object := range objects {
|
||||
parts := strings.Split(object, delim)
|
||||
|
@ -61,7 +72,8 @@ func extractDelimited(objects []string, delim string) []string {
|
|||
return results
|
||||
}
|
||||
|
||||
func uniqueObjects(objects []string) []string {
|
||||
// SortU sort a slice in lexical order, removing duplicate elements
|
||||
func SortU(objects []string) []string {
|
||||
objectMap := make(map[string]string)
|
||||
for _, v := range objects {
|
||||
objectMap[v] = v
|
||||
|
|
Loading…
Reference in New Issue