Sha256: 7066f5c97cf6ab4bd9e69307120e55ce70426ed39541c98b62aa3eac653b9cdc

Contents?: true

Size: 1.68 KB

Versions: 15

Compression:

Stored size: 1.68 KB

Contents

module Inch
  module CodeObject
    module Provider
      module YARD
        # CodeObject::Provider::YARD::Object object represent code objects.
        #
        module Object
          class << self
            def clear_cache
              @cache = {}
            end

            # Returns a Proxy object for the given +yard_object+
            #
            # @param yard_object [YARD::CodeObject]
            # @return [Provider::YARD::Object]
            def for(yard_object)
              @cache ||= {}
              if proxy_object = @cache[cache_key(yard_object)]
                proxy_object
              else
                @cache[cache_key(yard_object)] = class_for(yard_object).new(yard_object)
              end
            end

            private

            # Returns a Proxy class for the given +yard_object+
            #
            # @param yard_object [YARD::CodeObject]
            # @return [Class]
            def class_for(yard_object)
              class_name = yard_object.class.to_s.split('::').last
              const_get(class_name)
            rescue NameError
              Base
            end

            # Returns a cache key for the given +yard_object+
            #
            # @param yard_object [YARD::CodeObject]
            # @return [String]
            def cache_key(yard_object)
              yard_object.path
            end
          end
        end
      end
    end
  end
end

require_relative 'object/base'
require_relative 'object/namespace_object'
require_relative 'object/class_object'
require_relative 'object/constant_object'
require_relative 'object/method_object'
require_relative 'object/method_parameter_object'
require_relative 'object/module_object'

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
inch-0.4.4 lib/inch/code_object/provider/yard/object.rb
inch-0.4.4.rc4 lib/inch/code_object/provider/yard/object.rb
inch-0.4.4.rc3 lib/inch/code_object/provider/yard/object.rb
inch-0.4.4.rc2 lib/inch/code_object/provider/yard/object.rb
inch-0.4.4.rc1 lib/inch/code_object/provider/yard/object.rb
inch-0.4.3 lib/inch/code_object/provider/yard/object.rb
inch-0.4.3.rc2 lib/inch/code_object/provider/yard/object.rb
inch-0.4.3.rc1 lib/inch/code_object/provider/yard/object.rb
inch-0.4.2 lib/inch/code_object/provider/yard/object.rb
inch-0.4.1 lib/inch/code_object/provider/yard/object.rb
inch-0.4.0 lib/inch/code_object/provider/yard/object.rb
inch-0.4.0.rc3 lib/inch/code_object/provider/yard/object.rb
inch-0.4.0.rc2 lib/inch/code_object/provider/yard/object.rb
inch-0.4.0.rc1 lib/inch/code_object/provider/yard/object.rb
inch-0.3.4.rc1 lib/inch/code_object/provider/yard/object.rb