feature: added file name utils
parent
e85baa72f6
commit
33bc425e90
|
@ -6,3 +6,10 @@ func NewArrayList[T any]() *ArrayList[T] {
|
||||||
size: 0,
|
size: 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewArrayListWithContent[T any](content ...T) *ArrayList[T] {
|
||||||
|
result := NewArrayList[T]()
|
||||||
|
result.AddAllS(&content)
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package array_list
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (self *ArrayList[T]) Add(element T) {
|
func (self *ArrayList[T]) Add(element T) {
|
||||||
|
@ -98,6 +99,22 @@ func (self *ArrayList[T]) AddAll(list *ArrayList[T]) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *ArrayList[T]) AddAllS(slice *[]T) {
|
||||||
|
for _, v := range *slice {
|
||||||
|
self.Add(v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *ArrayList[T]) SetAll(list *ArrayList[T]) {
|
||||||
|
self.Clear()
|
||||||
|
self.AddAll(list)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *ArrayList[T]) SetAllS(list *[]T) {
|
||||||
|
self.Clear()
|
||||||
|
self.AddAllS(list)
|
||||||
|
}
|
||||||
|
|
||||||
func (self *ArrayList[T]) Any(test func(T) bool) bool {
|
func (self *ArrayList[T]) Any(test func(T) bool) bool {
|
||||||
for index, value := range self.content {
|
for index, value := range self.content {
|
||||||
if index >= self.size {
|
if index >= self.size {
|
||||||
|
@ -148,3 +165,28 @@ func (self *ArrayList[T]) IsEmpty() bool {
|
||||||
func (self *ArrayList[T]) String() string {
|
func (self *ArrayList[T]) String() string {
|
||||||
return fmt.Sprintf("%v", self.content)
|
return fmt.Sprintf("%v", self.content)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *ArrayList[T]) Clear() {
|
||||||
|
self.content = self.content[:0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *ArrayList[T]) GetLast() T {
|
||||||
|
if self.IsEmpty() {
|
||||||
|
panic(any(errors.New("trying to get last element from empty array list")))
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.Get(self.Size() - 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *ArrayList[T]) GetFirst() T {
|
||||||
|
if self.IsEmpty() {
|
||||||
|
panic(any(errors.New("trying to get first element from empty array list")))
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.Get(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *ArrayList[T]) ToSlice() []T {
|
||||||
|
result := slices.Clone(self.content)[:self.size]
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package files
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path/filepath"
|
||||||
|
"slices"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"git.tswf.io/incredible-go/incredible-go-core/pkg/collections/array_list"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetSimpleName(filePath string) string {
|
||||||
|
return SplitFileName(filePath).GetLast()
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetExtension(filePath string) string {
|
||||||
|
split := strings.Split(filePath, ".")
|
||||||
|
return split[len(split)-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSimpleNameWithoutExtension(filePath string) string {
|
||||||
|
simpleName := GetSimpleName(filePath)
|
||||||
|
split := slices.DeleteFunc(strings.Split(simpleName, "."), func(s string) bool {
|
||||||
|
return s == ""
|
||||||
|
})
|
||||||
|
|
||||||
|
if len(split) == 1 {
|
||||||
|
return filePath
|
||||||
|
}
|
||||||
|
|
||||||
|
return filepath.Join(split[:len(split)-1]...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SplitFileName(filePath string) *array_list.ArrayList[string] {
|
||||||
|
filePath = filepath.ToSlash(filePath)
|
||||||
|
split := strings.Split(filePath, "/")
|
||||||
|
|
||||||
|
return array_list.NewArrayListWithContent[string](split...)
|
||||||
|
}
|
Loading…
Reference in New Issue