class Datadog::Configuration::OptionDefinition::Builder

Acts as DSL for building OptionDefinitions

Attributes

helpers[R]

Public Class Methods

new(name, options = {}) { |self| ... } click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 40
def initialize(name, options = {})
  @default = nil
  @delegate_to = nil
  @depends_on = []
  @helpers = {}
  @lazy = false
  @name = name.to_sym
  @on_set = nil
  @resetter = nil
  @setter = OptionDefinition::IDENTITY

  # If options were supplied, apply them.
  apply_options!(options)

  # Apply block if given.
  yield(self) if block_given?
end

Public Instance Methods

apply_options!(options = {}) click to toggle source

For applying options for OptionDefinition

# File lib/ddtrace/configuration/option_definition.rb, line 93
def apply_options!(options = {})
  return if options.nil? || options.empty?

  default(options[:default]) if options.key?(:default)
  delegate_to(&options[:delegate_to]) if options.key?(:delegate_to)
  depends_on(*options[:depends_on]) if options.key?(:depends_on)
  lazy(options[:lazy]) if options.key?(:lazy)
  on_set(&options[:on_set]) if options.key?(:on_set)
  resetter(&options[:resetter]) if options.key?(:resetter)
  setter(&options[:setter]) if options.key?(:setter)
end
default(value = nil, &block) click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 62
def default(value = nil, &block)
  @default = block_given? ? block : value
end
delegate_to(&block) click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 66
def delegate_to(&block)
  @delegate_to = block
end
depends_on(*values) click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 58
def depends_on(*values)
  @depends_on = values.flatten
end
helper(name, *_args, &block) click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 70
def helper(name, *_args, &block)
  @helpers[name] = block
end
lazy(value = true) click to toggle source

rubocop:disable Style/TrivialAccessors (Rubocop erroneously thinks lazy == lazy= )

# File lib/ddtrace/configuration/option_definition.rb, line 76
def lazy(value = true)
  @lazy = value
end
meta() click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 109
def meta
  {
    default: @default,
    delegate_to: @delegate_to,
    depends_on: @depends_on,
    lazy: @lazy,
    on_set: @on_set,
    resetter: @resetter,
    setter: @setter
  }
end
on_set(&block) click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 80
def on_set(&block)
  @on_set = block
end
resetter(&block) click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 84
def resetter(&block)
  @resetter = block
end
setter(&block) click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 88
def setter(&block)
  @setter = block
end
to_definition() click to toggle source
# File lib/ddtrace/configuration/option_definition.rb, line 105
def to_definition
  OptionDefinition.new(@name, meta)
end