Sha256: f4c9ccfa375d3c0aa984a363b6f2d08b53d1287fbb403a52447f77d74b83d7b9

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 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)
            return if patterns.empty?

            # 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

2 entries across 2 versions & 1 rubygems

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