Skip to main content
Glama
emicklei

melrōse musical expression player

by emicklei
map.go1.33 kB
package core import ( "bytes" "fmt" "github.com/emicklei/melrose/notify" ) type Map struct { Target HasValue Replaceable HasValue Each Sequenceable } func (c Map) S() Sequence { return SequenceableList{Target: c.Sequenceables()}.S() } func (c Map) Storex() string { var b bytes.Buffer fmt.Fprintf(&b, "map(%s,%s)", Storex(c.Target), Storex(c.Replaceable)) return b.String() } func (c Map) Sequenceables() []Sequenceable { tv := c.Target.Value() t, ok := tv.(HasSequenceables) if !ok { notify.Warnf("target does not have sequences") return []Sequenceable{} } rv := c.Replaceable.Value() r, ok := rv.(Replaceable) if !ok { notify.Warnf("function does not allow replacement") return []Sequenceable{} } targets := make([]Sequenceable, len(t.Sequenceables())) for i, each := range t.Sequenceables() { targets[i] = r.Replaced(c.Each, each) } return targets } func (c Map) Replaced(from, to Sequenceable) Sequenceable { if from == Sequenceable(c) { return to } newTarget := c.Target if t, ok := c.Target.Value().(Replaceable); ok { newTarget = On(t.Replaced(from, to)) } newReplaceable := c.Replaceable if r, ok := c.Replaceable.Value().(Replaceable); ok { newReplaceable = On(r.Replaced(from, to)) } return Map{Target: newTarget, Replaceable: newReplaceable, Each: c.Each} }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/emicklei/melrose'

If you have feedback or need assistance with the MCP directory API, please join our Discord server