Sha256: 3efdebf7670c342380cdf9d25e4ef0eaef2cfde68fe0ec2a966d5618029fa7d8

Contents?: true

Size: 767 Bytes

Versions: 11

Compression:

Stored size: 767 Bytes

Contents

# frozen_string_literal: true

module Decidim
  #
  # Takes care of holding and serving globally registered manifests.
  #
  class ManifestRegistry
    def initialize(entity)
      @entity = entity
    end

    def register(name)
      manifest = manifest_class.new(name: name.to_sym)
      yield(manifest)
      manifest.validate!
      manifests << manifest
    end

    def manifests
      @manifests ||= Set.new
    end

    def find(name)
      manifests.find do |manifest|
        manifest.try(:model_class_name) == name.to_s ||
          manifest.name.to_s == name.to_s ||
          manifest.name.to_s.pluralize == name.to_s
      end
    end

    private

    def manifest_class
      "Decidim::#{@entity.to_s.classify}Manifest".constantize
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
decidim-core-0.14.4 lib/decidim/manifest_registry.rb
decidim-core-0.14.3 lib/decidim/manifest_registry.rb
decidim-core-0.14.2 lib/decidim/manifest_registry.rb
decidim-core-0.14.1 lib/decidim/manifest_registry.rb
decidim-core-0.13.1 lib/decidim/manifest_registry.rb
decidim-core-0.12.2 lib/decidim/manifest_registry.rb
decidim-core-0.13.0 lib/decidim/manifest_registry.rb
decidim-core-0.12.1 lib/decidim/manifest_registry.rb
decidim-core-0.13.0.pre1 lib/decidim/manifest_registry.rb
decidim-core-0.12.0 lib/decidim/manifest_registry.rb
decidim-core-0.12.0.pre lib/decidim/manifest_registry.rb