main.go 1009 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. "log"
  6. "dev.hexasoftware.com/x/seq"
  7. "dev.hexasoftware.com/hxs/prettylog"
  8. )
  9. type Xpto struct {
  10. ID string
  11. }
  12. func GenXpto(i int) (*Xpto, error) {
  13. log.Println("Generating xpto")
  14. return &Xpto{fmt.Sprintf("ID:%d", i)}, nil
  15. }
  16. func AnotherRandomFunc() error {
  17. return errors.New("I have a error")
  18. }
  19. func NextXpto(id string) error {
  20. log.Println("The id was:", id)
  21. return nil
  22. }
  23. func main() {
  24. prettylog.Global()
  25. s := seq.New()
  26. log.Println("Adding GenXPto")
  27. val := &Xpto{}
  28. s.Add(GenXpto, 10).Grab(&val)
  29. s.Add(func() error { return NextXpto(val.ID) })
  30. s.Add(func(p *Xpto) error { return NextXpto(p.ID) }, seq.SeqReturn(0, 0))
  31. s.Add(NextXpto, seq.ExecParam(0))
  32. s.Exec("abc")
  33. s2 := seq.New()
  34. s2.Add("Generate Xpto",
  35. func(s *seq.Context) error {
  36. xpto, err := GenXpto(10)
  37. s.Set("xpto", xpto)
  38. return err
  39. })
  40. s2.Add("Consume xpto",
  41. func(s *seq.Context) error {
  42. var v *Xpto = s.Get("xpto").(*Xpto)
  43. return NextXpto(v.ID)
  44. })
  45. s2.Exec()
  46. }