Sha256: 4246538e1a2ef9694b56f43e6bf78be16fdedaef0de384848a910d9dbcd3c0c2

Contents?: true

Size: 931 Bytes

Versions: 4

Compression:

Stored size: 931 Bytes

Contents

# frozen_string_literal: true

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

      private

      def available_uncached
        build_available
      end

      # @return [Avm::Instances::Base, nil]
      def class_detect(klass, detect_args)
        r = ::Avm::Instances::Base.by_id(*detect_args)
        r.application.stereotype.instance_class == klass ? r : nil
      end

      def detect(*registered_initialize_args)
        detect_optional(*registered_initialize_args) ||
          raise_not_found(*registered_initialize_args)
      end

      def detect_optional(*registered_initialize_args)
        registered_modules.reverse.lazy
          .map { |klass| class_detect(klass, registered_initialize_args) }.find(&:present?)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
avm-0.28.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.10.0 sub/avm/lib/avm/registry/application_stereotypes.rb
avm-0.27.0 lib/avm/registry/application_stereotypes.rb
eac_tools-0.9.0 sub/avm/lib/avm/registry/application_stereotypes.rb