Sha256: 3da7c967eaad1e7ad1b8b17940eed85b6c30ccacb1137466a06cbfc8a53d2aa7

Contents?: true

Size: 1.57 KB

Versions: 24

Compression:

Stored size: 1.57 KB

Contents

module Datadog
  module Configuration
    # Represents an instance of an integration configuration option
    class Option
      attr_reader \
        :definition

      def initialize(definition, context)
        @definition = definition
        @context = context
        @value = nil
        @is_set = false
      end

      def set(value)
        old_value = @value
        (@value = context_exec(value, old_value, &definition.setter)).tap do |v|
          @is_set = true
          context_exec(v, old_value, &definition.on_set) if definition.on_set
        end
      end

      def get
        if @is_set
          @value
        elsif definition.delegate_to
          context_eval(&definition.delegate_to)
        else
          set(default_value)
        end
      end

      def reset
        @value = if definition.resetter
                   # Don't change @is_set to false; custom resetters are
                   # responsible for changing @value back to a good state.
                   # Setting @is_set = false would cause a default to be applied.
                   context_exec(@value, &definition.resetter)
                 else
                   @is_set = false
                   nil
                 end
      end

      def default_value
        if definition.lazy
          context_eval(&definition.default)
        else
          definition.default
        end
      end

      private

      def context_exec(*args, &block)
        @context.instance_exec(*args, &block)
      end

      def context_eval(&block)
        @context.instance_eval(&block)
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
ddtrace-0.51.1 lib/ddtrace/configuration/option.rb
ddtrace-0.51.0 lib/ddtrace/configuration/option.rb
ddtrace-0.50.0 lib/ddtrace/configuration/option.rb
ddtrace-0.49.0 lib/ddtrace/configuration/option.rb
ddtrace-0.48.0 lib/ddtrace/configuration/option.rb
ddtrace-0.47.0 lib/ddtrace/configuration/option.rb
ddtrace-0.46.0 lib/ddtrace/configuration/option.rb
ddtrace-0.45.0 lib/ddtrace/configuration/option.rb
ddtrace-0.44.0 lib/ddtrace/configuration/option.rb
ddtrace-0.43.0 lib/ddtrace/configuration/option.rb
ddtrace-0.42.0 lib/ddtrace/configuration/option.rb
ddtrace-0.41.0 lib/ddtrace/configuration/option.rb
ls-trace-0.2.0 lib/ddtrace/configuration/option.rb
ddtrace-0.40.0 lib/ddtrace/configuration/option.rb
ddtrace-0.39.0 lib/ddtrace/configuration/option.rb
ddtrace-0.38.0 lib/ddtrace/configuration/option.rb
ddtrace-0.37.0 lib/ddtrace/configuration/option.rb
ddtrace-0.36.0 lib/ddtrace/configuration/option.rb
ddtrace-0.35.2 lib/ddtrace/configuration/option.rb
ddtrace-0.35.1 lib/ddtrace/configuration/option.rb