Class: Corindon::DependencyInjection::Dsl

Inherits:
Object
  • Object
show all
Defined in:
lib/corindon/dependency_injection/dsl.rb

Instance Method Summary collapse

Constructor Details

#initialize(klass, args: [], kwargs: {}, id: nil, anonymous: false) ⇒ Dsl

Returns a new instance of Dsl.

Parameters:

  • klass (Class)


7
8
9
10
11
12
13
14
15
# File 'lib/corindon/dependency_injection/dsl.rb', line 7

def initialize(klass, args: [], kwargs: {}, id: nil, anonymous: false)
  @klass = klass
  @args = args
  @kwargs = kwargs
  @calls = []
  @tags = []
  @id = id
  @anonymous = anonymous
end

Instance Method Details

#anonymous!Object



45
46
47
48
# File 'lib/corindon/dependency_injection/dsl.rb', line 45

def anonymous!
  @anonymous = true
  @id = nil
end

#args(*arguments, **kv_arguments) ⇒ Object



29
30
31
32
# File 'lib/corindon/dependency_injection/dsl.rb', line 29

def args(*arguments, **kv_arguments)
  @args = arguments
  @kwargs = kv_arguments
end

#call(name, *arguments, **kv_arguments) ⇒ Object

Parameters:

  • name (String)


35
36
37
# File 'lib/corindon/dependency_injection/dsl.rb', line 35

def call(name, *arguments, **kv_arguments)
  @calls << [name, arguments, kv_arguments]
end

#exec(context: {}, &block) ⇒ Definition

Parameters:

  • context (Hash) (defaults to: {})

Returns:



19
20
21
22
23
24
25
26
27
# File 'lib/corindon/dependency_injection/dsl.rb', line 19

def exec(context: {}, &block)
  if context.is_a?(Hash)
    context = OpenStruct.new(context)
  end

  instance_exec(context, &block)

  Definition.new(@klass, args: @args, kwargs: @kwargs, calls: @calls, tags: @tags, id: @id, anonymous: @anonymous)
end

#id(id) ⇒ Object

Parameters:

  • id (String)


40
41
42
43
# File 'lib/corindon/dependency_injection/dsl.rb', line 40

def id(id)
  @anonymous = false
  @id = id
end

#on(id) ⇒ Token::ServiceCallToken



62
63
64
# File 'lib/corindon/dependency_injection/dsl.rb', line 62

def on(id)
  Token::ServiceCallToken.new(service: id)
end

#param(key) ⇒ Token::ParameterToken

Parameters:

  • key (Class, #to_s)

Returns:



52
53
54
# File 'lib/corindon/dependency_injection/dsl.rb', line 52

def param(key)
  Token::ParameterToken.new(key: key)
end

#tag(tag) ⇒ Object

Parameters:

  • tag (String)


57
58
59
# File 'lib/corindon/dependency_injection/dsl.rb', line 57

def tag(tag)
  @tags << tag
end

#tagged(tag) ⇒ Token::TaggedToken

Parameters:

  • tag (String)

Returns:



73
74
75
# File 'lib/corindon/dependency_injection/dsl.rb', line 73

def tagged(tag)
  Token::TaggedToken.new(tag)
end

#value(val) ⇒ Token::ValueToken

Returns:



67
68
69
# File 'lib/corindon/dependency_injection/dsl.rb', line 67

def value(val)
  Token::ValueToken.new(value: val)
end