本文整理汇总了Golang中github.com/gocircuit/escher/kit/plumb.NewEyeCognizer函数的典型用法代码示例。如果您正苦于以下问题:Golang NewEyeCognizer函数的具体用法?Golang NewEyeCognizer怎么用?Golang NewEyeCognizer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewEyeCognizer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Materialize
func (x Process) Materialize() be.Reflex {
p := &process{
spawn: make(chan interface{}),
}
reflex, _ := plumb.NewEyeCognizer(p.cognize, "Command", "Spawn", "Exit", "IO")
return reflex
}
示例2: Materialize
func (Strobe) Materialize() be.Reflex {
x := &strobe{
when: make(chan interface{}, 1), // whens and charges cannot be out of order by more than one slot
charge: make(chan interface{}, 1),
}
reflex, _ := plumb.NewEyeCognizer(x.Cognize, "Charge", "When", "Strobe")
return reflex
}
示例3: MaterializeWriteTo
func MaterializeWriteTo(w io.Writer) be.Reflex {
x := &writerTo{
WriteCloser: kitio.SovereignWriter(w),
}
reflex, eye := plumb.NewEyeCognizer(x.cognize, "_")
go eye.Show("_", x.WriteCloser)
return reflex
}
示例4: MaterializeReadFrom
func MaterializeReadFrom(w io.Reader) be.Reflex {
x := &readFrom{
ReadCloser: kitio.SovereignReader(w),
}
reflex, eye := plumb.NewEyeCognizer(x.cognize, "_")
go eye.Show("_", x.ReadCloser)
return reflex
}
示例5: Materialize
func (Exit) Materialize() be.Reflex {
reflex, _ := plumb.NewEyeCognizer(
func(eye *plumb.Eye, valve string, value interface{}) {
os.Exit(value.(int))
},
"_",
)
return reflex
}
示例6: Materialize
func (Memory) Materialize() be.Reflex {
h := &memory{
focus: make(chan []interface{}),
learn: make(chan *eu.Circuit),
recall: make(chan []interface{}),
}
reflex, eye := plumb.NewEyeCognizer(h.Cognize, "Focus", "Learn", "Recall", "Use")
go h.loop(eye)
return reflex
}
示例7: Materialize
func (See) Materialize() be.Reflex {
reflex, _ := plumb.NewEyeCognizer(
func(eye *plumb.Eye, dvalve string, dvalue interface{}) {
if dvalve != "Source" {
return
}
eye.Show("Seen", es.SeeCircuit(es.NewSrcString(plumb.AsString(dvalue))))
},
"Source", "Seen",
)
return reflex
}
示例8: Materialize
func (Lookup) Materialize() be.Reflex {
reflex, _ := plumb.NewEyeCognizer(
func(eye *plumb.Eye, dvalve string, dvalue interface{}) {
if dvalve != "Address" {
return
}
_, r := faculty.Root.LookupAddress(dvalue.(string))
eye.Show("Circuit", r.(Circuit))
},
"Address", "Circuit",
)
return reflex
}
示例9: Materialize
func (Understand) Materialize() be.Reflex {
reflex, _ := plumb.NewEyeCognizer(
func(eye *plumb.Eye, dvalve string, dvalue interface{}) {
if dvalve != "Seen" {
return
}
switch t := dvalue.(type) {
case *es.Circuit:
eye.Show("Understood", eu.Understand(t))
}
panic("nil or unknown seen")
},
"Seen", "Understood",
)
return reflex
}
示例10: Materialize
func (MergeBlend) Materialize() be.Reflex {
reflex, _ := plumb.NewEyeCognizer(
func(eye *plumb.Eye, valve string, value interface{}) {
if valve != "XYZ" {
return
}
xyz := value.(Circuit)
var w bytes.Buffer
w.WriteString(flatten(xyz.StringAt("X")))
w.WriteString(flatten(xyz.StringAt("Y")))
w.WriteString(flatten(xyz.StringAt("Z")))
eye.Show("_", w.String())
},
"XYZ", "_",
)
return reflex
}
示例11: Materialize
func (FormBlend) Materialize() be.Reflex {
reflex, _ := plumb.NewEyeCognizer(
func(eye *plumb.Eye, valve string, value interface{}) {
if valve != "FormData" {
return
}
fd := value.(Circuit)
t, err := template.New("").Parse(fd.StringAt("Form"))
if err != nil {
panic(err)
}
var w bytes.Buffer
if err = t.Execute(&w, fd.At("Data")); err != nil {
panic(err)
}
eye.Show("_", w.String())
},
"FormData", "_",
)
return reflex
}
示例12: Materialize
func (d Dir) Materialize() be.Reflex {
x := dir(d.dir)
reflex, _ := plumb.NewEyeCognizer(x.Cognize, "Path", "_")
return reflex
}
示例13: Materialize
func (Client) Materialize() be.Reflex {
var c1, a1 sync.Once
api, consumer, access := make(chan *anaconda.TwitterApi), make(chan Image, 1), make(chan Image, 1)
go func() { // start connecting monad
var c, a Image
for i := 0; i < 2; i++ {
select {
case c = <-consumer:
consumer = nil
case a = <-access:
access = nil
}
}
anaconda.SetConsumerKey(c.String("Key")) // dial API server
anaconda.SetConsumerSecret(c.String("Secret"))
y := anaconda.NewTwitterApi(a.String("Token"), a.String("Secret"))
for {
api <- y // give out api server to all endpoint goroutines
}
}()
// API
query := make(chan Image, 5)
reflex, eye := plumb.NewEyeCognizer(
func(eye *plumb.Eye, valve string, value interface{}) {
switch valve {
case "Consumer":
c1.Do(func() { consumer <- value.(Image) })
case "Access":
a1.Do(func() { access <- value.(Image) })
case "UserTimelineQuery", "HomeTimelineQuery", "RetweetsQuery", "RetweetsOfMeQuery":
valve = valve[:len(valve)-len("Query")]
query <- Make().Grow(valve, value)
default:
log.Printf("Unknown Twitter query: %s", valve)
}
},
"Consumer", "Access", // set to start connection
"UserTimelineQuery", "UserTimelineResult", // UserTimeline
"HomeTimelineQuery", "HomeTimelineResult", // HomeTimeline
"RetweetsQuery", "RetweetsResult", // Retweets
"RetweetsOfMeQuery", "RetweetsOfMeResult", // RetweetsOfMe
)
for i := 0; i < 3; i++ {
go func() { // API response loop
y := <-api
for {
g := <-query
q := g.Letters()[0]
x := g[q].(Image)
uv := urlize(x)
log.Printf("Twitter %s query %v", q, ImagineWithMaps(uv).(Image).PrintLine())
var tweets []anaconda.Tweet
var err error
switch q {
case "UserTimeline":
tweets, err = y.GetUserTimeline(uv)
case "HomeTimeline":
tweets, err = y.GetHomeTimeline(uv)
case "Retweets":
tweets, err = y.GetRetweets(int64(x.Int("Id")), uv)
case "RetweetsOfMe":
tweets, err = y.GetRetweetsOfMe(uv)
}
if err != nil {
log.Fatalf("Problem %s query on Twitter (%v)", q, err)
}
eye.Show(
q,
Pretty(
Image{
"Name": x.Interface("Name"),
"Sentence": Imagine(tweets),
},
),
)
}
}()
}
return reflex
}
示例14: Materialize
func (Remember) Materialize() be.Reflex {
reflex, _ := plumb.NewEyeCognizer((&remember{}).Cognize, "From", "What", "When", "_")
return reflex
}
示例15: Materialize
func (Choose) Materialize() be.Reflex {
reflex, _ := plumb.NewEyeCognizer((&choose{}).Cognize, "When", "From", "_")
return reflex
}