Sha256: ae76e15cdb33cdffb3124ee8269aa9b4084819c245c75d63a0adbca8b78c3481
Contents?: true
Size: 1.39 KB
Versions: 5
Compression:
Stored size: 1.39 KB
Contents
module Inch module CodeObject # CodeObject::Proxy object represent code objects in the analaysed # codebase. # module Proxy class << self # Returns a Proxy object for the given +code_object+ # # @param code_object [YARD::CodeObject] # @return [CodeObject::Proxy::Base] def for(code_object) @cache ||= {} if proxy_object = @cache[cache_key(code_object)] proxy_object else @cache[cache_key(code_object)] = class_for(code_object).new(code_object) end end private # Returns a Proxy class for the given +code_object+ # # @param code_object [YARD::CodeObject] # @return [Class] def class_for(code_object) class_name = code_object.class.to_s.split('::').last eval("::Inch::CodeObject::Proxy::#{class_name}") rescue Base end # Returns a cache key for the given +code_object+ # # @return [String] def cache_key(code_object) code_object.path end end end end end require_relative 'proxy/base' require_relative 'proxy/namespace_object' require_relative 'proxy/class_object' require_relative 'proxy/constant_object' require_relative 'proxy/method_object' require_relative 'proxy/method_parameter_object' require_relative 'proxy/module_object'
Version data entries
5 entries across 5 versions & 1 rubygems