Sha256: 8e7cb1ccf5fe7fd3000fdf1c2db57745e712ec79809bf9b69cd81079e916d43a

Contents?: true

Size: 968 Bytes

Versions: 3

Compression:

Stored size: 968 Bytes

Contents

require 'hashie'
module ToNetMeApi
  # A mixin for classes that will resolve other classes' objects via `#method_missing`.
  module Resolver
    # A `Hashie::Mash` structure holding the name and auth_key of current instance.
    # @return [Hashie::Mash]
    def resolver
      @resolver ||= Hashie::Mash.new(name: @name, auth_key: auth_key)
    end
    
  private
    def create_namespace(name)
      Namespace.new(name, resolver: resolver)
    end
    
    def create_method(name)
      Method.new(name, resolver: resolver)
    end
    
    def call_method(args, &block)
      create_method(args.shift).call(args.first || {}, &block)
    end
    
    # class << self
    #   # When this module is included, it undefines the `:send` instance method in the `base_class`
    #   # so it can be resolved via `method_missing`.
    #   def included(base_class)
    #     base_class.class_eval do
    #       undef_method :send
    #     end
    #   end
    # end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
to_net_me_api-0.7.1 lib/to_net_me_api/resolver.rb
to_net_me_api-0.7 lib/to_net_me_api/resolver.rb
to_net_me_api-0.6 lib/to_net_me_api/resolver.rb