Sha256: 2110dffc6d65f9faef13fb9845b07094d381e592f8b261c08fec2a9a617bc82e

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

require 'ddtrace/contrib/configuration/resolver'

module Datadog
  module Contrib
    module Configuration
      # Resolves a value to a configuration key
      module Resolvers
        # Matches strings against Regexps.
        class PatternResolver < Datadog::Contrib::Configuration::Resolver
          def resolve(name)
            # Try to find a matching pattern
            matching_pattern = patterns.find do |pattern|
              if pattern.is_a?(Proc)
                (pattern === name)
              else
                (pattern === name.to_s) ||
                  (pattern == name) # Only required during configuration time.
              end
            end

            # Return match or default
            matching_pattern
          end

          def add(pattern)
            patterns << (pattern.is_a?(Regexp) || pattern.is_a?(Proc) ? pattern : pattern.to_s)
          end

          private

          def patterns
            @patterns ||= Set.new
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ddtrace-0.43.0 lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb