super_diff 0.4.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +64 -24
  3. data/lib/super_diff.rb +20 -17
  4. data/lib/super_diff/active_record.rb +20 -24
  5. data/lib/super_diff/active_record/diff_formatters/active_record_relation.rb +3 -3
  6. data/lib/super_diff/active_record/differs/active_record_relation.rb +3 -5
  7. data/lib/super_diff/active_record/object_inspection/inspectors/active_record_model.rb +32 -22
  8. data/lib/super_diff/active_record/object_inspection/inspectors/active_record_relation.rb +17 -7
  9. data/lib/super_diff/active_record/operation_tree_builders.rb +14 -0
  10. data/lib/super_diff/active_record/{operational_sequencers → operation_tree_builders}/active_record_model.rb +2 -2
  11. data/lib/super_diff/active_record/{operational_sequencers → operation_tree_builders}/active_record_relation.rb +4 -4
  12. data/lib/super_diff/active_record/{operation_sequences.rb → operation_trees.rb} +2 -2
  13. data/lib/super_diff/active_record/{operation_sequences → operation_trees}/active_record_relation.rb +2 -2
  14. data/lib/super_diff/active_support.rb +16 -19
  15. data/lib/super_diff/active_support/diff_formatters/hash_with_indifferent_access.rb +3 -3
  16. data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +3 -5
  17. data/lib/super_diff/active_support/object_inspection/inspectors/hash_with_indifferent_access.rb +17 -7
  18. data/lib/super_diff/active_support/operation_tree_builders.rb +10 -0
  19. data/lib/super_diff/active_support/{operational_sequencers → operation_tree_builders}/hash_with_indifferent_access.rb +2 -2
  20. data/lib/super_diff/active_support/{operation_sequences.rb → operation_trees.rb} +2 -2
  21. data/lib/super_diff/active_support/{operation_sequences → operation_trees}/hash_with_indifferent_access.rb +2 -2
  22. data/lib/super_diff/colorized_document_extensions.rb +4 -4
  23. data/lib/super_diff/configuration.rb +70 -0
  24. data/lib/super_diff/csi.rb +2 -1
  25. data/lib/super_diff/diff_formatters.rb +3 -3
  26. data/lib/super_diff/diff_formatters/array.rb +3 -3
  27. data/lib/super_diff/diff_formatters/base.rb +3 -2
  28. data/lib/super_diff/diff_formatters/collection.rb +3 -3
  29. data/lib/super_diff/diff_formatters/custom_object.rb +3 -3
  30. data/lib/super_diff/diff_formatters/default_object.rb +6 -8
  31. data/lib/super_diff/diff_formatters/defaults.rb +10 -0
  32. data/lib/super_diff/diff_formatters/hash.rb +3 -3
  33. data/lib/super_diff/diff_formatters/main.rb +41 -0
  34. data/lib/super_diff/diff_formatters/multiline_string.rb +7 -7
  35. data/lib/super_diff/differs.rb +4 -11
  36. data/lib/super_diff/differs/array.rb +2 -11
  37. data/lib/super_diff/differs/base.rb +20 -3
  38. data/lib/super_diff/differs/custom_object.rb +2 -11
  39. data/lib/super_diff/differs/default_object.rb +2 -8
  40. data/lib/super_diff/differs/defaults.rb +12 -0
  41. data/lib/super_diff/differs/hash.rb +2 -11
  42. data/lib/super_diff/differs/main.rb +48 -0
  43. data/lib/super_diff/differs/multiline_string.rb +2 -14
  44. data/lib/super_diff/differs/time_like.rb +15 -0
  45. data/lib/super_diff/equality_matchers.rb +3 -9
  46. data/lib/super_diff/equality_matchers/array.rb +3 -9
  47. data/lib/super_diff/equality_matchers/base.rb +1 -1
  48. data/lib/super_diff/equality_matchers/default.rb +3 -9
  49. data/lib/super_diff/equality_matchers/defaults.rb +12 -0
  50. data/lib/super_diff/equality_matchers/hash.rb +3 -9
  51. data/lib/super_diff/equality_matchers/main.rb +21 -0
  52. data/lib/super_diff/equality_matchers/multiline_string.rb +3 -9
  53. data/lib/super_diff/equality_matchers/primitive.rb +2 -2
  54. data/lib/super_diff/equality_matchers/singleline_string.rb +2 -2
  55. data/lib/super_diff/errors.rb +16 -0
  56. data/lib/super_diff/errors/no_diff_formatter_available_error.rb +21 -0
  57. data/lib/super_diff/errors/no_differ_available_error.rb +24 -0
  58. data/lib/super_diff/errors/no_operational_sequencer_available_error.rb +22 -0
  59. data/lib/super_diff/gem_version.rb +45 -0
  60. data/lib/super_diff/implementation_checks.rb +19 -0
  61. data/lib/super_diff/object_inspection.rb +1 -10
  62. data/lib/super_diff/object_inspection/inspection_tree.rb +6 -2
  63. data/lib/super_diff/object_inspection/inspectors.rb +5 -1
  64. data/lib/super_diff/object_inspection/inspectors/array.rb +20 -10
  65. data/lib/super_diff/object_inspection/inspectors/base.rb +36 -0
  66. data/lib/super_diff/object_inspection/inspectors/custom_object.rb +24 -14
  67. data/lib/super_diff/object_inspection/inspectors/default_object.rb +44 -30
  68. data/lib/super_diff/object_inspection/inspectors/defaults.rb +15 -0
  69. data/lib/super_diff/object_inspection/inspectors/hash.rb +20 -10
  70. data/lib/super_diff/object_inspection/inspectors/main.rb +35 -0
  71. data/lib/super_diff/object_inspection/inspectors/primitive.rb +20 -5
  72. data/lib/super_diff/object_inspection/inspectors/string.rb +15 -5
  73. data/lib/super_diff/object_inspection/inspectors/time_like.rb +23 -0
  74. data/lib/super_diff/object_inspection/nodes/inspection.rb +9 -2
  75. data/lib/super_diff/operation_tree_builders.rb +18 -0
  76. data/lib/super_diff/{operational_sequencers → operation_tree_builders}/array.rb +38 -59
  77. data/lib/super_diff/operation_tree_builders/base.rb +98 -0
  78. data/lib/super_diff/{operational_sequencers → operation_tree_builders}/custom_object.rb +3 -3
  79. data/lib/super_diff/{operational_sequencers → operation_tree_builders}/default_object.rb +8 -3
  80. data/lib/super_diff/operation_tree_builders/defaults.rb +5 -0
  81. data/lib/super_diff/operation_tree_builders/hash.rb +226 -0
  82. data/lib/super_diff/operation_tree_builders/main.rb +42 -0
  83. data/lib/super_diff/{operational_sequencers → operation_tree_builders}/multiline_string.rb +3 -3
  84. data/lib/super_diff/operation_tree_builders/time_like.rb +34 -0
  85. data/lib/super_diff/operation_trees.rb +13 -0
  86. data/lib/super_diff/{operation_sequences → operation_trees}/array.rb +5 -1
  87. data/lib/super_diff/{operation_sequences → operation_trees}/base.rb +9 -1
  88. data/lib/super_diff/{operation_sequences → operation_trees}/custom_object.rb +5 -1
  89. data/lib/super_diff/{operation_sequences → operation_trees}/default_object.rb +10 -8
  90. data/lib/super_diff/operation_trees/defaults.rb +5 -0
  91. data/lib/super_diff/{operation_sequences → operation_trees}/hash.rb +5 -1
  92. data/lib/super_diff/operation_trees/main.rb +35 -0
  93. data/lib/super_diff/operation_trees/multiline_string.rb +18 -0
  94. data/lib/super_diff/operations/unary_operation.rb +3 -0
  95. data/lib/super_diff/recursion_guard.rb +2 -0
  96. data/lib/super_diff/rspec.rb +49 -13
  97. data/lib/super_diff/rspec/augmented_matcher.rb +1 -1
  98. data/lib/super_diff/rspec/differ.rb +2 -17
  99. data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +2 -7
  100. data/lib/super_diff/rspec/differs/collection_including.rb +2 -7
  101. data/lib/super_diff/rspec/differs/hash_including.rb +2 -7
  102. data/lib/super_diff/rspec/differs/object_having_attributes.rb +2 -7
  103. data/lib/super_diff/rspec/matcher_text_builders/base.rb +7 -7
  104. data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +6 -6
  105. data/lib/super_diff/rspec/matcher_text_builders/contain_exactly.rb +1 -1
  106. data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +4 -4
  107. data/lib/super_diff/rspec/matcher_text_builders/match.rb +1 -1
  108. data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +1 -1
  109. data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +6 -6
  110. data/lib/super_diff/rspec/matcher_text_template.rb +1 -1
  111. data/lib/super_diff/rspec/monkey_patches.rb +23 -14
  112. data/lib/super_diff/rspec/object_inspection.rb +0 -1
  113. data/lib/super_diff/rspec/object_inspection/inspectors.rb +16 -0
  114. data/lib/super_diff/rspec/object_inspection/inspectors/collection_containing_exactly.rb +17 -8
  115. data/lib/super_diff/rspec/object_inspection/inspectors/collection_including.rb +15 -9
  116. data/lib/super_diff/rspec/object_inspection/inspectors/hash_including.rb +20 -10
  117. data/lib/super_diff/rspec/object_inspection/inspectors/instance_of.rb +23 -0
  118. data/lib/super_diff/rspec/object_inspection/inspectors/kind_of.rb +23 -0
  119. data/lib/super_diff/rspec/object_inspection/inspectors/object_having_attributes.rb +20 -11
  120. data/lib/super_diff/rspec/object_inspection/inspectors/primitive.rb +13 -0
  121. data/lib/super_diff/rspec/object_inspection/inspectors/value_within.rb +29 -0
  122. data/lib/super_diff/rspec/operation_tree_builders.rb +22 -0
  123. data/lib/super_diff/rspec/{operational_sequencers → operation_tree_builders}/collection_containing_exactly.rb +17 -6
  124. data/lib/super_diff/rspec/{operational_sequencers → operation_tree_builders}/collection_including.rb +2 -2
  125. data/lib/super_diff/rspec/{operational_sequencers → operation_tree_builders}/hash_including.rb +3 -11
  126. data/lib/super_diff/rspec/{operational_sequencers → operation_tree_builders}/object_having_attributes.rb +4 -8
  127. data/lib/super_diff/version.rb +1 -1
  128. data/spec/examples.txt +393 -393
  129. data/spec/integration/rspec/be_falsey_matcher_spec.rb +10 -10
  130. data/spec/integration/rspec/be_matcher_spec.rb +100 -100
  131. data/spec/integration/rspec/be_nil_matcher_spec.rb +10 -10
  132. data/spec/integration/rspec/be_predicate_matcher_spec.rb +103 -103
  133. data/spec/integration/rspec/be_truthy_matcher_spec.rb +10 -10
  134. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +107 -107
  135. data/spec/integration/rspec/eq_matcher_spec.rb +230 -230
  136. data/spec/integration/rspec/have_attributes_matcher_spec.rb +360 -233
  137. data/spec/integration/rspec/have_predicate_matcher_spec.rb +65 -65
  138. data/spec/integration/rspec/include_matcher_spec.rb +73 -73
  139. data/spec/integration/rspec/match_array_matcher_spec.rb +149 -107
  140. data/spec/integration/rspec/match_matcher_spec.rb +274 -274
  141. data/spec/integration/rspec/raise_error_matcher_spec.rb +86 -86
  142. data/spec/integration/rspec/respond_to_matcher_spec.rb +240 -240
  143. data/spec/integration/rspec/third_party_matcher_spec.rb +8 -8
  144. data/spec/integration/rspec/unhandled_errors_spec.rb +69 -13
  145. data/spec/spec_helper.rb +22 -13
  146. data/spec/support/command_runner.rb +3 -0
  147. data/spec/support/integration/helpers.rb +15 -95
  148. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +15 -30
  149. data/spec/support/integration/test_programs/base.rb +122 -0
  150. data/spec/support/integration/test_programs/plain.rb +13 -0
  151. data/spec/support/integration/test_programs/rspec_active_record.rb +17 -0
  152. data/spec/support/integration/test_programs/rspec_active_support.rb +17 -0
  153. data/spec/support/integration/test_programs/rspec_rails.rb +17 -0
  154. data/spec/support/models/active_record/person.rb +4 -11
  155. data/spec/support/models/active_record/shipping_address.rb +10 -14
  156. data/spec/support/object_id.rb +6 -5
  157. data/spec/support/shared_examples/active_record.rb +108 -108
  158. data/spec/support/shared_examples/hash_with_indifferent_access.rb +196 -232
  159. data/spec/tmp/integration_spec.rb +15 -0
  160. data/spec/unit/{equality_matcher_spec.rb → equality_matchers/main_spec.rb} +518 -362
  161. data/spec/unit/object_inspection_spec.rb +77 -1
  162. data/super_diff.gemspec +3 -2
  163. metadata +83 -54
  164. data/lib/super_diff/active_record/object_inspection/map_extension.rb +0 -18
  165. data/lib/super_diff/active_record/operational_sequencers.rb +0 -14
  166. data/lib/super_diff/active_support/object_inspection/map_extension.rb +0 -15
  167. data/lib/super_diff/active_support/operational_sequencers.rb +0 -10
  168. data/lib/super_diff/diff_formatter.rb +0 -32
  169. data/lib/super_diff/differ.rb +0 -51
  170. data/lib/super_diff/differs/time.rb +0 -24
  171. data/lib/super_diff/equality_matcher.rb +0 -32
  172. data/lib/super_diff/no_differ_available_error.rb +0 -22
  173. data/lib/super_diff/no_operational_sequencer_available_error.rb +0 -20
  174. data/lib/super_diff/object_inspection/inspector.rb +0 -27
  175. data/lib/super_diff/object_inspection/inspectors/time.rb +0 -13
  176. data/lib/super_diff/object_inspection/map.rb +0 -30
  177. data/lib/super_diff/operation_sequences.rb +0 -9
  178. data/lib/super_diff/operational_sequencer.rb +0 -48
  179. data/lib/super_diff/operational_sequencers.rb +0 -17
  180. data/lib/super_diff/operational_sequencers/base.rb +0 -89
  181. data/lib/super_diff/operational_sequencers/hash.rb +0 -85
  182. data/lib/super_diff/operational_sequencers/time_like.rb +0 -30
  183. data/lib/super_diff/rspec/configuration.rb +0 -31
  184. data/lib/super_diff/rspec/object_inspection/map_extension.rb +0 -23
  185. data/lib/super_diff/rspec/operational_sequencers.rb +0 -22
@@ -0,0 +1,13 @@
1
+ module SuperDiff
2
+ module OperationTrees
3
+ autoload :Array, "super_diff/operation_trees/array"
4
+ autoload :Base, "super_diff/operation_trees/base"
5
+ autoload :CustomObject, "super_diff/operation_trees/custom_object"
6
+ autoload :DefaultObject, "super_diff/operation_trees/default_object"
7
+ autoload :Hash, "super_diff/operation_trees/hash"
8
+ autoload :Main, "super_diff/operation_trees/main"
9
+ autoload :MultilineString, "super_diff/operation_trees/multiline_string"
10
+ end
11
+ end
12
+
13
+ require "super_diff/operation_trees/defaults"
@@ -1,6 +1,10 @@
1
1
  module SuperDiff
2
- module OperationSequences
2
+ module OperationTrees
3
3
  class Array < Base
4
+ def self.applies_to?(value)
5
+ value.is_a?(::Array)
6
+ end
7
+
4
8
  def to_diff(indent_level:, collection_prefix:, add_comma:)
5
9
  DiffFormatters::Array.call(
6
10
  self,
@@ -1,6 +1,14 @@
1
+ require 'delegate'
2
+
1
3
  module SuperDiff
2
- module OperationSequences
4
+ module OperationTrees
3
5
  class Base < SimpleDelegator
6
+ def self.applies_to?(_value)
7
+ unimplemented_class_method!
8
+ end
9
+
10
+ extend ImplementationChecks
11
+
4
12
  # rubocop:disable Lint/UnusedMethodArgument
5
13
  def to_diff(indent_level:, add_comma: false, collection_prefix: nil)
6
14
  raise NotImplementedError
@@ -1,6 +1,10 @@
1
1
  module SuperDiff
2
- module OperationSequences
2
+ module OperationTrees
3
3
  class CustomObject < DefaultObject
4
+ def self.applies_to?(value)
5
+ value.respond_to?(:attributes_for_super_diff)
6
+ end
7
+
4
8
  def to_diff(indent_level:, add_comma: false, collection_prefix: nil)
5
9
  DiffFormatters::CustomObject.call(
6
10
  self,
@@ -1,25 +1,27 @@
1
1
  module SuperDiff
2
- module OperationSequences
2
+ module OperationTrees
3
3
  class DefaultObject < Base
4
+ def self.applies_to?(_value)
5
+ true
6
+ end
7
+
8
+ attr_reader :value_class
9
+
10
+ # TODO: Default this to collection.class?
4
11
  def initialize(collection, value_class:)
5
12
  super(collection)
6
13
 
7
14
  @value_class = value_class
8
15
  end
9
16
 
10
- def to_diff(indent_level:, add_comma: false, collection_prefix: nil)
11
- DiffFormatters::DefaultObject.call(
17
+ def to_diff(indent_level:, add_comma: false, **_rest)
18
+ DiffFormatters::Main.call(
12
19
  self,
13
20
  indent_level: indent_level,
14
- collection_prefix: collection_prefix,
15
21
  add_comma: add_comma,
16
22
  value_class: value_class,
17
23
  )
18
24
  end
19
-
20
- private
21
-
22
- attr_reader :value_class
23
25
  end
24
26
  end
25
27
  end
@@ -0,0 +1,5 @@
1
+ module SuperDiff
2
+ module OperationTrees
3
+ DEFAULTS = [Array, Hash, CustomObject, DefaultObject].freeze
4
+ end
5
+ end
@@ -1,6 +1,10 @@
1
1
  module SuperDiff
2
- module OperationSequences
2
+ module OperationTrees
3
3
  class Hash < Base
4
+ def self.applies_to?(value)
5
+ value.is_a?(::Hash)
6
+ end
7
+
4
8
  def to_diff(indent_level:, collection_prefix:, add_comma:)
5
9
  DiffFormatters::Hash.call(
6
10
  self,
@@ -0,0 +1,35 @@
1
+ module SuperDiff
2
+ module OperationTrees
3
+ class Main
4
+ extend AttrExtras.mixin
5
+
6
+ method_object :value
7
+
8
+ def call
9
+ if resolved_class
10
+ begin
11
+ resolved_class.new([], value_class: value.class)
12
+ rescue ArgumentError
13
+ resolved_class.new([])
14
+ end
15
+ else
16
+ raise Errors::NoOperationalSequenceAvailableError.create(value)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def resolved_class
23
+ if value.respond_to?(:attributes_for_super_diff)
24
+ CustomObject
25
+ else
26
+ available_classes.find { |klass| klass.applies_to?(value) }
27
+ end
28
+ end
29
+
30
+ def available_classes
31
+ SuperDiff.configuration.extra_operation_tree_classes + DEFAULTS
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,18 @@
1
+ module SuperDiff
2
+ module OperationTrees
3
+ class MultilineString < Base
4
+ def self.applies_to?(value)
5
+ value.is_a?(::String) && value.is_a?(::String)
6
+ end
7
+
8
+ def to_diff(indent_level:, collection_prefix:, add_comma:)
9
+ DiffFormatters::MultilineString.call(
10
+ self,
11
+ indent_level: indent_level,
12
+ collection_prefix: collection_prefix,
13
+ add_comma: add_comma,
14
+ )
15
+ end
16
+ end
17
+ end
18
+ end
@@ -6,6 +6,7 @@ module SuperDiff
6
6
  :collection,
7
7
  :key,
8
8
  :value,
9
+ # TODO: Is this even used??
9
10
  :index,
10
11
  :index_in_collection,
11
12
  )
@@ -15,6 +16,7 @@ module SuperDiff
15
16
  collection:,
16
17
  key:,
17
18
  value:,
19
+ # TODO: Is this even used??
18
20
  index:,
19
21
  index_in_collection: index
20
22
  )
@@ -22,6 +24,7 @@ module SuperDiff
22
24
  @collection = collection
23
25
  @key = key
24
26
  @value = value
27
+ # TODO: Is this even used??
25
28
  @index = index
26
29
  @index_in_collection = index_in_collection
27
30
  end
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module SuperDiff
2
4
  module RecursionGuard
3
5
  RECURSION_GUARD_KEY = "super_diff_recursion_guard_key".freeze
@@ -9,20 +9,14 @@ module SuperDiff
9
9
  autoload :MatcherTextBuilders, "super_diff/rspec/matcher_text_builders"
10
10
  autoload :MatcherTextTemplate, "super_diff/rspec/matcher_text_template"
11
11
  autoload :ObjectInspection, "super_diff/rspec/object_inspection"
12
- autoload :OperationalSequencers, "super_diff/rspec/operational_sequencers"
13
-
14
- class << self
15
- attr_accessor :extra_differ_classes
16
- attr_accessor :extra_operational_sequencer_classes
17
- attr_accessor :extra_diff_formatter_classes
18
- end
12
+ autoload :OperationTreeBuilders, "super_diff/rspec/operation_tree_builders"
19
13
 
20
14
  def self.configure
21
15
  yield configuration
22
16
  end
23
17
 
24
18
  def self.configuration
25
- @_configuration ||= Configuration.new
19
+ SuperDiff.configuration
26
20
  end
27
21
 
28
22
  def self.a_hash_including_something?(value)
@@ -48,16 +42,58 @@ module SuperDiff
48
42
  value.base_matcher.is_a?(::RSpec::Matchers::BuiltIn::ContainExactly)
49
43
  end
50
44
 
45
+ def self.a_kind_of_something?(value)
46
+ fuzzy_object?(value) &&
47
+ value.base_matcher.is_a?(::RSpec::Matchers::BuiltIn::BeAKindOf)
48
+ end
49
+
50
+ def self.an_instance_of_something?(value)
51
+ fuzzy_object?(value) &&
52
+ value.base_matcher.is_a?(::RSpec::Matchers::BuiltIn::BeAnInstanceOf)
53
+ end
54
+
55
+ def self.a_value_within_something?(value)
56
+ fuzzy_object?(value) &&
57
+ value.base_matcher.is_a?(::RSpec::Matchers::BuiltIn::BeWithin)
58
+ end
59
+
51
60
  def self.fuzzy_object?(value)
52
61
  value.is_a?(::RSpec::Matchers::AliasedMatcher)
53
62
  end
63
+
64
+ def self.rspec_version
65
+ GemVersion.new(::RSpec::Version::STRING)
66
+ end
67
+
68
+ SuperDiff.configuration.tap do |config|
69
+ config.add_extra_differ_classes(
70
+ Differs::CollectionContainingExactly,
71
+ Differs::CollectionIncluding,
72
+ Differs::HashIncluding,
73
+ Differs::ObjectHavingAttributes,
74
+ )
75
+
76
+ config.add_extra_operation_tree_builder_classes(
77
+ OperationTreeBuilders::CollectionContainingExactly,
78
+ OperationTreeBuilders::CollectionIncluding,
79
+ OperationTreeBuilders::HashIncluding,
80
+ OperationTreeBuilders::ObjectHavingAttributes,
81
+ )
82
+
83
+ config.add_extra_inspector_classes(
84
+ ObjectInspection::Inspectors::CollectionContainingExactly,
85
+ ObjectInspection::Inspectors::CollectionIncluding,
86
+ ObjectInspection::Inspectors::HashIncluding,
87
+ ObjectInspection::Inspectors::InstanceOf,
88
+ ObjectInspection::Inspectors::KindOf,
89
+ ObjectInspection::Inspectors::ObjectHavingAttributes,
90
+ ObjectInspection::Inspectors::Primitive,
91
+ ObjectInspection::Inspectors::ValueWithin,
92
+ )
93
+ end
54
94
  end
55
95
  end
56
96
 
57
97
  require_relative "rspec/monkey_patches"
58
98
 
59
- SuperDiff::ObjectInspection.map.prepend(
60
- SuperDiff::RSpec::ObjectInspection::MapExtension,
61
- )
62
-
63
- SuperDiff::Csi.color_enabled = RSpec.configuration.color_enabled?
99
+ SuperDiff::Csi.color_enabled = ::RSpec.configuration.color_enabled?
@@ -31,7 +31,7 @@ module SuperDiff
31
31
 
32
32
  def matcher_text_builder
33
33
  @_matcher_text_builder ||=
34
- matcher_text_builder_class.new(matcher_text_builder_args)
34
+ matcher_text_builder_class.new(**matcher_text_builder_args)
35
35
  end
36
36
 
37
37
  def matcher_text_builder_class
@@ -7,31 +7,16 @@ module SuperDiff
7
7
 
8
8
  def diff
9
9
  if worth_diffing?
10
- diff = SuperDiff::Differ.call(
10
+ diff = SuperDiff::Differs::Main.call(
11
11
  expected,
12
12
  actual,
13
13
  omit_empty: true,
14
- extra_classes: [
15
- *RSpec.configuration.extra_differ_classes,
16
- Differs::CollectionContainingExactly,
17
- Differs::CollectionIncluding,
18
- Differs::HashIncluding,
19
- Differs::ObjectHavingAttributes,
20
- ],
21
- extra_operational_sequencer_classes: [
22
- *RSpec.configuration.extra_operational_sequencer_classes,
23
- OperationalSequencers::CollectionContainingExactly,
24
- OperationalSequencers::CollectionIncluding,
25
- OperationalSequencers::HashIncluding,
26
- OperationalSequencers::ObjectHavingAttributes,
27
- ],
28
- extra_diff_formatter_classes: RSpec.configuration.extra_diff_formatter_classes,
29
14
  )
30
15
  "\n\n" + diff
31
16
  else
32
17
  ""
33
18
  end
34
- rescue NoDifferAvailableError
19
+ rescue SuperDiff::Errors::NoDifferAvailableError
35
20
  ""
36
21
  end
37
22
 
@@ -9,13 +9,8 @@ module SuperDiff
9
9
 
10
10
  private
11
11
 
12
- def operations
13
- OperationalSequencers::CollectionContainingExactly.call(
14
- expected: expected,
15
- actual: actual,
16
- extra_operational_sequencer_classes: extra_operational_sequencer_classes,
17
- extra_diff_formatter_classes: extra_diff_formatter_classes,
18
- )
12
+ def operation_tree_builder_class
13
+ OperationTreeBuilders::CollectionContainingExactly
19
14
  end
20
15
  end
21
16
  end
@@ -9,13 +9,8 @@ module SuperDiff
9
9
 
10
10
  private
11
11
 
12
- def operations
13
- OperationalSequencers::CollectionIncluding.call(
14
- expected: expected,
15
- actual: actual,
16
- extra_operational_sequencer_classes: extra_operational_sequencer_classes,
17
- extra_diff_formatter_classes: extra_diff_formatter_classes,
18
- )
12
+ def operation_tree_builder_class
13
+ OperationTreeBuilders::CollectionIncluding
19
14
  end
20
15
  end
21
16
  end
@@ -9,13 +9,8 @@ module SuperDiff
9
9
 
10
10
  private
11
11
 
12
- def operations
13
- OperationalSequencers::HashIncluding.call(
14
- expected: expected,
15
- actual: actual,
16
- extra_operational_sequencer_classes: extra_operational_sequencer_classes,
17
- extra_diff_formatter_classes: extra_diff_formatter_classes,
18
- )
12
+ def operation_tree_builder_class
13
+ OperationTreeBuilders::HashIncluding
19
14
  end
20
15
  end
21
16
  end
@@ -8,13 +8,8 @@ module SuperDiff
8
8
 
9
9
  private
10
10
 
11
- def operations
12
- OperationalSequencers::ObjectHavingAttributes.call(
13
- expected: expected,
14
- actual: actual,
15
- extra_operational_sequencer_classes: extra_operational_sequencer_classes,
16
- extra_diff_formatter_classes: extra_diff_formatter_classes,
17
- )
11
+ def operation_tree_builder_class
12
+ OperationTreeBuilders::ObjectHavingAttributes
18
13
  end
19
14
  end
20
15
  end
@@ -45,12 +45,12 @@ module SuperDiff
45
45
  def add_extra_after_error
46
46
  end
47
47
 
48
- def beta_color
49
- SuperDiff::COLORS.fetch(:beta)
48
+ def actual_color
49
+ SuperDiff.configuration.actual_color
50
50
  end
51
51
 
52
- def alpha_color
53
- SuperDiff::COLORS.fetch(:alpha)
52
+ def expected_color
53
+ SuperDiff.configuration.expected_color
54
54
  end
55
55
 
56
56
  private
@@ -91,7 +91,7 @@ module SuperDiff
91
91
  end
92
92
 
93
93
  def add_actual_value
94
- template.add_text_in_color(beta_color) { actual }
94
+ template.add_text_in_color(actual_color) { actual }
95
95
  end
96
96
 
97
97
  def expected_section
@@ -110,7 +110,7 @@ module SuperDiff
110
110
  else
111
111
  template.add_text " "
112
112
  template.add_text_in_color(
113
- alpha_color,
113
+ expected_color,
114
114
  expected_for_failure_message,
115
115
  )
116
116
  end
@@ -121,7 +121,7 @@ module SuperDiff
121
121
  add_expected_value_to(template, expected_for_description)
122
122
  else
123
123
  template.add_text " "
124
- template.add_text_in_color(alpha_color, expected_for_description)
124
+ template.add_text_in_color(expected_color, expected_for_description)
125
125
  end
126
126
  end
127
127