class DependencyInjection::Loaders::Yaml

Public Class Methods

new(container) click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 7
def initialize(container)
  @container = container
end

Public Instance Methods

load(filename) click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 11
def load(filename)
  file = load_file(filename)
  add_parameters(file['parameters']) if file['parameters']
  add_services(file['services']) if file['services']
end

Private Instance Methods

add_aliased_service(name, aliased_service_name) click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 19
def add_aliased_service(name, aliased_service_name)
  @container.register_alias(name, aliased_service_name)
end
add_parameters(parameters) click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 23
def add_parameters(parameters)
  parameters.each { |name, value| @container.add_parameter(name, value) }
end
add_service(name, parameters) click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 31
def add_service(name, parameters)
  if parameters['alias']
    add_aliased_service(name, parameters['alias'])
  else
    add_standard_service(name, parameters)
  end
end
add_services(services) click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 27
def add_services(services)
  services.each { |name, parameters| add_service(name, parameters) }
end
add_standard_service(name, parameters) click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 39
def add_standard_service(name, parameters)
  lazy_load  = parameters['lazy'] || false
  definition = @container.register(name, parameters['class'], lazy_load)
  definition.scope     = parameters['scope'] if parameters['scope']
  definition.file_path = parameters['file_path'] if parameters['file_path']
  definition.add_arguments(*parameters['arguments']) if parameters['arguments']
  if (configurator = parameters['configurator'])
    definition.add_configurator(configurator[0], configurator[1])
  end
  if parameters['calls']
    parameters['calls'].each { |method_name, arguments| definition.add_method_call(method_name, *arguments) }
  end
end
load_file(filename) click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 53
def load_file(filename)
  YAML::load(ERB.new(IO.read(filename)).result)
end