# encoding: utf-8 require 'github_api/core_ext/hash' module Github class ApiFactory # Instantiates a new github api object # def self.new(klass, options={}, &block) return create_instance(klass, options, &block) if klass raise ArgumentError, 'must provide API class to be instantiated' end # Passes configuration options to instantiated class # def self.create_instance(klass, options, &block) options.symbolize_keys! convert_to_constant(klass.to_s).new options, &block end # Convert name to constant # def self.convert_to_constant(classes) classes.split('::').inject(Github) do |constant, klass| constant.const_get klass end end end # ApiFactory end # Github