Sha256: 4c3594635412b7541fde7c613e133d72d5f01e5194c16b75ba6e4bd588b448c6

Contents?: true

Size: 1.46 KB

Versions: 12

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true
module Blacklight
  class Configuration
    class Context
      attr_reader :context

      def initialize(context)
        @context = context
      end

      ##
      # Evaluate conditionals for a configuration with if/unless attributes
      #
      # @param displayable_config [#if,#unless] an object that responds to if/unless
      # @return [Boolean]
      def evaluate_if_unless_configuration(config, *args)
        return config if config === true or config === false

        if_value = !config.respond_to?(:if) ||
                        config.if.nil? ||
                        evaluate_configuration_conditional(config.if, config, *args)

        unless_value = !config.respond_to?(:unless) ||
                          config.unless.nil? ||
                          !evaluate_configuration_conditional(config.unless, config, *args)

        if_value && unless_value
      end

      def evaluate_configuration_conditional(proc_helper_or_boolean, *args_for_procs_and_methods)
        case proc_helper_or_boolean
        when Symbol
          arity = context.method(proc_helper_or_boolean).arity

          if arity == 0
            context.send(proc_helper_or_boolean)
          else
            context.send(proc_helper_or_boolean, *args_for_procs_and_methods)
          end
        when Proc
          proc_helper_or_boolean.call context, *args_for_procs_and_methods
        else
          proc_helper_or_boolean
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
blacklight-6.5.0 lib/blacklight/configuration/context.rb
blacklight-6.4.2 lib/blacklight/configuration/context.rb
blacklight-6.4.1 lib/blacklight/configuration/context.rb
blacklight-6.4.0 lib/blacklight/configuration/context.rb
blacklight-6.3.3 lib/blacklight/configuration/context.rb
blacklight-6.3.1 lib/blacklight/configuration/context.rb
blacklight-6.3.0 lib/blacklight/configuration/context.rb
blacklight-6.2.0 lib/blacklight/configuration/context.rb
blacklight-6.1.0 lib/blacklight/configuration/context.rb
blacklight-6.0.2 lib/blacklight/configuration/context.rb
blacklight-6.0.1 lib/blacklight/configuration/context.rb
blacklight-6.0.0 lib/blacklight/configuration/context.rb