From c0d7adb1a1b28b6b1de9ccd95d4963a8342ccdbc Mon Sep 17 00:00:00 2001 From: ayyansea Date: Fri, 15 Nov 2024 23:15:00 +0300 Subject: feat: add Filters --- util/split/split.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 util/split/split.go (limited to 'util/split/split.go') diff --git a/util/split/split.go b/util/split/split.go new file mode 100644 index 0000000..2fc29db --- /dev/null +++ b/util/split/split.go @@ -0,0 +1,45 @@ +package split + +import ( + "strings" +) + +func checkArrayElementsEmpty(array []string) bool { + for _, str := range array { + if str != "" { + return false + } + } + return true +} + +func NewArrayWithSplit(initialArray []string, index int, token string, delimeter string) (result []string) { + split := strings.Split(token, delimeter) + splitLength := len(split) + + /* + When a token only consists of delimeter * N (N >= 0), + the resulting split consists of N empty elements. + Here we check if it is so and essentialy remove that token + from resulting array. + */ + + splitIsEmpty := checkArrayElementsEmpty(split) + if splitIsEmpty { + result = append(initialArray[:index], initialArray[index+1:]...) + return result + } + + if splitLength > 1 { + if split[splitLength-1] == "" { + split = split[:splitLength-1] + } + + result = append(initialArray[:index], append(split, initialArray[index+1:]...)...) + } + if splitLength == 1 { + result = initialArray + } + + return result +} -- cgit v1.2.3