From 1b1460c8d4fa358433c51fd5293fd1c79f32aeff Mon Sep 17 00:00:00 2001 From: "Gabriel A. Giovanini" Date: Mon, 1 Jul 2024 23:32:54 +0200 Subject: feat: Add pathing to the tree tab --- pkg/u/file.go | 21 +++++++++++++++++++++ pkg/u/list.go | 10 +++++----- pkg/u/list_test.go | 30 ------------------------------ 3 files changed, 26 insertions(+), 35 deletions(-) (limited to 'pkg/u') diff --git a/pkg/u/file.go b/pkg/u/file.go index cf86c75..fafe0fb 100644 --- a/pkg/u/file.go +++ b/pkg/u/file.go @@ -4,6 +4,7 @@ import ( "errors" "log/slog" "os" + "path/filepath" ) func FileExist(filename string) bool { @@ -19,3 +20,23 @@ func FileExist(filename string) bool { return false } } + +// This is just a slin wraper to make easier to compose path in the template +type Pathing string + +func Root() Pathing { + return "/" +} + +func (s Pathing) AddPath(p string) Pathing { + return Pathing(filepath.Join(string(s), p)) +} + +func (s Pathing) AddPaths(p []string) Pathing { + f := filepath.Join(p...) + return Pathing(filepath.Join(string(s), f)) +} + +func (s Pathing) Done() string { + return string(s) +} diff --git a/pkg/u/list.go b/pkg/u/list.go index 7271ef3..39d7b11 100644 --- a/pkg/u/list.go +++ b/pkg/u/list.go @@ -16,12 +16,12 @@ func FirstOrZero[T any](v []T) T { return v[0] } -func Map[T any, V any](ts []T, fun func(T) V) []V { - rs := make([]V, len(ts)) - for i := range ts { - rs[i] = fun(ts[i]) +func LastOrZero[T any](v []T) T { + if len(v) == 0 { + var zero T + return zero } - return rs + return v[len(v)-1] } func ChunkBy[T any](items []T, chunkSize int) [][]T { diff --git a/pkg/u/list_test.go b/pkg/u/list_test.go index 3a856b9..805a209 100644 --- a/pkg/u/list_test.go +++ b/pkg/u/list_test.go @@ -3,7 +3,6 @@ package u import ( - "strconv" "testing" "github.com/google/go-cmp/cmp" @@ -130,32 +129,3 @@ func TestFirstOrZero(t *testing.T) { }) } } - -func TestMap(t *testing.T) { - testCases := []struct { - name string - in []int - out []string - }{ - { - name: "empty", - in: []int{}, - out: []string{}, - }, - { - name: "not empty", - in: []int{1, 2, 3}, - out: []string{"1", "2", "3"}, - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - out := Map(tc.in, func(v int) string { return strconv.Itoa(v) }) - - if diff := cmp.Diff(tc.out, out); diff != "" { - t.Errorf("Map error:\n%s", diff) - } - }) - } -} -- cgit v1.2.3