Sha256: c62313769572f783dde515df3c4e73d0184e8b80d7cde5bff9ec71171904bf09

Contents?: true

Size: 595 Bytes

Versions: 2

Compression:

Stored size: 595 Bytes

Contents

# frozen_string_literal: true

# TODO: add tests
module Ringu
  module Resolver
    extend self

    def create(deps)
      Module.new do
        define_method(:deps) { deps }

        def self.included(klass)
          klass.extend ClassMethods
        end
      end
    end

    module ClassMethods
      def resolve(name)
        define_method(name) do
          var_name = "@#{name}"

          return instance_variable_get(var_name) \
            if instance_variable_defined?(var_name)

          instance_variable_set(var_name, deps.resolve(name))
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ringu-0.1.1.pre.alpha lib/ringu/resolver.rb
ringu-0.1.0.pre.alpha lib/ringu/resolver.rb