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  }