diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index ea15f39..42cd86d 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -10,7 +10,7 @@ jobs: fetch-depth: 2 - uses: actions/setup-go@v2 with: - go-version: '1.18' + go-version: '1.20' - name: Run tests with coverage run: go test -coverprofile=coverage.out -covermode=count ./... - uses: codecov/codecov-action@v2 @@ -20,4 +20,4 @@ jobs: flags: unittests name: codecov-umbrella fail_ci_if_error: true - verbose: true \ No newline at end of file + verbose: true diff --git a/Makefile b/Makefile index 074cbde..5baa33d 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ scan: scan-config: trivy config . +.PHONY: docs docs: cd docs && hugo server -D diff --git a/docs/content/_index.md b/docs/content/_index.md index f717fe2..cbaaacb 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -9,10 +9,9 @@ title: _Underscore ![underscore](https://socialify.git.ci/rjNemo/underscore/image?description=1&font=KoHo&language=1&logo=https%3A%2F%2Fraw.githubusercontent.com%2FrjNemo%2Funderscore%2Fmain%2Fdocs%2Fstatic%2Flogo.png&owner=1&pattern=Floating%20Cogs&stargazers=1&theme=Dark) - `underscore` is a `Go` library providing useful functional programming helpers without extending any built-in objects. -It is mostly a port from the `underscore.js` library based on generics brought by `go1.18`. +It is mostly a port from the `underscore.js` library based on generics available from `go1.18`. ## Quick Start diff --git a/docs/content/collections/groupby.md b/docs/content/collections/groupby.md new file mode 100644 index 0000000..04cb548 --- /dev/null +++ b/docs/content/collections/groupby.md @@ -0,0 +1,21 @@ +--- +title: "Group by" +date: 2023-06-07T00:49:56+02:00 +--- + +GroupBy splits a slice into a map[K][]V grouped by the result of the iterator function. + +```go +package main + +import ( + "fmt" + u "github.com/rjNemo/underscore" +) + +func main() { + nums := []float64{1.3, 2.1, 2.4} + groupingFunc := func(n float64) int { return int(math.Floor(n)) } + res := u.GroupBy(nums, groupingFunc) // { 1: {1.3}, 2: {2.1, 2.4}} +} +``` diff --git a/go.mod b/go.mod index 371f6eb..a75f661 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,14 @@ module github.com/rjNemo/underscore -go 1.18 +go 1.20 require ( - github.com/stretchr/testify v1.7.0 - golang.org/x/exp v0.0.0-20220314205449-43aec2f8a4e7 + github.com/stretchr/testify v1.8.4 + golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 99f8a6a..925e02e 100644 --- a/go.sum +++ b/go.sum @@ -1,15 +1,12 @@ -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/exp v0.0.0-20220314205449-43aec2f8a4e7 h1:jynE66seADJbyWMUdeOyVTvPtBZt7L6LJHupGwxPZRM= -golang.org/x/exp v0.0.0-20220314205449-43aec2f8a4e7/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=