aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/unknwon/com/slice.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/unknwon/com/slice.go')
-rw-r--r--vendor/github.com/unknwon/com/slice.go87
1 files changed, 87 insertions, 0 deletions
diff --git a/vendor/github.com/unknwon/com/slice.go b/vendor/github.com/unknwon/com/slice.go
new file mode 100644
index 0000000000..c3c9ab2e72
--- /dev/null
+++ b/vendor/github.com/unknwon/com/slice.go
@@ -0,0 +1,87 @@
+// Copyright 2013 com authors
+//
+// 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 com
+
+import (
+ "strings"
+)
+
+// AppendStr appends string to slice with no duplicates.
+func AppendStr(strs []string, str string) []string {
+ for _, s := range strs {
+ if s == str {
+ return strs
+ }
+ }
+ return append(strs, str)
+}
+
+// CompareSliceStr compares two 'string' type slices.
+// It returns true if elements and order are both the same.
+func CompareSliceStr(s1, s2 []string) bool {
+ if len(s1) != len(s2) {
+ return false
+ }
+
+ for i := range s1 {
+ if s1[i] != s2[i] {
+ return false
+ }
+ }
+
+ return true
+}
+
+// CompareSliceStrU compares two 'string' type slices.
+// It returns true if elements are the same, and ignores the order.
+func CompareSliceStrU(s1, s2 []string) bool {
+ if len(s1) != len(s2) {
+ return false
+ }
+
+ for i := range s1 {
+ for j := len(s2) - 1; j >= 0; j-- {
+ if s1[i] == s2[j] {
+ s2 = append(s2[:j], s2[j+1:]...)
+ break
+ }
+ }
+ }
+ if len(s2) > 0 {
+ return false
+ }
+ return true
+}
+
+// IsSliceContainsStr returns true if the string exists in given slice, ignore case.
+func IsSliceContainsStr(sl []string, str string) bool {
+ str = strings.ToLower(str)
+ for _, s := range sl {
+ if strings.ToLower(s) == str {
+ return true
+ }
+ }
+ return false
+}
+
+// IsSliceContainsInt64 returns true if the int64 exists in given slice.
+func IsSliceContainsInt64(sl []int64, i int64) bool {
+ for _, s := range sl {
+ if s == i {
+ return true
+ }
+ }
+ return false
+}