Sha256: 04c2cadc81dfa8b19213aedc695d741c2c4cc658eeeaeb06ea5fba562b9538dc

Contents?: true

Size: 915 Bytes

Versions: 4

Compression:

Stored size: 915 Bytes

Contents

module Savon
  class LogMessage

    def initialize(message, filter, options = {})
      self.message     = message
      self.filter      = filter
      self.with_pretty = options[:pretty]
      self.with_filter = options[:filter]
    end

    attr_accessor :message, :filter, :with_pretty, :with_filter

    def filter?
      with_filter && filter.any?
    end

    def pretty?
      with_pretty
    end

    def to_s
      return message unless pretty? || filter?

      doc = Nokogiri::XML(message)
      doc = apply_filter(doc) if filter?
      doc.to_xml(pretty_options)
    end

    private

    def apply_filter(doc)
      return doc unless doc.errors.empty?

      filter.each do |fi|
        doc.xpath("//*[local-name()='#{fi}']").each { |node| node.content = "***FILTERED***" }
      end

      doc
    end

    def pretty_options
      return {} unless pretty?
      { :indent => 2 }
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
savon-1.0.0 lib/savon/log_message.rb
savon-0.9.14 lib/savon/log_message.rb
savon-0.9.11 lib/savon/log_message.rb
savon-0.9.10 lib/savon/log_message.rb