Skip to content

Commit

Permalink
Merge pull request #13 from koss-null/1.0.5
Browse files Browse the repository at this point in the history
1.0.5
  • Loading branch information
koss-null committed Nov 23, 2023
2 parents 65efac8 + 538de9e commit 8e252b1
Show file tree
Hide file tree
Showing 49 changed files with 2,442 additions and 1,255 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.19
go-version: 1.21

- name: Test
run: make test
Expand All @@ -22,7 +22,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.19
go-version: 1.21
- uses: gwatts/go-coverage-action@v1
id: coverage
with:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,5 @@

# Dependency directories (remove the comment below to include it)
# vendor/

cover.cov
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ example:
go run ./example/main.go

test:
go test -race --parallel 8 -v ./...
go test -race -count=1 --parallel 8 ./...

get_coverage_pic:
gopherbadger -md="README.md,coverage.out"
206 changes: 174 additions & 32 deletions README.md

Large diffs are not rendered by default.

229 changes: 0 additions & 229 deletions cover.cov

This file was deleted.

Binary file modified coverage_badge.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
80 changes: 80 additions & 0 deletions example/main._go
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package main

import (
"fmt"

"github.com/koss-null/funcfrog/pkg/pipe"
)

type DomObj struct{ i int }

func GetUser(i int) (*DomObj, error) {
if i%2 != 0 {
return &DomObj{i}, nil
}
return nil, fmt.Errorf("%d user can't be found", i)
}

func EnrichUser(do *DomObj) (*DomObj, error) {
if do.i%3 == 0 {
return nil, fmt.Errorf("user can't be enriched %d", do.i)
}
return do, nil
}

type MyStruct struct{ Weight int }

func main() {
p := pipe.Slice([]int{1, 2, 3}).
Erase().
Map(func(x any) any {
i := *(x.(*int))
return &MyStruct{Weight: i}
}).Filter(func(x *any) bool {
return (*x).(*MyStruct).Weight > 10
})
ms := pipe.Collect[MyStruct](p).Parallel(10).Do()

getUserErr := make(chan error, 1)
handleGetUserErr := func(err error) {
getUserErr <- err
}
enrichUserErr := make(chan error, 1)
handleEnrichUserErr := func(err error) {
enrichUserErr <- err
}
go func() {
for err := range getUserErr {
fmt.Println("unable to get user", err)
}
}()
go func() {
for err := range enrichUserErr {
fmt.Println("unable to enrich user", err)
}
}()

y1, y2 := pipe.NewYeti(), pipe.NewYeti()
users := pipe.Func(func(i int) (*DomObj, bool) {
domObj, err := GetUser(i)
if err != nil {
y1.Yeet(err)
return nil, false
}
return domObj, true
}).Yeti(y1).
Snag(handleGetUserErr). // suppose we have some pre-defined handler
MapFilter(func(do *DomObj) (*DomObj, bool) {
enriched, err := EnrichUser(do)
if err != nil {
y2.Yeet(err)
return nil, false
}
return enriched, true
}).Yeti(y2).Snag(handleEnrichUserErr).
Gen(20).
Parallel(16).
Do()

fmt.Println(users)
}

0 comments on commit 8e252b1

Please sign in to comment.