Class: Corindon::DependencyInjection::Dsl

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Dsl.

Parameters:

  • klass (Class)


22
23
24
25
26
27
28
29
# File 'lib/corindon/dependency_injection/dsl.rb', line 22

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

Class Method Details

.from_definition(definition) ⇒ Dsl

Parameters:

Returns:



9
10
11
12
13
14
15
16
17
18
# File 'lib/corindon/dependency_injection/dsl.rb', line 9

def from_definition(definition)
  new(
    definition.object_source,
    id: definition.id,
    args: definition.args,
    kwargs: definition.kwargs,
    calls: definition.calls,
    tags: definition.tags
  )
end

Instance Method Details

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



43
44
45
46
# File 'lib/corindon/dependency_injection/dsl.rb', line 43

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

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

Parameters:

  • name (String)


49
50
51
# File 'lib/corindon/dependency_injection/dsl.rb', line 49

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

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

Parameters:

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

Returns:



33
34
35
36
37
38
39
40
41
# File 'lib/corindon/dependency_injection/dsl.rb', line 33

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)
end

#id(id) ⇒ Object

Parameters:

  • id (String)


54
55
56
# File 'lib/corindon/dependency_injection/dsl.rb', line 54

def id(id)
  @id = id
end

#on(id) ⇒ Token::ServiceCallToken



70
71
72
# File 'lib/corindon/dependency_injection/dsl.rb', line 70

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

#param(key) ⇒ Token::ParameterToken

Parameters:

  • key (Class, #to_s)

Returns:



60
61
62
# File 'lib/corindon/dependency_injection/dsl.rb', line 60

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

#tag(tag) ⇒ Object

Parameters:

  • tag (String)


65
66
67
# File 'lib/corindon/dependency_injection/dsl.rb', line 65

def tag(tag)
  @tags << tag
end

#tagged(tag) ⇒ Token::TaggedToken

Parameters:

  • tag (String)

Returns:



81
82
83
# File 'lib/corindon/dependency_injection/dsl.rb', line 81

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

#value(val) ⇒ Token::ValueToken

Returns:



75
76
77
# File 'lib/corindon/dependency_injection/dsl.rb', line 75

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