Sha256: e0fd2bc7540a16359cc76e0a10e7d75c972a5c4bb1eaa647af820fcb0d88ceae
Contents?: true
Size: 1.17 KB
Versions: 3
Compression:
Stored size: 1.17 KB
Contents
require "nokogiri" module Savon class LogMessage def initialize(message, filters = [], pretty_print = false) @message = message @filters = filters @pretty_print = pretty_print end def to_s message_is_xml = @message =~ /^</ has_filters = @filters.any? pretty_print = @pretty_print return @message unless message_is_xml return @message unless has_filters || pretty_print document = Nokogiri.XML(@message) document = apply_filter(document) if has_filters document.to_xml(nokogiri_options) end private def apply_filter(document) return document unless document.errors.empty? @filters.each do |filter| apply_filter! document, filter end document end def apply_filter!(document, filter) if filter.instance_of? Proc filter.call document else document.xpath("//*[local-name()='#{filter}']").each do |node| node.content = "***FILTERED***" end end end def nokogiri_options @pretty_print ? { :indent => 2 } : { :save_with => Nokogiri::XML::Node::SaveOptions::AS_XML } end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
savon-2.12.1 | lib/savon/log_message.rb |
savon-2.12.0 | lib/savon/log_message.rb |
savon-2.11.2 | lib/savon/log_message.rb |