Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/tmc/inj

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/tmc/inj

  • v0.0.0-20150205054550-1500fa2abfc6
  • Source
  • Go
  • Socket score

Version published
Created
Source

This was a bad idea. Don't do this.

inj

import "github.com/tmc/inj"

Package inj provides a simple mechanism of dependency injection

It combines a type to value map and the capability of invoking a function with parameters supplied based on their types.

  • godoc: http://godoc.org/github.com/tmc/inj
  • Coverage: 100%
  • License: ISC

Example:

	i := inj.New()
	i.Register("foobar")
	i.Register(42)
	
	vals, _ := i.Call(func(a int, b string) string {
	    return fmt.Sprintf("%T:%v %T:%v", a, a, b, b)
	})
	fmt.Print(vals)
	// Output:
	// [int:42 string:foobar]

Variables

var (
    // ErrNotFunc is returned by Call() if the provided value is not a function
    ErrNotFunc = errors.New("inj: Provided value is not a function")
    // ErrNotInterface is returned by RegisterAs() if the second argument is not an interface type
    ErrNotInterface = errors.New("inj: Provided value is not an interface type")
    // ErrDoesntImplement is returned by RegisterAs() if the first argument does not implement the second argument
    ErrDoesntImplement = errors.New("inj: Provided value does not satisfy provided interface")
)

type Injector

type Injector map[reflect.Type]reflect.Value

Injector is the type to value mapping that is utilized when looking up parameters in Call()

func New

func New() Injector

New prepares a new Injector

func (Injector) Call

func (inj Injector) Call(fun interface{}) ([]reflect.Value, error)

Call invokes fun with parameters populated by registered types

func (Injector) Register

func (inj Injector) Register(value interface{}) (replaced bool)

Register provides a new implementation for a provided type

Returns true if this registration is replacing a previous registration

func (Injector) RegisterAs

func (inj Injector) RegisterAs(value interface{}, registeredType interface{}) (bool, error)

RegisterAs provides a new implementation for a provided type but attempts to register it as the interface type registeredType. registeredType must be supplied as a pointer to the interface type.

Returns true if this registration is replacing a previous registration. Returns an error if the second argument isn't an interface or the first argument doesn't satisify the second.

Example:

	i := inj.New()
	i.RegisterAs(os.Stdin, (*io.Reader)(nil))

FAQs

Package last updated on 05 Feb 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc