class Corindon::DependencyInjection::Dsl

Public Class Methods

from_definition(definition) click to toggle source

@param [Definition] definition @return [Dsl]

# 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
new(klass, args: [], kwargs: {}, id: nil, calls: [], tags: []) click to toggle source

@param [Class] klass

# 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

Public Instance Methods

args(*arguments, **kv_arguments) click to toggle source
# 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) click to toggle source

@param [String] name

# File lib/corindon/dependency_injection/dsl.rb, line 49
def call(name, *arguments, **kv_arguments)
  @calls << [name, arguments, kv_arguments]
end
exec(context: {}, &block) click to toggle source

@param [Hash] context @return [Definition]

# 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) click to toggle source

@param [String] id

# File lib/corindon/dependency_injection/dsl.rb, line 54
def id(id)
  @id = id
end
on(id) click to toggle source

@return [Token::ServiceCallToken]

# File lib/corindon/dependency_injection/dsl.rb, line 70
def on(id)
  Token::ServiceCallToken.new(service: id)
end
param(key) click to toggle source

@param [Class, to_s] key @return [Token::ParameterToken]

# File lib/corindon/dependency_injection/dsl.rb, line 60
def param(key)
  Token::ParameterToken.new(key: key)
end
tag(tag) click to toggle source

@param [String] tag

# File lib/corindon/dependency_injection/dsl.rb, line 65
def tag(tag)
  @tags << tag
end
tagged(tag) click to toggle source

@param [String] tag @return [Token::TaggedToken]

# File lib/corindon/dependency_injection/dsl.rb, line 81
def tagged(tag)
  Token::TaggedToken.new(tag)
end
value(val) click to toggle source

@return [Token::ValueToken]

# File lib/corindon/dependency_injection/dsl.rb, line 75
def value(val)
  Token::ValueToken.new(value: val)
end