goshippo/shippo-ruby-client

View on GitHub
lib/shippo/exceptions/error.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Shippo
  module Exceptions

    class Error < StandardError
      attr_accessor :message

      def initialize(thing = nil)
        if thing.is_a?(String)
          self.message = thing
        elsif thing.respond_to?(:message)
          self.message = thing.message
        else
          super(thing)
        end
      end

      def to_s_members
        %i()
      end

      def to_s
        out = super
        out << " (#{message}) " if message
        to_s_members.each do |member|
          out << member_to_s(member)
        end
        out
      end

      private

      def member_to_s(member)
        out   = ''
        value = self.send(member)
        out << "\n#{sprintf('%21s', member)}: '#{value}', " if value && (value != '')
        out
      end


    end
  end
end