diff options
Diffstat (limited to 'pkg/u')
| -rw-r--r-- | pkg/u/file.go | 21 | ||||
| -rw-r--r-- | pkg/u/list.go | 10 | ||||
| -rw-r--r-- | pkg/u/list_test.go | 30 | 
3 files changed, 26 insertions, 35 deletions
| 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) -			} -		}) -	} -} | 
