Sha256: b477828f27afee1f9ab5542a5043ef5d6683f1f73b29337e86a994cebb9d012b

Contents?: true

Size: 1.28 KB

Versions: 111

Compression:

Stored size: 1.28 KB

Contents

require 'pact/shared/active_support_support'
require 'term/ansicolor'

module Pact
  module Matchers
    class EmbeddedDiffFormatter

      include Pact::ActiveSupportSupport
      C = ::Term::ANSIColor


      EXPECTED = /"EXPECTED([A-Z_]*)":/

      ACTUAL = /"ACTUAL([A-Z_]*)":/

      attr_reader :diff, :colour

      def initialize diff, options = {}
        @diff = diff
        @colour = options.fetch(:colour, false)
      end

      def self.call diff, options = {colour: Pact.configuration.color_enabled}
        new(diff, options).call
      end

      def call
        to_s
      end

      def to_hash
        diff
      end

      def to_s
        colourise_message_if_configured fix_json_formatting(diff.to_json)
      end

      def colourise_message_if_configured message
        if colour
          colourise_message message
        else
          message
        end
      end

      def colourise_message message
        message.split("\n").collect{| line | colourise(line) }.join("\n")
      end

      def colourise line
        line.gsub(EXPECTED){|match| coloured_key match, :red }.gsub(ACTUAL){ | match | coloured_key match, :green }
      end

      def coloured_key match, colour
        '"' + C.color(colour, match.downcase.gsub(/^"|":$/,'')) + '":'
      end

    end

  end
end

Version data entries

111 entries across 111 versions & 2 rubygems

Version Path
pact-support-1.17.0 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.10 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.9 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.8 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.7 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.6 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.5 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.4 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.3 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.2 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.17.0.pre.rc2 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.17.0.pre.rc1 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.1 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.16.0 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.15.5 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.15.4 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.15.3 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.15.2 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.15.1 lib/pact/matchers/embedded_diff_formatter.rb
pact-support-1.15.0 lib/pact/matchers/embedded_diff_formatter.rb