super_diff 0.9.0 → 0.10.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.
- checksums.yaml +4 -4
 - data/README.md +65 -26
 - data/lib/super_diff/active_record/differs/active_record_relation.rb +1 -2
 - data/lib/super_diff/active_record/differs.rb +1 -1
 - data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model.rb +5 -13
 - data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation.rb +1 -3
 - data/lib/super_diff/active_record/object_inspection/inspection_tree_builders.rb +2 -2
 - data/lib/super_diff/active_record/object_inspection.rb +1 -1
 - data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +1 -2
 - data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +1 -2
 - data/lib/super_diff/active_record/operation_tree_builders.rb +2 -2
 - data/lib/super_diff/active_record/operation_tree_flatteners.rb +1 -1
 - data/lib/super_diff/active_record/operation_trees.rb +1 -1
 - data/lib/super_diff/active_record.rb +7 -15
 - data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +5 -6
 - data/lib/super_diff/active_support/differs.rb +1 -1
 - data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access.rb +3 -9
 - data/lib/super_diff/active_support/object_inspection/inspection_tree_builders.rb +1 -1
 - data/lib/super_diff/active_support/object_inspection.rb +1 -1
 - data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +5 -6
 - data/lib/super_diff/active_support/operation_tree_builders.rb +1 -1
 - data/lib/super_diff/active_support/operation_tree_flatteners.rb +1 -1
 - data/lib/super_diff/active_support/operation_trees.rb +1 -1
 - data/lib/super_diff/active_support.rb +6 -11
 - data/lib/super_diff/colorized_document_extensions.rb +2 -4
 - data/lib/super_diff/configuration.rb +14 -8
 - data/lib/super_diff/csi/color.rb +4 -4
 - data/lib/super_diff/csi/colorized_document.rb +12 -16
 - data/lib/super_diff/csi/document.rb +8 -19
 - data/lib/super_diff/csi/eight_bit_color.rb +19 -19
 - data/lib/super_diff/csi/four_bit_color.rb +82 -31
 - data/lib/super_diff/csi/twenty_four_bit_color.rb +12 -11
 - data/lib/super_diff/csi/uncolorized_document.rb +2 -6
 - data/lib/super_diff/csi.rb +10 -14
 - data/lib/super_diff/diff_formatters/collection.rb +35 -41
 - data/lib/super_diff/differs/default_object.rb +1 -1
 - data/lib/super_diff/differs/defaults.rb +1 -1
 - data/lib/super_diff/differs/main.rb +2 -13
 - data/lib/super_diff/equality_matchers/array.rb +10 -12
 - data/lib/super_diff/equality_matchers/base.rb +1 -1
 - data/lib/super_diff/equality_matchers/default.rb +2 -4
 - data/lib/super_diff/equality_matchers/defaults.rb +1 -1
 - data/lib/super_diff/equality_matchers/hash.rb +10 -12
 - data/lib/super_diff/equality_matchers/multiline_string.rb +11 -13
 - data/lib/super_diff/equality_matchers/primitive.rb +10 -12
 - data/lib/super_diff/equality_matchers/singleline_string.rb +10 -12
 - data/lib/super_diff/equality_matchers.rb +1 -1
 - data/lib/super_diff/errors.rb +3 -3
 - data/lib/super_diff/gem_version.rb +3 -3
 - data/lib/super_diff/helpers.rb +10 -10
 - data/lib/super_diff/implementation_checks.rb +2 -2
 - data/lib/super_diff/line.rb +3 -3
 - data/lib/super_diff/object_inspection/inspection_tree.rb +46 -60
 - data/lib/super_diff/object_inspection/inspection_tree_builders/array.rb +2 -6
 - data/lib/super_diff/object_inspection/inspection_tree_builders/custom_object.rb +3 -9
 - data/lib/super_diff/object_inspection/inspection_tree_builders/default_object.rb +5 -14
 - data/lib/super_diff/object_inspection/inspection_tree_builders/defaults.rb +1 -1
 - data/lib/super_diff/object_inspection/inspection_tree_builders/hash.rb +4 -12
 - data/lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb +6 -23
 - data/lib/super_diff/object_inspection/inspection_tree_builders.rb +9 -9
 - data/lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb +8 -20
 - data/lib/super_diff/object_inspection/nodes/as_prefix_when_rendering_to_lines.rb +1 -5
 - data/lib/super_diff/object_inspection/nodes/as_prelude_when_rendering_to_lines.rb +1 -5
 - data/lib/super_diff/object_inspection/nodes/as_single_line.rb +3 -7
 - data/lib/super_diff/object_inspection/nodes/base.rb +9 -14
 - data/lib/super_diff/object_inspection/nodes/inspection.rb +26 -34
 - data/lib/super_diff/object_inspection/nodes/nesting.rb +1 -1
 - data/lib/super_diff/object_inspection/nodes/only_when.rb +2 -6
 - data/lib/super_diff/object_inspection/nodes/text.rb +1 -5
 - data/lib/super_diff/object_inspection/nodes/when_empty.rb +2 -6
 - data/lib/super_diff/object_inspection/nodes/when_non_empty.rb +2 -6
 - data/lib/super_diff/object_inspection/nodes/when_rendering_to_lines.rb +1 -1
 - data/lib/super_diff/object_inspection/nodes/when_rendering_to_string.rb +1 -5
 - data/lib/super_diff/object_inspection/nodes.rb +7 -7
 - data/lib/super_diff/object_inspection.rb +3 -3
 - data/lib/super_diff/operation_tree_builders/array.rb +12 -11
 - data/lib/super_diff/operation_tree_builders/base.rb +17 -15
 - data/lib/super_diff/operation_tree_builders/custom_object.rb +8 -6
 - data/lib/super_diff/operation_tree_builders/default_object.rb +29 -21
 - data/lib/super_diff/operation_tree_builders/hash.rb +23 -24
 - data/lib/super_diff/operation_tree_builders/main.rb +4 -11
 - data/lib/super_diff/operation_tree_builders/multiline_string.rb +3 -3
 - data/lib/super_diff/operation_tree_builders/time_like.rb +1 -11
 - data/lib/super_diff/operation_tree_builders.rb +1 -1
 - data/lib/super_diff/operation_tree_flatteners/base.rb +1 -5
 - data/lib/super_diff/operation_tree_flatteners/collection.rb +13 -16
 - data/lib/super_diff/operation_tree_flatteners/default_object.rb +1 -2
 - data/lib/super_diff/operation_tree_flatteners/hash.rb +2 -10
 - data/lib/super_diff/operation_tree_flatteners/multiline_string.rb +2 -1
 - data/lib/super_diff/operation_tree_flatteners.rb +3 -3
 - data/lib/super_diff/operation_trees/base.rb +3 -5
 - data/lib/super_diff/operation_trees/default_object.rb +1 -3
 - data/lib/super_diff/operations/binary_operation.rb +2 -2
 - data/lib/super_diff/operations/unary_operation.rb +1 -1
 - data/lib/super_diff/rails.rb +2 -1
 - data/lib/super_diff/recursion_guard.rb +5 -4
 - data/lib/super_diff/rspec/augmented_matcher.rb +4 -5
 - data/lib/super_diff/rspec/differ.rb +6 -13
 - data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +3 -2
 - data/lib/super_diff/rspec/differs/collection_including.rb +1 -1
 - data/lib/super_diff/rspec/differs/hash_including.rb +1 -1
 - data/lib/super_diff/rspec/differs.rb +3 -3
 - data/lib/super_diff/rspec/matcher_text_builders/base.rb +13 -15
 - data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +5 -7
 - data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +3 -5
 - data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +1 -5
 - data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +2 -6
 - data/lib/super_diff/rspec/matcher_text_builders.rb +5 -8
 - data/lib/super_diff/rspec/matcher_text_template.rb +13 -16
 - data/lib/super_diff/rspec/monkey_patches.rb +122 -116
 - data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb +8 -6
 - data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb +11 -16
 - data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/hash_including.rb +2 -1
 - data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/instance_of.rb +8 -6
 - data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/kind_of.rb +8 -6
 - data/lib/super_diff/rspec/object_inspection/inspection_tree_builders.rb +9 -9
 - data/lib/super_diff/rspec/object_inspection.rb +1 -1
 - data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +11 -10
 - data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +7 -6
 - data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +11 -10
 - data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +22 -17
 - data/lib/super_diff/rspec/operation_tree_builders.rb +4 -4
 - data/lib/super_diff/rspec.rb +11 -13
 - data/lib/super_diff/tiered_lines_elider.rb +87 -115
 - data/lib/super_diff/tiered_lines_formatter.rb +5 -9
 - data/lib/super_diff/version.rb +1 -1
 - data/lib/super_diff.rb +4 -9
 - data/spec/examples.txt +493 -485
 - data/spec/integration/rails/active_record_spec.rb +3 -1
 - data/spec/integration/rails/engines_spec.rb +20 -0
 - data/spec/integration/rails/hash_with_indifferent_access_spec.rb +3 -1
 - data/spec/integration/rspec/be_falsey_matcher_spec.rb +40 -35
 - data/spec/integration/rspec/be_matcher_spec.rb +360 -320
 - data/spec/integration/rspec/be_nil_matcher_spec.rb +38 -34
 - data/spec/integration/rspec/be_predicate_matcher_spec.rb +376 -359
 - data/spec/integration/rspec/be_truthy_matcher_spec.rb +38 -33
 - data/spec/integration/rspec/contain_exactly_matcher_spec.rb +242 -239
 - data/spec/integration/rspec/eq_matcher_spec.rb +595 -557
 - data/spec/integration/rspec/have_attributes_matcher_spec.rb +294 -286
 - data/spec/integration/rspec/have_predicate_matcher_spec.rb +291 -297
 - data/spec/integration/rspec/include_matcher_spec.rb +317 -215
 - data/spec/integration/rspec/match_array_matcher_spec.rb +276 -273
 - data/spec/integration/rspec/match_matcher_spec.rb +847 -834
 - data/spec/integration/rspec/raise_error_matcher_spec.rb +468 -453
 - data/spec/integration/rspec/respond_to_matcher_spec.rb +702 -697
 - data/spec/integration/rspec/third_party_matcher_spec.rb +142 -138
 - data/spec/integration/rspec/unhandled_errors_spec.rb +88 -84
 - data/spec/spec_helper.rb +17 -20
 - data/spec/support/command_runner.rb +34 -57
 - data/spec/support/integration/helpers.rb +35 -28
 - data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +28 -23
 - data/spec/support/integration/test_programs/base.rb +12 -17
 - data/spec/support/integration/test_programs/plain.rb +6 -0
 - data/spec/support/integration/test_programs/rspec_active_record.rb +4 -1
 - data/spec/support/integration/test_programs/rspec_active_support.rb +4 -1
 - data/spec/support/integration/test_programs/rspec_rails.rb +4 -1
 - data/spec/support/integration/test_programs/rspec_rails_engine.rb +30 -0
 - data/spec/support/models/active_record/person.rb +6 -4
 - data/spec/support/models/active_record/shipping_address.rb +9 -10
 - data/spec/support/models/customer.rb +2 -4
 - data/spec/support/models/player.rb +3 -6
 - data/spec/support/models/shipping_address.rb +4 -13
 - data/spec/support/shared_examples/active_record.rb +232 -214
 - data/spec/support/shared_examples/active_support.rb +53 -51
 - data/spec/support/shared_examples/elided_diffs.rb +405 -381
 - data/spec/support/shared_examples/hash_with_indifferent_access.rb +424 -388
 - data/spec/support/shared_examples/key.rb +123 -0
 - data/spec/support/unit/helpers.rb +1 -3
 - data/spec/support/unit/matchers/match_output.rb +12 -13
 - data/spec/unit/active_record/object_inspection_spec.rb +222 -206
 - data/spec/unit/equality_matchers/main_spec.rb +1049 -984
 - data/spec/unit/helpers_spec.rb +14 -21
 - data/spec/unit/operation_tree_flatteners/array_spec.rb +557 -524
 - data/spec/unit/operation_tree_flatteners/custom_object_spec.rb +619 -601
 - data/spec/unit/operation_tree_flatteners/default_object_spec.rb +619 -621
 - data/spec/unit/operation_tree_flatteners/hash_spec.rb +595 -556
 - data/spec/unit/operation_tree_flatteners/multiline_string_spec.rb +102 -92
 - data/spec/unit/rspec/matchers/be_compared_to_spec.rb +3 -3
 - data/spec/unit/rspec/matchers/be_predicate_spec.rb +3 -3
 - data/spec/unit/rspec/matchers/contain_exactly_spec.rb +1 -1
 - data/spec/unit/rspec/matchers/have_attributes_spec.rb +1 -1
 - data/spec/unit/rspec/matchers/have_predicate_spec.rb +2 -2
 - data/spec/unit/rspec/matchers/include_spec.rb +2 -2
 - data/spec/unit/rspec/matchers/match_array_spec.rb +2 -2
 - data/spec/unit/rspec/matchers/raise_error_spec.rb +5 -5
 - data/spec/unit/rspec/matchers/respond_to_spec.rb +23 -16
 - data/spec/unit/rspec/object_inspection_spec.rb +349 -324
 - data/spec/unit/super_diff_spec.rb +1542 -1449
 - data/spec/unit/tiered_lines_elider_spec.rb +3508 -3536
 - data/spec/unit/tiered_lines_formatter_spec.rb +54 -116
 - data/super_diff.gemspec +13 -12
 - metadata +73 -73
 - data/spec/tmp/warnings_logger/all_warnings.txt +0 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: bb5307b0f4dab85f765805443f6315ea45ec58d81f94211292326e32b98e1539
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 3af49d5f9a3d7396828fdc6c1b74cd8e4103ff35fc2ebced5dbef15071fe0bab
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 9aea5c125c0dbde9f754f4d0fd72dd20142cfe4f49077d9f7ab7e47994ea09297c5f58fc3cd59f564fe9534e17ae7e2a062433c03830dc3d209ee2217d503270
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f1f31c074ce8f043f7ac72127b5bd46158433a5ec6af3a0b79250f08e276fba8d1936b5ed5a09e2134e1ee3e4087b7bec36535da556f7b0b04953690edb949b9
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            [version-badge]: http://img.shields.io/gem/v/super_diff.svg
         
     | 
| 
       4 
4 
     | 
    
         
             
            [rubygems]: http://rubygems.org/gems/super_diff
         
     | 
| 
       5 
     | 
    
         
            -
            [gh-actions-badge]:  
     | 
| 
      
 5 
     | 
    
         
            +
            [gh-actions-badge]: https://img.shields.io/github/actions/workflow/status/mcmire/super_diff/super_diff.yml?branch=master
         
     | 
| 
       6 
6 
     | 
    
         
             
            [downloads-badge]: http://img.shields.io/gem/dtv/super_diff.svg
         
     | 
| 
       7 
7 
     | 
    
         
             
            [hound]: https://houndci.com
         
     | 
| 
       8 
8 
     | 
    
         
             
            [issuehunt-badge]: https://img.shields.io/badge/sponsored_through-IssueHunt-2EC28C
         
     | 
| 
         @@ -36,7 +36,7 @@ the output it produces leaves much to be desired. 
     | 
|
| 
       36 
36 
     | 
    
         
             
            For instance,
         
     | 
| 
       37 
37 
     | 
    
         
             
            let's say you wanted to compare these two hashes:
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
            ``` 
     | 
| 
      
 39 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       40 
40 
     | 
    
         
             
            actual = {
         
     | 
| 
       41 
41 
     | 
    
         
             
              customer: {
         
     | 
| 
       42 
42 
     | 
    
         
             
                person: SuperDiff::Test::Person.new(name: "Marty McFly, Jr.", age: 17),
         
     | 
| 
         @@ -48,11 +48,7 @@ actual = { 
     | 
|
| 
       48 
48 
     | 
    
         
             
                }
         
     | 
| 
       49 
49 
     | 
    
         
             
              },
         
     | 
| 
       50 
50 
     | 
    
         
             
              items: [
         
     | 
| 
       51 
     | 
    
         
            -
                {
         
     | 
| 
       52 
     | 
    
         
            -
                  name: "Fender Stratocaster",
         
     | 
| 
       53 
     | 
    
         
            -
                  cost: 100_000,
         
     | 
| 
       54 
     | 
    
         
            -
                  options: ["red", "blue", "green"]
         
     | 
| 
       55 
     | 
    
         
            -
                },
         
     | 
| 
      
 51 
     | 
    
         
            +
                { name: "Fender Stratocaster", cost: 100_000, options: %w[red blue green] },
         
     | 
| 
       56 
52 
     | 
    
         
             
                { name: "Mattel Hoverboard" }
         
     | 
| 
       57 
53 
     | 
    
         
             
              ]
         
     | 
| 
       58 
54 
     | 
    
         
             
            }
         
     | 
| 
         @@ -68,11 +64,7 @@ expected = { 
     | 
|
| 
       68 
64 
     | 
    
         
             
                }
         
     | 
| 
       69 
65 
     | 
    
         
             
              },
         
     | 
| 
       70 
66 
     | 
    
         
             
              items: [
         
     | 
| 
       71 
     | 
    
         
            -
                {
         
     | 
| 
       72 
     | 
    
         
            -
                  name: "Fender Stratocaster",
         
     | 
| 
       73 
     | 
    
         
            -
                  cost: 100_000,
         
     | 
| 
       74 
     | 
    
         
            -
                  options: ["red", "blue", "green"]
         
     | 
| 
       75 
     | 
    
         
            -
                },
         
     | 
| 
      
 67 
     | 
    
         
            +
                { name: "Fender Stratocaster", cost: 100_000, options: %w[red blue green] },
         
     | 
| 
       76 
68 
     | 
    
         
             
                { name: "Chevy 4x4" }
         
     | 
| 
       77 
69 
     | 
    
         
             
              ]
         
     | 
| 
       78 
70 
     | 
    
         
             
            }
         
     | 
| 
         @@ -80,7 +72,7 @@ expected = { 
     | 
|
| 
       80 
72 
     | 
    
         | 
| 
       81 
73 
     | 
    
         
             
            If, somewhere in a test, you were to say:
         
     | 
| 
       82 
74 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
            ``` 
     | 
| 
      
 75 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       84 
76 
     | 
    
         
             
            expect(actual).to eq(expected)
         
     | 
| 
       85 
77 
     | 
    
         
             
            ```
         
     | 
| 
       86 
78 
     | 
    
         | 
| 
         @@ -107,7 +99,7 @@ depending on your type of project. 
     | 
|
| 
       107 
99 
     | 
    
         
             
            If you're developing a Rails app,
         
     | 
| 
       108 
100 
     | 
    
         
             
            add the following to your Gemfile:
         
     | 
| 
       109 
101 
     | 
    
         | 
| 
       110 
     | 
    
         
            -
            ``` 
     | 
| 
      
 102 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       111 
103 
     | 
    
         
             
            group :test do
         
     | 
| 
       112 
104 
     | 
    
         
             
              gem "super_diff"
         
     | 
| 
       113 
105 
     | 
    
         
             
            end
         
     | 
| 
         @@ -116,7 +108,7 @@ end 
     | 
|
| 
       116 
108 
     | 
    
         
             
            After running `bundle install`,
         
     | 
| 
       117 
109 
     | 
    
         
             
            add the following to your `rails_helper`:
         
     | 
| 
       118 
110 
     | 
    
         | 
| 
       119 
     | 
    
         
            -
            ``` 
     | 
| 
      
 111 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       120 
112 
     | 
    
         
             
            require "super_diff/rspec-rails"
         
     | 
| 
       121 
113 
     | 
    
         
             
            ```
         
     | 
| 
       122 
114 
     | 
    
         | 
| 
         @@ -126,14 +118,14 @@ If you're developing an app using Hanami or Sinatra, 
     | 
|
| 
       126 
118 
     | 
    
         
             
            or merely using a part of Rails such as ActiveModel,
         
     | 
| 
       127 
119 
     | 
    
         
             
            add the following to your Gemfile where appropriate:
         
     | 
| 
       128 
120 
     | 
    
         | 
| 
       129 
     | 
    
         
            -
            ``` 
     | 
| 
      
 121 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       130 
122 
     | 
    
         
             
            gem "super_diff"
         
     | 
| 
       131 
123 
     | 
    
         
             
            ```
         
     | 
| 
       132 
124 
     | 
    
         | 
| 
       133 
125 
     | 
    
         
             
            After running `bundle install`,
         
     | 
| 
       134 
126 
     | 
    
         
             
            add the following to your `spec_helper`:
         
     | 
| 
       135 
127 
     | 
    
         | 
| 
       136 
     | 
    
         
            -
            ``` 
     | 
| 
      
 128 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       137 
129 
     | 
    
         
             
            require "super_diff/rspec"
         
     | 
| 
       138 
130 
     | 
    
         
             
            require "super_diff/active_support"
         
     | 
| 
       139 
131 
     | 
    
         
             
            ```
         
     | 
| 
         @@ -143,13 +135,13 @@ require "super_diff/active_support" 
     | 
|
| 
       143 
135 
     | 
    
         
             
            If you're developing a gem,
         
     | 
| 
       144 
136 
     | 
    
         
             
            add the following to your gemspec:
         
     | 
| 
       145 
137 
     | 
    
         | 
| 
       146 
     | 
    
         
            -
            ``` 
     | 
| 
      
 138 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       147 
139 
     | 
    
         
             
            spec.add_development_dependency "super_diff"
         
     | 
| 
       148 
140 
     | 
    
         
             
            ```
         
     | 
| 
       149 
141 
     | 
    
         | 
| 
       150 
142 
     | 
    
         
             
            Now add the following to your `spec_helper`:
         
     | 
| 
       151 
143 
     | 
    
         | 
| 
       152 
     | 
    
         
            -
            ``` 
     | 
| 
      
 144 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       153 
145 
     | 
    
         
             
            require "super_diff/rspec"
         
     | 
| 
       154 
146 
     | 
    
         
             
            ```
         
     | 
| 
       155 
147 
     | 
    
         | 
| 
         @@ -161,7 +153,7 @@ to your test helper file 
     | 
|
| 
       161 
153 
     | 
    
         
             
            (`rails_helper` or `spec_helper`)
         
     | 
| 
       162 
154 
     | 
    
         
             
            which looks something like this:
         
     | 
| 
       163 
155 
     | 
    
         | 
| 
       164 
     | 
    
         
            -
            ``` 
     | 
| 
      
 156 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       165 
157 
     | 
    
         
             
            SuperDiff.configure do |config|
         
     | 
| 
       166 
158 
     | 
    
         
             
              # ...
         
     | 
| 
       167 
159 
     | 
    
         
             
            end
         
     | 
| 
         @@ -172,7 +164,7 @@ end 
     | 
|
| 
       172 
164 
     | 
    
         
             
            If you don't like the colors that SuperDiff uses,
         
     | 
| 
       173 
165 
     | 
    
         
             
            you can change them like this:
         
     | 
| 
       174 
166 
     | 
    
         | 
| 
       175 
     | 
    
         
            -
            ``` 
     | 
| 
      
 167 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       176 
168 
     | 
    
         
             
            SuperDiff.configure do |config|
         
     | 
| 
       177 
169 
     | 
    
         
             
              config.actual_color = :green
         
     | 
| 
       178 
170 
     | 
    
         
             
              config.expected_color = :red
         
     | 
| 
         @@ -184,6 +176,53 @@ end 
     | 
|
| 
       184 
176 
     | 
    
         
             
            See [eight_bit_color.rb](lib/super_diff/csi/eight_bit_color.rb)
         
     | 
| 
       185 
177 
     | 
    
         
             
            for the list of available colors.
         
     | 
| 
       186 
178 
     | 
    
         | 
| 
      
 179 
     | 
    
         
            +
            You can also completely disable colorized output.
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
            <!-- prettier-ignore-start -->
         
     | 
| 
      
 182 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 183 
     | 
    
         
            +
            SuperDiff.configure do |config|
         
     | 
| 
      
 184 
     | 
    
         
            +
              config.color_enabled = false
         
     | 
| 
      
 185 
     | 
    
         
            +
              end
         
     | 
| 
      
 186 
     | 
    
         
            +
            ```
         
     | 
| 
      
 187 
     | 
    
         
            +
            <!-- prettier-ignore-end -->
         
     | 
| 
      
 188 
     | 
    
         
            +
             
     | 
| 
      
 189 
     | 
    
         
            +
            ### Disabling the key
         
     | 
| 
      
 190 
     | 
    
         
            +
             
     | 
| 
      
 191 
     | 
    
         
            +
            You can disable the key by changing the following config (default: true):
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
            <!-- prettier-ignore-start -->
         
     | 
| 
      
 194 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 195 
     | 
    
         
            +
            SuperDiff.configure do |config|
         
     | 
| 
      
 196 
     | 
    
         
            +
              config.key_enabled = false
         
     | 
| 
      
 197 
     | 
    
         
            +
            end
         
     | 
| 
      
 198 
     | 
    
         
            +
            ```
         
     | 
| 
      
 199 
     | 
    
         
            +
            <!-- prettier-ignore-end -->
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
            ### Hiding unimportant lines
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
            When looking at a large diff for which many of the lines do not change,
         
     | 
| 
      
 204 
     | 
    
         
            +
            it can be difficult to locate the lines which do. Text-oriented
         
     | 
| 
      
 205 
     | 
    
         
            +
            diffs such as those you get from a conventional version control system
         
     | 
| 
      
 206 
     | 
    
         
            +
            solve this problem by removing those unchanged lines from the diff
         
     | 
| 
      
 207 
     | 
    
         
            +
            entirely. The same can be done in SuperDiff.
         
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
      
 209 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 210 
     | 
    
         
            +
            SuperDiff.configure do |config|
         
     | 
| 
      
 211 
     | 
    
         
            +
              config.diff_elision_enabled = false
         
     | 
| 
      
 212 
     | 
    
         
            +
              config.diff_elision_maximum = 3
         
     | 
| 
      
 213 
     | 
    
         
            +
            end
         
     | 
| 
      
 214 
     | 
    
         
            +
            ```
         
     | 
| 
      
 215 
     | 
    
         
            +
             
     | 
| 
      
 216 
     | 
    
         
            +
            - `diff_elision_enabled` — The elision logic is disabled by default so
         
     | 
| 
      
 217 
     | 
    
         
            +
              as not to surprise people, so setting this to `true` will turn it on.
         
     | 
| 
      
 218 
     | 
    
         
            +
            - `diff_elision_maximum` — This number controls what happens to
         
     | 
| 
      
 219 
     | 
    
         
            +
              unchanged lines (i.e. lines that are neither "insert" lines nor
         
     | 
| 
      
 220 
     | 
    
         
            +
              "delete" lines) that are in between changed lines. If a section of
         
     | 
| 
      
 221 
     | 
    
         
            +
              unchanged lines is beyond this number, the gem will elide (a fancy
         
     | 
| 
      
 222 
     | 
    
         
            +
              word for remove) the data structures within that section as much as
         
     | 
| 
      
 223 
     | 
    
         
            +
              possible until the limit is reached or it cannot go further. Elided
         
     | 
| 
      
 224 
     | 
    
         
            +
              lines are replaced with a `# ...` marker.
         
     | 
| 
      
 225 
     | 
    
         
            +
             
     | 
| 
       187 
226 
     | 
    
         
             
            ### Diffing custom objects
         
     | 
| 
       188 
227 
     | 
    
         | 
| 
       189 
228 
     | 
    
         
             
            If you are comparing two data structures
         
     | 
| 
         @@ -197,7 +236,7 @@ of key pieces involved in the diffing process. 
     | 
|
| 
       197 
236 
     | 
    
         
             
            I'll have more about how that works soon,
         
     | 
| 
       198 
237 
     | 
    
         
             
            but here is what such a configuration would look like:
         
     | 
| 
       199 
238 
     | 
    
         | 
| 
       200 
     | 
    
         
            -
            ``` 
     | 
| 
      
 239 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       201 
240 
     | 
    
         
             
            SuperDiff.configure do |config|
         
     | 
| 
       202 
241 
     | 
    
         
             
              config.add_extra_differ_class(YourDiffer)
         
     | 
| 
       203 
242 
     | 
    
         
             
              config.add_extra_operation_tree_builder_class(YourOperationTreeBuilder)
         
     | 
| 
         @@ -231,9 +270,9 @@ I'll get notified right away! 
     | 
|
| 
       231 
270 
     | 
    
         
             
            ## Compatibility
         
     | 
| 
       232 
271 
     | 
    
         | 
| 
       233 
272 
     | 
    
         
             
            `super_diff` is [tested][gh-actions] to work with
         
     | 
| 
       234 
     | 
    
         
            -
            Ruby >=  
     | 
| 
      
 273 
     | 
    
         
            +
            Ruby >= 3.x,
         
     | 
| 
       235 
274 
     | 
    
         
             
            RSpec 3.x,
         
     | 
| 
       236 
     | 
    
         
            -
            and Rails >=  
     | 
| 
      
 275 
     | 
    
         
            +
            and Rails >= 6.x.
         
     | 
| 
       237 
276 
     | 
    
         | 
| 
       238 
277 
     | 
    
         
             
            [gh-actions]: https://github.com/mcmire/super_diff/actions?query=workflow%3ASuperDiff
         
     | 
| 
       239 
278 
     | 
    
         | 
| 
         @@ -242,10 +281,10 @@ and Rails >= 5.x. 
     | 
|
| 
       242 
281 
     | 
    
         
             
            In developing this gem
         
     | 
| 
       243 
282 
     | 
    
         
             
            I made use of or was heavily inspired by these libraries:
         
     | 
| 
       244 
283 
     | 
    
         | 
| 
       245 
     | 
    
         
            -
             
     | 
| 
      
 284 
     | 
    
         
            +
            - [Diff::LCS][diff-lcs],
         
     | 
| 
       246 
285 
     | 
    
         
             
              the library I started with in the [original version of this gem][original-version]
         
     | 
| 
       247 
286 
     | 
    
         
             
              (made in 2011!)
         
     | 
| 
       248 
     | 
    
         
            -
             
     | 
| 
      
 287 
     | 
    
         
            +
            - The pretty-printing algorithms and API within [PrettyPrinter][pretty-printer] and [AwesomePrint][awesome-print],
         
     | 
| 
       249 
288 
     | 
    
         
             
              from which I borrowed ideas to develop the [inspectors][inspection-tree].
         
     | 
| 
       250 
289 
     | 
    
         | 
| 
       251 
290 
     | 
    
         
             
            Thank you to the authors of these libraries!
         
     | 
| 
         @@ -3,8 +3,7 @@ module SuperDiff 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module Differs
         
     | 
| 
       4 
4 
     | 
    
         
             
                  class ActiveRecordRelation < SuperDiff::Differs::Base
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def self.applies_to?(expected, actual)
         
     | 
| 
       6 
     | 
    
         
            -
                      expected.is_a?(::Array) &&
         
     | 
| 
       7 
     | 
    
         
            -
                        actual.is_a?(::ActiveRecord::Relation)
         
     | 
| 
      
 6 
     | 
    
         
            +
                      expected.is_a?(::Array) && actual.is_a?(::ActiveRecord::Relation)
         
     | 
| 
       8 
7 
     | 
    
         
             
                    end
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
       10 
9 
     | 
    
         
             
                    protected
         
     | 
    
        data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model.rb
    CHANGED
    
    | 
         @@ -10,31 +10,23 @@ module SuperDiff 
     | 
|
| 
       10 
10 
     | 
    
         
             
                      def call
         
     | 
| 
       11 
11 
     | 
    
         
             
                        SuperDiff::ObjectInspection::InspectionTree.new do
         
     | 
| 
       12 
12 
     | 
    
         
             
                          as_lines_when_rendering_to_lines(collection_bookend: :open) do
         
     | 
| 
       13 
     | 
    
         
            -
                            add_text  
     | 
| 
       14 
     | 
    
         
            -
                              "#<#{object.class} "
         
     | 
| 
       15 
     | 
    
         
            -
                            end
         
     | 
| 
      
 13 
     | 
    
         
            +
                            add_text { |object| "#<#{object.class} " }
         
     | 
| 
       16 
14 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                            when_rendering_to_lines  
     | 
| 
       18 
     | 
    
         
            -
                              add_text "{"
         
     | 
| 
       19 
     | 
    
         
            -
                            end
         
     | 
| 
      
 15 
     | 
    
         
            +
                            when_rendering_to_lines { add_text "{" }
         
     | 
| 
       20 
16 
     | 
    
         
             
                          end
         
     | 
| 
       21 
17 
     | 
    
         | 
| 
       22 
18 
     | 
    
         
             
                          nested do |object|
         
     | 
| 
       23 
19 
     | 
    
         
             
                            insert_separated_list(
         
     | 
| 
       24 
     | 
    
         
            -
                              ["id"] + (object.attributes.keys.sort - ["id"]) 
     | 
| 
      
 20 
     | 
    
         
            +
                              ["id"] + (object.attributes.keys.sort - ["id"])
         
     | 
| 
       25 
21 
     | 
    
         
             
                            ) do |name|
         
     | 
| 
       26 
     | 
    
         
            -
                              as_prefix_when_rendering_to_lines  
     | 
| 
       27 
     | 
    
         
            -
                                add_text "#{name}: "
         
     | 
| 
       28 
     | 
    
         
            -
                              end
         
     | 
| 
      
 22 
     | 
    
         
            +
                              as_prefix_when_rendering_to_lines { add_text "#{name}: " }
         
     | 
| 
       29 
23 
     | 
    
         | 
| 
       30 
24 
     | 
    
         
             
                              add_inspection_of object.read_attribute(name)
         
     | 
| 
       31 
25 
     | 
    
         
             
                            end
         
     | 
| 
       32 
26 
     | 
    
         
             
                          end
         
     | 
| 
       33 
27 
     | 
    
         | 
| 
       34 
28 
     | 
    
         
             
                          as_lines_when_rendering_to_lines(collection_bookend: :close) do
         
     | 
| 
       35 
     | 
    
         
            -
                            when_rendering_to_lines  
     | 
| 
       36 
     | 
    
         
            -
                              add_text "}"
         
     | 
| 
       37 
     | 
    
         
            -
                            end
         
     | 
| 
      
 29 
     | 
    
         
            +
                            when_rendering_to_lines { add_text "}" }
         
     | 
| 
       38 
30 
     | 
    
         | 
| 
       39 
31 
     | 
    
         
             
                            add_text ">"
         
     | 
| 
       40 
32 
     | 
    
         
             
                          end
         
     | 
| 
         @@ -13,9 +13,7 @@ module SuperDiff 
     | 
|
| 
       13 
13 
     | 
    
         
             
                            add_text "#<ActiveRecord::Relation ["
         
     | 
| 
       14 
14 
     | 
    
         
             
                          end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                          nested  
     | 
| 
       17 
     | 
    
         
            -
                            insert_array_inspection_of(array)
         
     | 
| 
       18 
     | 
    
         
            -
                          end
         
     | 
| 
      
 16 
     | 
    
         
            +
                          nested { |array| insert_array_inspection_of(array) }
         
     | 
| 
       19 
17 
     | 
    
         | 
| 
       20 
18 
     | 
    
         
             
                          as_lines_when_rendering_to_lines(collection_bookend: :close) do
         
     | 
| 
       21 
19 
     | 
    
         
             
                            add_text "]>"
         
     | 
| 
         @@ -4,11 +4,11 @@ module SuperDiff 
     | 
|
| 
       4 
4 
     | 
    
         
             
                  module InspectionTreeBuilders
         
     | 
| 
       5 
5 
     | 
    
         
             
                    autoload(
         
     | 
| 
       6 
6 
     | 
    
         
             
                      :ActiveRecordModel,
         
     | 
| 
       7 
     | 
    
         
            -
                      "super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model" 
     | 
| 
      
 7 
     | 
    
         
            +
                      "super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model"
         
     | 
| 
       8 
8 
     | 
    
         
             
                    )
         
     | 
| 
       9 
9 
     | 
    
         
             
                    autoload(
         
     | 
| 
       10 
10 
     | 
    
         
             
                      :ActiveRecordRelation,
         
     | 
| 
       11 
     | 
    
         
            -
                      "super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation" 
     | 
| 
      
 11 
     | 
    
         
            +
                      "super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation"
         
     | 
| 
       12 
12 
     | 
    
         
             
                    )
         
     | 
| 
       13 
13 
     | 
    
         
             
                  end
         
     | 
| 
       14 
14 
     | 
    
         
             
                end
         
     | 
| 
         @@ -4,8 +4,7 @@ module SuperDiff 
     | 
|
| 
       4 
4 
     | 
    
         
             
                  class ActiveRecordModel < SuperDiff::OperationTreeBuilders::CustomObject
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def self.applies_to?(expected, actual)
         
     | 
| 
       6 
6 
     | 
    
         
             
                      expected.is_a?(::ActiveRecord::Base) &&
         
     | 
| 
       7 
     | 
    
         
            -
                        actual.is_a?(::ActiveRecord::Base) &&
         
     | 
| 
       8 
     | 
    
         
            -
                        expected.class == actual.class
         
     | 
| 
      
 7 
     | 
    
         
            +
                        actual.is_a?(::ActiveRecord::Base) && expected.class == actual.class
         
     | 
| 
       9 
8 
     | 
    
         
             
                    end
         
     | 
| 
       10 
9 
     | 
    
         | 
| 
       11 
10 
     | 
    
         
             
                    protected
         
     | 
| 
         @@ -3,8 +3,7 @@ module SuperDiff 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module OperationTreeBuilders
         
     | 
| 
       4 
4 
     | 
    
         
             
                  class ActiveRecordRelation < SuperDiff::OperationTreeBuilders::Array
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def self.applies_to?(expected, actual)
         
     | 
| 
       6 
     | 
    
         
            -
                      expected.is_a?(::Array) &&
         
     | 
| 
       7 
     | 
    
         
            -
                        actual.is_a?(::ActiveRecord::Relation)
         
     | 
| 
      
 6 
     | 
    
         
            +
                      expected.is_a?(::Array) && actual.is_a?(::ActiveRecord::Relation)
         
     | 
| 
       8 
7 
     | 
    
         
             
                    end
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
       10 
9 
     | 
    
         
             
                    def initialize(actual:, **rest)
         
     | 
| 
         @@ -3,11 +3,11 @@ module SuperDiff 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module OperationTreeBuilders
         
     | 
| 
       4 
4 
     | 
    
         
             
                  autoload(
         
     | 
| 
       5 
5 
     | 
    
         
             
                    :ActiveRecordModel,
         
     | 
| 
       6 
     | 
    
         
            -
                    "super_diff/active_record/operation_tree_builders/active_record_model" 
     | 
| 
      
 6 
     | 
    
         
            +
                    "super_diff/active_record/operation_tree_builders/active_record_model"
         
     | 
| 
       7 
7 
     | 
    
         
             
                  )
         
     | 
| 
       8 
8 
     | 
    
         
             
                  autoload(
         
     | 
| 
       9 
9 
     | 
    
         
             
                    :ActiveRecordRelation,
         
     | 
| 
       10 
     | 
    
         
            -
                    "super_diff/active_record/operation_tree_builders/active_record_relation" 
     | 
| 
      
 10 
     | 
    
         
            +
                    "super_diff/active_record/operation_tree_builders/active_record_relation"
         
     | 
| 
       11 
11 
     | 
    
         
             
                  )
         
     | 
| 
       12 
12 
     | 
    
         
             
                end
         
     | 
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
         @@ -3,34 +3,26 @@ require "super_diff/active_support" 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module SuperDiff
         
     | 
| 
       4 
4 
     | 
    
         
             
              module ActiveRecord
         
     | 
| 
       5 
5 
     | 
    
         
             
                autoload :Differs, "super_diff/active_record/differs"
         
     | 
| 
       6 
     | 
    
         
            -
                autoload(
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  "super_diff/active_record/object_inspection",
         
     | 
| 
       9 
     | 
    
         
            -
                )
         
     | 
| 
       10 
     | 
    
         
            -
                autoload(
         
     | 
| 
       11 
     | 
    
         
            -
                  :OperationTrees,
         
     | 
| 
       12 
     | 
    
         
            -
                  "super_diff/active_record/operation_trees",
         
     | 
| 
       13 
     | 
    
         
            -
                )
         
     | 
| 
      
 6 
     | 
    
         
            +
                autoload(:ObjectInspection, "super_diff/active_record/object_inspection")
         
     | 
| 
      
 7 
     | 
    
         
            +
                autoload(:OperationTrees, "super_diff/active_record/operation_trees")
         
     | 
| 
       14 
8 
     | 
    
         
             
                autoload(
         
     | 
| 
       15 
9 
     | 
    
         
             
                  :OperationTreeBuilders,
         
     | 
| 
       16 
     | 
    
         
            -
                  "super_diff/active_record/operation_tree_builders" 
     | 
| 
      
 10 
     | 
    
         
            +
                  "super_diff/active_record/operation_tree_builders"
         
     | 
| 
       17 
11 
     | 
    
         
             
                )
         
     | 
| 
       18 
12 
     | 
    
         
             
                autoload(
         
     | 
| 
       19 
13 
     | 
    
         
             
                  :OperationTreeFlatteners,
         
     | 
| 
       20 
     | 
    
         
            -
                  "super_diff/active_record/operation_tree_flatteners" 
     | 
| 
      
 14 
     | 
    
         
            +
                  "super_diff/active_record/operation_tree_flatteners"
         
     | 
| 
       21 
15 
     | 
    
         
             
                )
         
     | 
| 
       22 
16 
     | 
    
         | 
| 
       23 
17 
     | 
    
         
             
                SuperDiff.configure do |config|
         
     | 
| 
       24 
     | 
    
         
            -
                  config.add_extra_differ_classes(
         
     | 
| 
       25 
     | 
    
         
            -
                    Differs::ActiveRecordRelation,
         
     | 
| 
       26 
     | 
    
         
            -
                  )
         
     | 
| 
      
 18 
     | 
    
         
            +
                  config.add_extra_differ_classes(Differs::ActiveRecordRelation)
         
     | 
| 
       27 
19 
     | 
    
         
             
                  config.add_extra_operation_tree_builder_classes(
         
     | 
| 
       28 
20 
     | 
    
         
             
                    OperationTreeBuilders::ActiveRecordModel,
         
     | 
| 
       29 
     | 
    
         
            -
                    OperationTreeBuilders::ActiveRecordRelation 
     | 
| 
      
 21 
     | 
    
         
            +
                    OperationTreeBuilders::ActiveRecordRelation
         
     | 
| 
       30 
22 
     | 
    
         
             
                  )
         
     | 
| 
       31 
23 
     | 
    
         
             
                  config.add_extra_inspection_tree_builder_classes(
         
     | 
| 
       32 
24 
     | 
    
         
             
                    ObjectInspection::InspectionTreeBuilders::ActiveRecordModel,
         
     | 
| 
       33 
     | 
    
         
            -
                    ObjectInspection::InspectionTreeBuilders::ActiveRecordRelation 
     | 
| 
      
 25 
     | 
    
         
            +
                    ObjectInspection::InspectionTreeBuilders::ActiveRecordRelation
         
     | 
| 
       34 
26 
     | 
    
         
             
                  )
         
     | 
| 
       35 
27 
     | 
    
         
             
                end
         
     | 
| 
       36 
28 
     | 
    
         
             
              end
         
     | 
| 
         @@ -4,13 +4,12 @@ module SuperDiff 
     | 
|
| 
       4 
4 
     | 
    
         
             
                  class HashWithIndifferentAccess < SuperDiff::Differs::Hash
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def self.applies_to?(expected, actual)
         
     | 
| 
       6 
6 
     | 
    
         
             
                      (
         
     | 
| 
       7 
     | 
    
         
            -
                        expected.is_a?(::HashWithIndifferentAccess) &&
         
     | 
| 
       8 
     | 
    
         
            -
                          actual.is_a?(::Hash)
         
     | 
| 
      
 7 
     | 
    
         
            +
                        expected.is_a?(::HashWithIndifferentAccess) && actual.is_a?(::Hash)
         
     | 
| 
       9 
8 
     | 
    
         
             
                      ) ||
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
                        (
         
     | 
| 
      
 10 
     | 
    
         
            +
                          expected.is_a?(::Hash) &&
         
     | 
| 
      
 11 
     | 
    
         
            +
                            actual.is_a?(::HashWithIndifferentAccess)
         
     | 
| 
      
 12 
     | 
    
         
            +
                        )
         
     | 
| 
       14 
13 
     | 
    
         
             
                    end
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
15 
     | 
    
         
             
                    protected
         
     | 
| 
         @@ -13,17 +13,11 @@ module SuperDiff 
     | 
|
| 
       13 
13 
     | 
    
         
             
                            add_text "#<HashWithIndifferentAccess {"
         
     | 
| 
       14 
14 
     | 
    
         
             
                          end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                          when_rendering_to_string  
     | 
| 
       17 
     | 
    
         
            -
                            add_text " "
         
     | 
| 
       18 
     | 
    
         
            -
                          end
         
     | 
| 
      
 16 
     | 
    
         
            +
                          when_rendering_to_string { add_text " " }
         
     | 
| 
       19 
17 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                          nested  
     | 
| 
       21 
     | 
    
         
            -
                            insert_hash_inspection_of(hash)
         
     | 
| 
       22 
     | 
    
         
            -
                          end
         
     | 
| 
      
 18 
     | 
    
         
            +
                          nested { |hash| insert_hash_inspection_of(hash) }
         
     | 
| 
       23 
19 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                          when_rendering_to_string  
     | 
| 
       25 
     | 
    
         
            -
                            add_text " "
         
     | 
| 
       26 
     | 
    
         
            -
                          end
         
     | 
| 
      
 20 
     | 
    
         
            +
                          when_rendering_to_string { add_text " " }
         
     | 
| 
       27 
21 
     | 
    
         | 
| 
       28 
22 
     | 
    
         
             
                          as_lines_when_rendering_to_lines(collection_bookend: :close) do
         
     | 
| 
       29 
23 
     | 
    
         
             
                            add_text "}>"
         
     | 
| 
         @@ -4,7 +4,7 @@ module SuperDiff 
     | 
|
| 
       4 
4 
     | 
    
         
             
                  module InspectionTreeBuilders
         
     | 
| 
       5 
5 
     | 
    
         
             
                    autoload(
         
     | 
| 
       6 
6 
     | 
    
         
             
                      :HashWithIndifferentAccess,
         
     | 
| 
       7 
     | 
    
         
            -
                      "super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access" 
     | 
| 
      
 7 
     | 
    
         
            +
                      "super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access"
         
     | 
| 
       8 
8 
     | 
    
         
             
                    )
         
     | 
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
         @@ -4,13 +4,12 @@ module SuperDiff 
     | 
|
| 
       4 
4 
     | 
    
         
             
                  class HashWithIndifferentAccess < SuperDiff::OperationTreeBuilders::Hash
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def self.applies_to?(expected, actual)
         
     | 
| 
       6 
6 
     | 
    
         
             
                      (
         
     | 
| 
       7 
     | 
    
         
            -
                        expected.is_a?(::HashWithIndifferentAccess) &&
         
     | 
| 
       8 
     | 
    
         
            -
                          actual.is_a?(::Hash)
         
     | 
| 
      
 7 
     | 
    
         
            +
                        expected.is_a?(::HashWithIndifferentAccess) && actual.is_a?(::Hash)
         
     | 
| 
       9 
8 
     | 
    
         
             
                      ) ||
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
                        (
         
     | 
| 
      
 10 
     | 
    
         
            +
                          expected.is_a?(::Hash) &&
         
     | 
| 
      
 11 
     | 
    
         
            +
                            actual.is_a?(::HashWithIndifferentAccess)
         
     | 
| 
      
 12 
     | 
    
         
            +
                        )
         
     | 
| 
       14 
13 
     | 
    
         
             
                    end
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
15 
     | 
    
         
             
                    def initialize(expected:, actual:, **rest)
         
     | 
| 
         @@ -3,7 +3,7 @@ module SuperDiff 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module OperationTreeBuilders
         
     | 
| 
       4 
4 
     | 
    
         
             
                  autoload(
         
     | 
| 
       5 
5 
     | 
    
         
             
                    :HashWithIndifferentAccess,
         
     | 
| 
       6 
     | 
    
         
            -
                    "super_diff/active_support/operation_tree_builders/hash_with_indifferent_access" 
     | 
| 
      
 6 
     | 
    
         
            +
                    "super_diff/active_support/operation_tree_builders/hash_with_indifferent_access"
         
     | 
| 
       7 
7 
     | 
    
         
             
                  )
         
     | 
| 
       8 
8 
     | 
    
         
             
                end
         
     | 
| 
       9 
9 
     | 
    
         
             
              end
         
     | 
| 
         @@ -3,7 +3,7 @@ module SuperDiff 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module OperationTreeFlatteners
         
     | 
| 
       4 
4 
     | 
    
         
             
                  autoload(
         
     | 
| 
       5 
5 
     | 
    
         
             
                    :HashWithIndifferentAccess,
         
     | 
| 
       6 
     | 
    
         
            -
                    "super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access" 
     | 
| 
      
 6 
     | 
    
         
            +
                    "super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access"
         
     | 
| 
       7 
7 
     | 
    
         
             
                  )
         
     | 
| 
       8 
8 
     | 
    
         
             
                end
         
     | 
| 
       9 
9 
     | 
    
         
             
              end
         
     | 
| 
         @@ -2,28 +2,23 @@ module SuperDiff 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module ActiveSupport
         
     | 
| 
       3 
3 
     | 
    
         
             
                autoload :Differs, "super_diff/active_support/differs"
         
     | 
| 
       4 
4 
     | 
    
         
             
                autoload :ObjectInspection, "super_diff/active_support/object_inspection"
         
     | 
| 
       5 
     | 
    
         
            -
                autoload(
         
     | 
| 
       6 
     | 
    
         
            -
                  :OperationTrees,
         
     | 
| 
       7 
     | 
    
         
            -
                  "super_diff/active_support/operation_trees",
         
     | 
| 
       8 
     | 
    
         
            -
                )
         
     | 
| 
      
 5 
     | 
    
         
            +
                autoload(:OperationTrees, "super_diff/active_support/operation_trees")
         
     | 
| 
       9 
6 
     | 
    
         
             
                autoload(
         
     | 
| 
       10 
7 
     | 
    
         
             
                  :OperationTreeBuilders,
         
     | 
| 
       11 
     | 
    
         
            -
                  "super_diff/active_support/operation_tree_builders" 
     | 
| 
      
 8 
     | 
    
         
            +
                  "super_diff/active_support/operation_tree_builders"
         
     | 
| 
       12 
9 
     | 
    
         
             
                )
         
     | 
| 
       13 
10 
     | 
    
         
             
                autoload(
         
     | 
| 
       14 
11 
     | 
    
         
             
                  :OperationTreeFlatteners,
         
     | 
| 
       15 
     | 
    
         
            -
                  "super_diff/active_support/operation_tree_flatteners" 
     | 
| 
      
 12 
     | 
    
         
            +
                  "super_diff/active_support/operation_tree_flatteners"
         
     | 
| 
       16 
13 
     | 
    
         
             
                )
         
     | 
| 
       17 
14 
     | 
    
         | 
| 
       18 
15 
     | 
    
         
             
                SuperDiff.configure do |config|
         
     | 
| 
       19 
     | 
    
         
            -
                  config.add_extra_differ_classes(
         
     | 
| 
       20 
     | 
    
         
            -
                    Differs::HashWithIndifferentAccess,
         
     | 
| 
       21 
     | 
    
         
            -
                  )
         
     | 
| 
      
 16 
     | 
    
         
            +
                  config.add_extra_differ_classes(Differs::HashWithIndifferentAccess)
         
     | 
| 
       22 
17 
     | 
    
         
             
                  config.add_extra_operation_tree_builder_classes(
         
     | 
| 
       23 
     | 
    
         
            -
                    OperationTreeBuilders::HashWithIndifferentAccess 
     | 
| 
      
 18 
     | 
    
         
            +
                    OperationTreeBuilders::HashWithIndifferentAccess
         
     | 
| 
       24 
19 
     | 
    
         
             
                  )
         
     | 
| 
       25 
20 
     | 
    
         
             
                  config.add_extra_inspection_tree_builder_classes(
         
     | 
| 
       26 
     | 
    
         
            -
                    ObjectInspection::InspectionTreeBuilders::HashWithIndifferentAccess 
     | 
| 
      
 21 
     | 
    
         
            +
                    ObjectInspection::InspectionTreeBuilders::HashWithIndifferentAccess
         
     | 
| 
       27 
22 
     | 
    
         
             
                  )
         
     | 
| 
       28 
23 
     | 
    
         
             
                end
         
     | 
| 
       29 
24 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,12 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module SuperDiff
         
     | 
| 
       2 
2 
     | 
    
         
             
              module ColorizedDocumentExtensions
         
     | 
| 
       3 
3 
     | 
    
         
             
                def self.extended(extendee)
         
     | 
| 
       4 
     | 
    
         
            -
                  extendee.singleton_class.class_eval  
     | 
| 
       5 
     | 
    
         
            -
                    alias_method :normal, :text
         
     | 
| 
       6 
     | 
    
         
            -
                  end
         
     | 
| 
      
 4 
     | 
    
         
            +
                  extendee.singleton_class.class_eval { alias_method :normal, :text }
         
     | 
| 
       7 
5 
     | 
    
         
             
                end
         
     | 
| 
       8 
6 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                [ 
     | 
| 
      
 7 
     | 
    
         
            +
                %i[actual border elision_marker expected header].each do |method_name|
         
     | 
| 
       10 
8 
     | 
    
         
             
                  define_method(method_name) do |*args, **opts, &block|
         
     | 
| 
       11 
9 
     | 
    
         
             
                    colorize(
         
     | 
| 
       12 
10 
     | 
    
         
             
                      *args,
         
     |