Sha256: 81c35811ee179478699af3f39353df38ebb2b81cd6706dae19a5dc660c5ed2d4

Contents?: true

Size: 1.51 KB

Versions: 37

Compression:

Stored size: 1.51 KB

Contents

module Logster
  class IgnorePattern

    def initialize(message_pattern=nil, env_patterns=nil)
      @msg_match = message_pattern
      @env_match = env_patterns
    end

    def self.from_message_and_request_uri(msg, request)
      IgnorePattern.new(msg, {REQUEST_URI: request})
    end

    def matches?(message)
      if @msg_match
        return false unless compare(message.message, @msg_match)
      end

      if @env_match
        return false unless compare(message.env, @env_match)
      end

      true
    end

    def to_s
      "<#Logster::IgnorePattern, msg_match: #{@msg_match.inspect}, env_match: #{@env_match.inspect}>"
    end

    private

    def compare(message, pattern)
      return false unless message && pattern

      case pattern
        when Regexp
          message.to_s =~ pattern
        when String
          message.to_s.downcase =~ Regexp.new(pattern.downcase, Regexp::IGNORECASE)
        when Hash
          if Hash === message
            compare_hash(message, pattern)
          else
            false
          end
        else
          false
      end
    end

    def compare_hash(message_hash, pattern_hash)
      return false unless message_hash
      pattern_hash.each do |key, value|
        return false unless compare(get_indifferent(message_hash, key), value)
      end
      true
    end

    def get_indifferent(hash, key)
      return hash[key] if hash[key]
      return hash[key.to_s] if hash[key.to_s]
      # no key.to_sym please, memory leak in Ruby < 2.2
      nil
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
logster-1.3.1 lib/logster/ignore_pattern.rb
logster-1.2.11 lib/logster/ignore_pattern.rb
logster-1.2.9 lib/logster/ignore_pattern.rb
logster-1.2.8 lib/logster/ignore_pattern.rb
logster-1.2.7 lib/logster/ignore_pattern.rb
logster-1.2.6 lib/logster/ignore_pattern.rb
logster-1.2.5 lib/logster/ignore_pattern.rb
logster-1.2.4 lib/logster/ignore_pattern.rb
logster-1.2.3 lib/logster/ignore_pattern.rb
logster-1.2.2 lib/logster/ignore_pattern.rb
logster-1.2.1 lib/logster/ignore_pattern.rb
logster-1.2.0 lib/logster/ignore_pattern.rb
logster-1.1.1 lib/logster/ignore_pattern.rb
logster-1.0.1 lib/logster/ignore_pattern.rb
logster-1.0.0.3.pre lib/logster/ignore_pattern.rb
logster-1.0.0.2.pre lib/logster/ignore_pattern.rb
logster-1.0.0.1.pre lib/logster/ignore_pattern.rb
logster-1.0.0.0.pre lib/logster/ignore_pattern.rb
logster-0.9.9 lib/logster/ignore_pattern.rb
logster-0.8.4.8.pre lib/logster/ignore_pattern.rb