Sha256: c9e2af8607ed51795ce00f82f6a38263a17720e27e2d8f30e5635a2434152610

Contents?: true

Size: 1.06 KB

Versions: 9

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Decidim
  #
  # This class handles all logic regarding registering filters
  #
  class AdminFiltersRegistry
    class << self
      #
      # Finds a filter by name or creates it if it does not exist.
      #
      # @param name [Symbol] Name of the filter
      # @param &block [Filter] Registration body of the filter. It is stored to
      #                        be evaluated at rendering time
      #
      def register(name, &block)
        filter = find(name) || create(name)

        filter.configurations << block

        filter
      end

      #
      # Finds a filter by name
      #
      # @param name [Symbol] The name of the filter
      #
      def find(name)
        all[name]
      end

      #
      # Creates an empty named filter
      #
      # @param name [Symbol] The name of the filter
      #
      def create(name)
        all[name] = new
      end

      private

      def all
        @all ||= {}
      end
    end

    attr_reader :configurations

    def initialize
      @configurations = []
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc2 lib/decidim/admin_filters_registry.rb
decidim-core-0.30.0.rc1 lib/decidim/admin_filters_registry.rb
decidim-core-0.29.2 lib/decidim/admin_filters_registry.rb
decidim-core-0.29.1 lib/decidim/admin_filters_registry.rb
decidim-core-0.29.0 lib/decidim/admin_filters_registry.rb
decidim-core-0.29.0.rc4 lib/decidim/admin_filters_registry.rb
decidim-core-0.29.0.rc3 lib/decidim/admin_filters_registry.rb
decidim-core-0.29.0.rc2 lib/decidim/admin_filters_registry.rb
decidim-core-0.29.0.rc1 lib/decidim/admin_filters_registry.rb