Luis Figueiredo il y a 8 ans
Parent
commit
d9beb6fcce
4 fichiers modifiés avec 44 ajouts et 19 suppressions
  1. 19 5
      _example/main.go
  2. 15 4
      context.go
  3. 2 6
      sequencer.go
  4. 8 4
      tasker.go

+ 19 - 5
_example/main.go

@@ -1,18 +1,32 @@
 package main
 
-import "dev.hexasoftware.com/x/seq"
+import (
+	"log"
+
+	"dev.hexasoftware.com/hxs/prettylog"
+	"dev.hexasoftware.com/x/seq"
+)
 
 func main() {
+	prettylog.Global()
+	t := seq.NewTasker()
 
-	s := seq.NewNexter()
+	s := t.Task("RUN")
+	s.Add(func(s *seq.Context) error {
 
-	s.Next(func() error {
-		// Do whatever
+		log.Println("Do everything here")
+		s.Set("HELLO", 10)
 
 		return nil
 	})
-	s.Next(func() error {
 
+	t.Exec("RUN", 1)
+
+	s.Add(func(s *seq.Context) error {
+		log.Println("Exec param:", s.Param(0), "Var:HELLO", s.Get("HELLO"))
 		return nil
 	})
+
+	t.Exec("RUN", 1)
+
 }

+ 15 - 4
context.go

@@ -6,10 +6,10 @@ import (
 )
 
 type Context struct {
-	vars map[string]interface{}
-	ret  [][]interface{}
-
-	rep []string
+	vars   map[string]interface{}
+	params []interface{}
+	ret    [][]interface{}
+	rep    []string
 }
 
 func NewContext() *Context {
@@ -42,6 +42,17 @@ func (sc *Context) Get(name string, valPtr ...interface{}) interface{} {
 
 	return sc.vars[name]
 }
+func (sc *Context) Param(n uint, valPtr ...interface{}) interface{} {
+	if n > uint(len(sc.params)) {
+		return nil
+	}
+	if len(valPtr) > 0 {
+		pv := reflect.ValueOf(valPtr[0])
+		pv.Elem().Set(reflect.ValueOf(sc.params[n]))
+	}
+
+	return sc.params[n]
+}
 
 //Ret return the value from previous returns
 func (sc *Context) Ret(n, i int) interface{} {

+ 2 - 6
sequencer.go

@@ -23,13 +23,10 @@ type Entry struct {
 type Seq struct {
 	seq  []*Entry
 	last *Entry
-	vars map[string]interface{}
-
-	rep []string
 }
 
 func NewSeq() *Seq {
-	return &Seq{[]*Entry{}, nil, map[string]interface{}{}, nil}
+	return &Seq{[]*Entry{}, nil}
 }
 
 func (s *Seq) Add(params ...interface{}) *Seq {
@@ -87,9 +84,8 @@ func (s *Seq) Grab(grab ...interface{}) {
 
 func (s *Seq) Exec(eparam ...interface{}) error {
 	sCon := NewContext()
-	s.rep = []string{}
+	sCon.params = eparam
 	for _, e := range s.seq {
-
 		if e.seqFn != nil {
 			err := e.seqFn(sCon)
 			sCon.Log("E:", e.desc, "=>", err)

+ 8 - 4
tasker.go

@@ -10,11 +10,15 @@ func NewTasker() *Tasker {
 	return &Tasker{map[string]*Seq{}}
 }
 
-func (t *Tasker) Define(name string) *Seq {
-	s := NewSeq()
-	t.seq[name] = s
+func (t *Tasker) Task(name string) *Seq {
 
-	return s
+	v, ok := t.seq[name]
+	if !ok {
+		v = NewSeq()
+		t.seq[name] = v
+	}
+
+	return v
 }
 
 func (t *Tasker) Exec(name string, params ...interface{}) error {