Move string list utility functions to android package
Test: m checkbuild
Change-Id: I50a7ccf9fd7ed82b688e3eb90489c0bc0af33287
diff --git a/android/util.go b/android/util.go
index 29bb9b1..854d782 100644
--- a/android/util.go
+++ b/android/util.go
@@ -54,7 +54,7 @@
return s
}
-func indexList(s string, list []string) int {
+func IndexList(s string, list []string) int {
for i, l := range list {
if l == s {
return i
@@ -64,11 +64,11 @@
return -1
}
-func inList(s string, list []string) bool {
- return indexList(s, list) != -1
+func InList(s string, list []string) bool {
+ return IndexList(s, list) != -1
}
-func prefixInList(s string, list []string) bool {
+func PrefixInList(s string, list []string) bool {
for _, prefix := range list {
if strings.HasPrefix(s, prefix) {
return true
@@ -77,6 +77,37 @@
return false
}
+func FilterList(list []string, filter []string) (remainder []string, filtered []string) {
+ for _, l := range list {
+ if InList(l, filter) {
+ filtered = append(filtered, l)
+ } else {
+ remainder = append(remainder, l)
+ }
+ }
+
+ return
+}
+
+func RemoveListFromList(list []string, filter_out []string) (result []string) {
+ result = make([]string, 0, len(list))
+ for _, l := range list {
+ if !InList(l, filter_out) {
+ result = append(result, l)
+ }
+ }
+ return
+}
+
+func RemoveFromList(s string, list []string) (bool, []string) {
+ i := IndexList(s, list)
+ if i != -1 {
+ return true, append(list[:i], list[i+1:]...)
+ } else {
+ return false, list
+ }
+}
+
// FirstUniqueStrings returns all unique elements of a slice of strings, keeping the first copy of
// each. It modifies the slice contents in place, and returns a subslice of the original slice.
func FirstUniqueStrings(list []string) []string {