Sha256: b14651df2be209ef23e76e29241f23da3a9c25e17b91d4a38793aef1a25b9b2a

Contents?: true

Size: 1.22 KB

Versions: 208

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

require 'avm/instances/base'
require 'avm/sources/base'
require 'eac_ruby_utils/core_ext'

module Avm
  module Registry
    class ApplicationStereotypes
      require_sub __FILE__, require_dependency: true
      enable_simple_cache

      common_constructor :module_suffix

      def detect(obj)
        detect_optional(obj) || raise_not_found(obj)
      end

      def detect_optional(obj)
        detect_by_instance_class(obj) || detect_by_source_class(obj) || detecy_by_name(obj)
      end

      private

      def available_uncached
        build_available
      end

      def detect_by_instance_class(obj)
        return nil unless obj.is_a?(::Class) && obj < ::Avm::Instances::Base

        available.find { |a| a.instance_class == obj }
      end

      def detecy_by_name(obj)
        return nil unless obj.is_a?(::String)

        available.find { |a| a.name == obj }
      end

      def detect_by_source_class(obj)
        return nil unless obj.is_a?(::Class) && obj < ::Avm::Sources::Base

        available.find { |a| a.source_class == obj }
      end

      def raise_not_found(obj)
        raise("No registered module valid for #{obj} (Available: #{available.join(', ')})")
      end
    end
  end
end

Version data entries

208 entries across 208 versions & 2 rubygems

Version Path
avm-0.94.1 lib/avm/registry/application_stereotypes.rb
eac_tools-0.98.0 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.94.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.94.0 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.93.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.92.0 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.92.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.91.0 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.90.1 lib/avm/registry/application_stereotypes.rb
eac_tools-0.87.1 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.90.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.87.0 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.89.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.86.12 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.88.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.86.11 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.87.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.86.8 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.86.2 lib/avm/registry/application_stereotypes.rb
eac_tools-0.86.7 sub/avm/lib/avm/registry/application_stereotypes.rb