github.com/Jeffail/benthos/v3@v3.65.0/internal/interop/bloblang.go (about) 1 package interop 2 3 import ( 4 "github.com/Jeffail/benthos/v3/internal/bloblang" 5 "github.com/Jeffail/benthos/v3/internal/bloblang/field" 6 "github.com/Jeffail/benthos/v3/internal/bloblang/mapping" 7 "github.com/Jeffail/benthos/v3/lib/types" 8 ) 9 10 // NewBloblangMapping parses a bloblang mapping using either the global 11 // environment, or, when the provided manager supports the newer 12 // BloblEnvironment method, the manager environment. 13 func NewBloblangMapping(mgr types.Manager, blobl string) (*mapping.Executor, error) { 14 if nm, ok := mgr.(interface { 15 BloblEnvironment() *bloblang.Environment 16 }); ok { 17 return nm.BloblEnvironment().NewMapping(blobl) 18 } 19 return bloblang.GlobalEnvironment().NewMapping(blobl) 20 } 21 22 // NewBloblangField parses a bloblang interpolated field using either the global 23 // environment, or, when the provided manager supports the newer 24 // BloblEnvironment method, the manager environment. 25 func NewBloblangField(mgr types.Manager, expr string) (*field.Expression, error) { 26 if nm, ok := mgr.(interface { 27 BloblEnvironment() *bloblang.Environment 28 }); ok { 29 return nm.BloblEnvironment().NewField(expr) 30 } 31 return bloblang.GlobalEnvironment().NewField(expr) 32 }