super_diff 0.12.1 → 0.15.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 +7 -19
- data/lib/super_diff/active_record/differs/active_record_relation.rb +2 -0
- data/lib/super_diff/active_record/differs.rb +3 -1
- data/lib/super_diff/active_record/inspection_tree_builders/active_record_model.rb +7 -5
- data/lib/super_diff/active_record/inspection_tree_builders/active_record_relation.rb +12 -10
- data/lib/super_diff/active_record/inspection_tree_builders.rb +4 -2
- data/lib/super_diff/active_record/monkey_patches.rb +4 -2
- data/lib/super_diff/active_record/object_inspection.rb +6 -4
- data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +3 -1
- data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +3 -1
- data/lib/super_diff/active_record/operation_tree_builders.rb +4 -2
- data/lib/super_diff/active_record/operation_tree_flatteners/active_record_relation.rb +4 -2
- data/lib/super_diff/active_record/operation_tree_flatteners.rb +3 -1
- data/lib/super_diff/active_record/operation_trees/active_record_relation.rb +2 -0
- data/lib/super_diff/active_record/operation_trees.rb +3 -1
- data/lib/super_diff/active_record.rb +10 -8
- data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +2 -0
- data/lib/super_diff/active_support/differs.rb +3 -1
- data/lib/super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access.rb +16 -14
- data/lib/super_diff/active_support/inspection_tree_builders/ordered_options.rb +16 -14
- data/lib/super_diff/active_support/inspection_tree_builders.rb +4 -2
- data/lib/super_diff/active_support/object_inspection.rb +6 -4
- data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +6 -4
- data/lib/super_diff/active_support/operation_tree_builders.rb +3 -1
- data/lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb +4 -2
- data/lib/super_diff/active_support/operation_tree_flatteners.rb +3 -1
- data/lib/super_diff/active_support/operation_trees/hash_with_indifferent_access.rb +2 -0
- data/lib/super_diff/active_support/operation_trees.rb +3 -1
- data/lib/super_diff/active_support.rb +8 -6
- data/lib/super_diff/basic/diff_formatters/collection.rb +18 -18
- data/lib/super_diff/basic/diff_formatters/multiline_string.rb +2 -0
- data/lib/super_diff/basic/diff_formatters.rb +4 -2
- data/lib/super_diff/basic/differs/array.rb +2 -0
- data/lib/super_diff/basic/differs/custom_object.rb +3 -1
- data/lib/super_diff/basic/differs/date_like.rb +2 -0
- data/lib/super_diff/basic/differs/default_object.rb +3 -1
- data/lib/super_diff/basic/differs/hash.rb +2 -0
- data/lib/super_diff/basic/differs/multiline_string.rb +2 -0
- data/lib/super_diff/basic/differs/time_like.rb +2 -0
- data/lib/super_diff/basic/differs.rb +11 -9
- data/lib/super_diff/basic/inspection_tree_builders/array.rb +5 -3
- data/lib/super_diff/basic/inspection_tree_builders/custom_object.rb +5 -3
- data/lib/super_diff/basic/inspection_tree_builders/data_object.rb +42 -0
- data/lib/super_diff/basic/inspection_tree_builders/date_like.rb +7 -5
- data/lib/super_diff/basic/inspection_tree_builders/default_object.rb +7 -5
- data/lib/super_diff/basic/inspection_tree_builders/hash.rb +7 -5
- data/lib/super_diff/basic/inspection_tree_builders/primitive.rb +3 -1
- data/lib/super_diff/basic/inspection_tree_builders/range_object.rb +19 -0
- data/lib/super_diff/basic/inspection_tree_builders/time_like.rb +8 -8
- data/lib/super_diff/basic/inspection_tree_builders.rb +18 -8
- data/lib/super_diff/basic/operation_tree_builders/array.rb +6 -4
- data/lib/super_diff/basic/operation_tree_builders/custom_object.rb +3 -1
- data/lib/super_diff/basic/operation_tree_builders/data_object.rb +20 -0
- data/lib/super_diff/basic/operation_tree_builders/date_like.rb +2 -0
- data/lib/super_diff/basic/operation_tree_builders/default_object.rb +32 -31
- data/lib/super_diff/basic/operation_tree_builders/hash.rb +49 -46
- data/lib/super_diff/basic/operation_tree_builders/multiline_string.rb +5 -3
- data/lib/super_diff/basic/operation_tree_builders/time_like.rb +5 -3
- data/lib/super_diff/basic/operation_tree_builders.rb +15 -9
- data/lib/super_diff/basic/operation_tree_flatteners/array.rb +4 -2
- data/lib/super_diff/basic/operation_tree_flatteners/collection.rb +11 -11
- data/lib/super_diff/basic/operation_tree_flatteners/custom_object.rb +5 -3
- data/lib/super_diff/basic/operation_tree_flatteners/default_object.rb +6 -5
- data/lib/super_diff/basic/operation_tree_flatteners/hash.rb +5 -3
- data/lib/super_diff/basic/operation_tree_flatteners/multiline_string.rb +3 -1
- data/lib/super_diff/basic/operation_tree_flatteners.rb +8 -6
- data/lib/super_diff/basic/operation_trees/array.rb +2 -0
- data/lib/super_diff/basic/operation_trees/custom_object.rb +2 -0
- data/lib/super_diff/basic/operation_trees/default_object.rb +6 -4
- data/lib/super_diff/basic/operation_trees/hash.rb +2 -0
- data/lib/super_diff/basic/operation_trees/multiline_string.rb +3 -1
- data/lib/super_diff/basic/operation_trees.rb +9 -7
- data/lib/super_diff/basic.rb +12 -7
- data/lib/super_diff/core/abstract_differ.rb +2 -0
- data/lib/super_diff/core/abstract_inspection_tree_builder.rb +2 -0
- data/lib/super_diff/core/abstract_operation_tree.rb +4 -2
- data/lib/super_diff/core/abstract_operation_tree_builder.rb +15 -18
- data/lib/super_diff/core/abstract_operation_tree_flattener.rb +5 -3
- data/lib/super_diff/core/binary_operation.rb +3 -1
- data/lib/super_diff/core/colorized_document_extensions.rb +2 -0
- data/lib/super_diff/core/configuration.rb +23 -43
- data/lib/super_diff/core/differ_dispatcher.rb +4 -2
- data/lib/super_diff/core/gem_version.rb +2 -0
- data/lib/super_diff/core/helpers.rb +14 -12
- data/lib/super_diff/core/implementation_checks.rb +6 -2
- data/lib/super_diff/core/inspection_tree.rb +38 -38
- data/lib/super_diff/core/inspection_tree_builder_dispatcher.rb +5 -5
- data/lib/super_diff/core/inspection_tree_nodes/as_lines_when_rendering_to_lines.rb +3 -1
- data/lib/super_diff/core/inspection_tree_nodes/as_prefix_when_rendering_to_lines.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/as_prelude_when_rendering_to_lines.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/as_single_line.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/base.rb +9 -9
- data/lib/super_diff/core/inspection_tree_nodes/inspection.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/nesting.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/only_when.rb +5 -1
- data/lib/super_diff/core/inspection_tree_nodes/text.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/when_empty.rb +3 -1
- data/lib/super_diff/core/inspection_tree_nodes/when_non_empty.rb +3 -1
- data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_lines.rb +3 -1
- data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_string.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes.rb +16 -14
- data/lib/super_diff/core/line.rb +9 -7
- data/lib/super_diff/core/no_differ_available_error.rb +7 -5
- data/lib/super_diff/core/no_inspection_tree_builder_available_error.rb +5 -3
- data/lib/super_diff/core/no_operation_tree_available_error.rb +4 -2
- data/lib/super_diff/core/no_operation_tree_builder_available_error.rb +7 -5
- data/lib/super_diff/core/operation_tree_builder_dispatcher.rb +3 -3
- data/lib/super_diff/core/operation_tree_finder.rb +8 -8
- data/lib/super_diff/core/prefix_for_next_inspection_tree_node.rb +2 -0
- data/lib/super_diff/core/prelude_for_next_inspection_tree_node.rb +2 -0
- data/lib/super_diff/core/recursion_guard.rb +6 -4
- data/lib/super_diff/core/tiered_lines.rb +2 -0
- data/lib/super_diff/core/tiered_lines_elider.rb +53 -54
- data/lib/super_diff/core/tiered_lines_formatter.rb +6 -4
- data/lib/super_diff/core/unary_operation.rb +2 -0
- data/lib/super_diff/core.rb +31 -29
- data/lib/super_diff/csi/bold_sequence.rb +2 -0
- data/lib/super_diff/csi/color.rb +4 -4
- data/lib/super_diff/csi/color_sequence_block.rb +3 -1
- data/lib/super_diff/csi/colorized_document.rb +7 -9
- data/lib/super_diff/csi/document.rb +15 -18
- data/lib/super_diff/csi/eight_bit_color.rb +32 -37
- data/lib/super_diff/csi/four_bit_color.rb +12 -9
- data/lib/super_diff/csi/reset_sequence.rb +2 -0
- data/lib/super_diff/csi/twenty_four_bit_color.rb +22 -21
- data/lib/super_diff/csi/uncolorized_document.rb +2 -0
- data/lib/super_diff/csi.rb +12 -42
- data/lib/super_diff/differs.rb +6 -4
- data/lib/super_diff/equality_matchers/array.rb +18 -16
- data/lib/super_diff/equality_matchers/base.rb +6 -4
- data/lib/super_diff/equality_matchers/default.rb +5 -3
- data/lib/super_diff/equality_matchers/defaults.rb +3 -1
- data/lib/super_diff/equality_matchers/hash.rb +18 -16
- data/lib/super_diff/equality_matchers/main.rb +3 -1
- data/lib/super_diff/equality_matchers/multiline_string.rb +18 -16
- data/lib/super_diff/equality_matchers/primitive.rb +15 -13
- data/lib/super_diff/equality_matchers/singleline_string.rb +16 -14
- data/lib/super_diff/equality_matchers.rb +11 -9
- data/lib/super_diff/errors.rb +4 -2
- data/lib/super_diff/object_inspection.rb +17 -15
- data/lib/super_diff/operation_tree_builders.rb +6 -4
- data/lib/super_diff/operation_tree_flatteners.rb +6 -4
- data/lib/super_diff/operation_trees.rb +6 -4
- data/lib/super_diff/operations.rb +4 -2
- data/lib/super_diff/rails.rb +4 -2
- data/lib/super_diff/rspec/augmented_matcher.rb +3 -1
- data/lib/super_diff/rspec/differ.rb +16 -7
- data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +2 -0
- data/lib/super_diff/rspec/differs/collection_including.rb +2 -0
- data/lib/super_diff/rspec/differs/hash_including.rb +2 -0
- data/lib/super_diff/rspec/differs/object_having_attributes.rb +2 -0
- data/lib/super_diff/rspec/differs.rb +6 -4
- data/lib/super_diff/rspec/inspection_tree_builders/collection_containing_exactly.rb +12 -10
- data/lib/super_diff/rspec/inspection_tree_builders/collection_including.rb +10 -8
- data/lib/super_diff/rspec/inspection_tree_builders/double.rb +20 -18
- data/lib/super_diff/rspec/inspection_tree_builders/generic_describable_matcher.rb +2 -0
- data/lib/super_diff/rspec/inspection_tree_builders/hash_including.rb +10 -8
- data/lib/super_diff/rspec/inspection_tree_builders/instance_of.rb +2 -0
- data/lib/super_diff/rspec/inspection_tree_builders/kind_of.rb +2 -0
- data/lib/super_diff/rspec/inspection_tree_builders/object_having_attributes.rb +12 -10
- data/lib/super_diff/rspec/inspection_tree_builders/primitive.rb +2 -0
- data/lib/super_diff/rspec/inspection_tree_builders/value_within.rb +6 -4
- data/lib/super_diff/rspec/inspection_tree_builders.rb +12 -10
- data/lib/super_diff/rspec/matcher_text_builders/base.rb +12 -12
- data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +19 -17
- data/lib/super_diff/rspec/matcher_text_builders/contain_exactly.rb +3 -1
- data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +7 -5
- data/lib/super_diff/rspec/matcher_text_builders/match.rb +6 -4
- data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +5 -3
- data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +20 -18
- data/lib/super_diff/rspec/matcher_text_builders.rb +9 -7
- data/lib/super_diff/rspec/matcher_text_template.rb +34 -39
- data/lib/super_diff/rspec/monkey_patches.rb +129 -56
- data/lib/super_diff/rspec/object_inspection.rb +7 -5
- data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +4 -4
- data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +2 -0
- data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +2 -0
- data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +2 -0
- data/lib/super_diff/rspec/operation_tree_builders.rb +6 -4
- data/lib/super_diff/rspec-rails.rb +4 -2
- data/lib/super_diff/rspec.rb +27 -14
- data/lib/super_diff/version.rb +3 -1
- data/lib/super_diff.rb +24 -27
- data/super_diff.gemspec +20 -18
- metadata +15 -182
- data/spec/examples.txt +0 -704
- data/spec/integration/rails/active_record_spec.rb +0 -21
- data/spec/integration/rails/active_support_spec.rb +0 -19
- data/spec/integration/rails/engines_spec.rb +0 -25
- data/spec/integration/rails/hash_with_indifferent_access_spec.rb +0 -21
- data/spec/integration/rspec/be_falsey_matcher_spec.rb +0 -58
- data/spec/integration/rspec/be_matcher_spec.rb +0 -605
- data/spec/integration/rspec/be_nil_matcher_spec.rb +0 -57
- data/spec/integration/rspec/be_predicate_matcher_spec.rb +0 -615
- data/spec/integration/rspec/be_truthy_matcher_spec.rb +0 -62
- data/spec/integration/rspec/contain_exactly_matcher_spec.rb +0 -377
- data/spec/integration/rspec/eq_matcher_spec.rb +0 -1066
- data/spec/integration/rspec/generic_describable_matchers_spec.rb +0 -177
- data/spec/integration/rspec/have_attributes_matcher_spec.rb +0 -443
- data/spec/integration/rspec/have_predicate_matcher_spec.rb +0 -478
- data/spec/integration/rspec/include_matcher_spec.rb +0 -452
- data/spec/integration/rspec/magic_metadata_spec.rb +0 -51
- data/spec/integration/rspec/match_array_matcher_spec.rb +0 -424
- data/spec/integration/rspec/match_matcher_spec.rb +0 -1359
- data/spec/integration/rspec/raise_error_matcher_spec.rb +0 -1488
- data/spec/integration/rspec/respond_to_matcher_spec.rb +0 -999
- data/spec/integration/rspec/third_party_matcher_spec.rb +0 -245
- data/spec/integration/rspec/unhandled_errors_spec.rb +0 -150
- data/spec/internal/log/test.log +0 -0
- data/spec/spec_helper.rb +0 -90
- data/spec/support/colorizer.rb +0 -9
- data/spec/support/command_runner.rb +0 -253
- data/spec/support/helpers.rb +0 -21
- data/spec/support/integration/helpers.rb +0 -124
- data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
- data/spec/support/integration/matchers.rb +0 -177
- data/spec/support/integration/test_programs/base.rb +0 -143
- data/spec/support/integration/test_programs/plain.rb +0 -19
- data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
- data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
- data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
- data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
- data/spec/support/models/a.rb +0 -11
- data/spec/support/models/active_record/person.rb +0 -28
- data/spec/support/models/active_record/query.rb +0 -15
- data/spec/support/models/active_record/shipping_address.rb +0 -24
- data/spec/support/models/customer.rb +0 -22
- data/spec/support/models/empty_class.rb +0 -6
- data/spec/support/models/item.rb +0 -10
- data/spec/support/models/order.rb +0 -9
- data/spec/support/models/person.rb +0 -20
- data/spec/support/models/player.rb +0 -30
- data/spec/support/models/shipping_address.rb +0 -25
- data/spec/support/shared_examples/active_record.rb +0 -428
- data/spec/support/shared_examples/active_support.rb +0 -188
- data/spec/support/shared_examples/elided_diffs.rb +0 -938
- data/spec/support/shared_examples/hash_with_indifferent_access.rb +0 -749
- data/spec/support/shared_examples/key.rb +0 -123
- data/spec/support/unit/helpers.rb +0 -24
- data/spec/support/unit/matchers/be_deprecated_in_favor_of.rb +0 -39
- data/spec/support/unit/matchers/match_output.rb +0 -40
- data/spec/unit/active_record/object_inspection_spec.rb +0 -289
- data/spec/unit/active_support/object_inspection_spec.rb +0 -170
- data/spec/unit/basic/operation_tree_flatteners/array_spec.rb +0 -637
- data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
- data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
- data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
- data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
- data/spec/unit/core/helpers_spec.rb +0 -68
- data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
- data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
- data/spec/unit/deprecations_spec.rb +0 -176
- data/spec/unit/equality_matchers/main_spec.rb +0 -1842
- data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
- data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
- data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
- data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
- data/spec/unit/rspec/matchers/be_spec.rb +0 -17
- data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
- data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
- data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
- data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
- data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
- data/spec/unit/rspec/matchers/include_spec.rb +0 -21
- data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
- data/spec/unit/rspec/matchers/match_spec.rb +0 -9
- data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
- data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
- data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
- data/spec/unit/rspec/object_inspection_spec.rb +0 -471
- data/spec/unit/super_diff_spec.rb +0 -2115
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ac91e4432f7f0811776000b7a7153addd51ae073428eb03c8ae46218a5fe63d
|
4
|
+
data.tar.gz: 81e25a8e85f13ecb77c6da4a8a923a4958d4f6695104841573bc80f0dec028b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9dd989b77d595b455c73ca7daf7191a9bb5f45f28dedeef4a1729b31f4933935b006beb2c640f063a6041fddb5596f46d876585f995526ed60de5c552ec3b68
|
7
|
+
data.tar.gz: 3f50f8e32f20a2bccdb9b5ca18f39ae9e8b9ebffbe601ce91ecfe0b742d7fffd6ca44fe78a65a5c6fc93598630d37c0d8bd06c27aff352afa27780d103b1413b
|
data/README.md
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
# SuperDiff [![Gem Version][version-badge]][rubygems] [![Build Status][gh-actions-badge]][gh-actions] ![Downloads][downloads-badge]
|
1
|
+
# SuperDiff [![Gem Version][version-badge]][rubygems] [![Build Status][gh-actions-badge]][gh-actions] ![Downloads][downloads-badge]
|
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]: https://img.shields.io/github/actions/workflow/status/
|
5
|
+
[gh-actions-badge]: https://img.shields.io/github/actions/workflow/status/splitwise/super_diff/super_diff.yml?branch=main
|
6
6
|
[downloads-badge]: http://img.shields.io/gem/dtv/super_diff.svg
|
7
7
|
[hound]: https://houndci.com
|
8
|
-
[issuehunt-badge]: https://img.shields.io/badge/sponsored_through-IssueHunt-2EC28C
|
9
|
-
[issuehunt]: https://issuehunt.io/r/mcmire/super_diff
|
10
8
|
|
11
9
|
**SuperDiff** is a Ruby gem
|
12
10
|
which is designed to display the differences between two objects of any type
|
@@ -102,7 +100,7 @@ and you encounter a bug or have a suggestion,
|
|
102
100
|
feel free to [create an issue][issues-list].
|
103
101
|
I'll try to respond to it as soon as I can!
|
104
102
|
|
105
|
-
[issues-list]: https://github.com/
|
103
|
+
[issues-list]: https://github.com/splitwise/super_diff/issues
|
106
104
|
|
107
105
|
## Contributing
|
108
106
|
|
@@ -110,16 +108,6 @@ Any code contributions to improve this library are welcome!
|
|
110
108
|
Please see the [contributing](./docs/contributors/index.md) document
|
111
109
|
for more on how to do that.
|
112
110
|
|
113
|
-
## Sponsoring
|
114
|
-
|
115
|
-
If there's a change you want implemented, you can choose to sponsor that change!
|
116
|
-
`super_diff` is set up on IssueHunt,
|
117
|
-
so feel free to search for an existing issue (or make your own)
|
118
|
-
and [add a bounty][issuehunt].
|
119
|
-
I'll get notified right away!
|
120
|
-
|
121
|
-
[issuehunt]: https://issuehunt.io/r/mcmire/super_diff
|
122
|
-
|
123
111
|
## Compatibility
|
124
112
|
|
125
113
|
`super_diff` is [tested][gh-actions] to work with
|
@@ -127,7 +115,7 @@ Ruby >= 3.x,
|
|
127
115
|
RSpec 3.x,
|
128
116
|
and Rails >= 6.x.
|
129
117
|
|
130
|
-
[gh-actions]: https://github.com/
|
118
|
+
[gh-actions]: https://github.com/splitwise/super_diff/actions?query=workflow%3ASuperDiff
|
131
119
|
|
132
120
|
## Inspiration/Thanks
|
133
121
|
|
@@ -142,13 +130,13 @@ I made use of or was heavily inspired by these libraries:
|
|
142
130
|
|
143
131
|
Thank you to the authors of these libraries!
|
144
132
|
|
145
|
-
[original-version]: https://github.com/
|
133
|
+
[original-version]: https://github.com/splitwise/super_diff/tree/old-master
|
146
134
|
[diff-lcs]: https://github.com/halostatue/diff-lcs
|
147
135
|
[pretty-printer]: https://github.com/ruby/ruby/tree/master/lib/prettyprint.rb
|
148
136
|
[awesome-print]: https://github.com/awesome-print/awesome_print
|
149
|
-
[inspection-tree]: https://github.com/
|
137
|
+
[inspection-tree]: https://github.com/splitwise/super_diff/blob/main/lib/super_diff/core/inspection_tree.rb
|
150
138
|
|
151
139
|
## Author/License
|
152
140
|
|
153
|
-
SuperDiff was created and is maintained by
|
141
|
+
SuperDiff was created by Elliot Winkler and is maintained by Splitwise, Inc.
|
154
142
|
It is released under the [MIT license](LICENSE).
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module Differs
|
4
6
|
autoload(
|
5
7
|
:ActiveRecordRelation,
|
6
|
-
|
8
|
+
'super_diff/active_record/differs/active_record_relation'
|
7
9
|
)
|
8
10
|
end
|
9
11
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module InspectionTreeBuilders
|
@@ -19,8 +21,8 @@ module SuperDiff
|
|
19
21
|
|
20
22
|
# stree-ignore
|
21
23
|
t2.when_rendering_to_lines do |t3|
|
22
|
-
|
23
|
-
|
24
|
+
t3.add_text '{'
|
25
|
+
end
|
24
26
|
end
|
25
27
|
|
26
28
|
t1.nested do |t2|
|
@@ -44,10 +46,10 @@ module SuperDiff
|
|
44
46
|
) do |t2|
|
45
47
|
# stree-ignore
|
46
48
|
t2.when_rendering_to_lines do |t3|
|
47
|
-
|
48
|
-
|
49
|
+
t3.add_text '}'
|
50
|
+
end
|
49
51
|
|
50
|
-
t2.add_text
|
52
|
+
t2.add_text '>'
|
51
53
|
end
|
52
54
|
end
|
53
55
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module InspectionTreeBuilders
|
@@ -10,22 +12,22 @@ module SuperDiff
|
|
10
12
|
Core::InspectionTree.new do |t1|
|
11
13
|
# stree-ignore
|
12
14
|
t1.as_lines_when_rendering_to_lines(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
collection_bookend: :open
|
16
|
+
) do |t2|
|
17
|
+
t2.add_text '#<ActiveRecord::Relation ['
|
18
|
+
end
|
17
19
|
|
18
20
|
# stree-ignore
|
19
21
|
t1.nested do |t2|
|
20
|
-
|
21
|
-
|
22
|
+
t2.insert_array_inspection_of(object)
|
23
|
+
end
|
22
24
|
|
23
25
|
# stree-ignore
|
24
26
|
t1.as_lines_when_rendering_to_lines(
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
collection_bookend: :close
|
28
|
+
) do |t2|
|
29
|
+
t2.add_text ']>'
|
30
|
+
end
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
@@ -1,13 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module InspectionTreeBuilders
|
4
6
|
autoload(
|
5
7
|
:ActiveRecordModel,
|
6
|
-
|
8
|
+
'super_diff/active_record/inspection_tree_builders/active_record_model'
|
7
9
|
)
|
8
10
|
autoload(
|
9
11
|
:ActiveRecordRelation,
|
10
|
-
|
12
|
+
'super_diff/active_record/inspection_tree_builders/active_record_relation'
|
11
13
|
)
|
12
14
|
end
|
13
15
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# rubocop:disable Style/ClassAndModuleChildren
|
2
4
|
class ActiveRecord::Base
|
3
5
|
# TODO: Remove this monkey patch if possible
|
4
6
|
def attributes_for_super_diff
|
@@ -9,4 +11,4 @@ class ActiveRecord::Base
|
|
9
11
|
) { |hash, key| hash.merge(key.to_sym => attributes[key]) }
|
10
12
|
end
|
11
13
|
end
|
12
|
-
# rubocop:enable Style/
|
14
|
+
# rubocop:enable Style/ClassAndModuleChildren
|
@@ -1,16 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module ObjectInspection
|
4
6
|
module InspectionTreeBuilders
|
5
7
|
def self.const_missing(missing_const_name)
|
6
8
|
if ActiveRecord::InspectionTreeBuilders.const_defined?(
|
7
|
-
|
8
|
-
|
9
|
-
warn <<~
|
9
|
+
missing_const_name
|
10
|
+
)
|
11
|
+
warn <<~WARNING
|
10
12
|
WARNING: SuperDiff::ActiveRecord::ObjectInspection::InspectionTreeBuilders::#{missing_const_name} is deprecated and will be removed in the next major release.
|
11
13
|
Please use SuperDiff::ActiveRecord::InspectionTreeBuilders::#{missing_const_name} instead.
|
12
14
|
#{caller_locations.join("\n")}
|
13
|
-
|
15
|
+
WARNING
|
14
16
|
ActiveRecord::InspectionTreeBuilders.const_get(missing_const_name)
|
15
17
|
else
|
16
18
|
super
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module OperationTreeBuilders
|
4
6
|
class ActiveRecordModel < Basic::OperationTreeBuilders::CustomObject
|
5
7
|
def self.applies_to?(expected, actual)
|
6
8
|
expected.is_a?(::ActiveRecord::Base) &&
|
7
|
-
actual.is_a?(::ActiveRecord::Base) && expected.
|
9
|
+
actual.is_a?(::ActiveRecord::Base) && expected.instance_of?(actual.class)
|
8
10
|
end
|
9
11
|
|
10
12
|
protected
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module OperationTreeBuilders
|
@@ -15,7 +17,7 @@ module SuperDiff
|
|
15
17
|
private
|
16
18
|
|
17
19
|
def operation_tree
|
18
|
-
@
|
20
|
+
@operation_tree ||= OperationTrees::ActiveRecordRelation.new([])
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -1,13 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module OperationTreeBuilders
|
4
6
|
autoload(
|
5
7
|
:ActiveRecordModel,
|
6
|
-
|
8
|
+
'super_diff/active_record/operation_tree_builders/active_record_model'
|
7
9
|
)
|
8
10
|
autoload(
|
9
11
|
:ActiveRecordRelation,
|
10
|
-
|
12
|
+
'super_diff/active_record/operation_tree_builders/active_record_relation'
|
11
13
|
)
|
12
14
|
end
|
13
15
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module OperationTreeFlatteners
|
@@ -5,11 +7,11 @@ module SuperDiff
|
|
5
7
|
protected
|
6
8
|
|
7
9
|
def open_token
|
8
|
-
|
10
|
+
'#<ActiveRecord::Relation ['
|
9
11
|
end
|
10
12
|
|
11
13
|
def close_token
|
12
|
-
|
14
|
+
']>'
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module OperationTreeFlatteners
|
4
6
|
autoload(
|
5
7
|
:ActiveRecordRelation,
|
6
|
-
|
8
|
+
'super_diff/active_record/operation_tree_flatteners/active_record_relation'
|
7
9
|
)
|
8
10
|
end
|
9
11
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveRecord
|
3
5
|
module OperationTrees
|
4
6
|
autoload(
|
5
7
|
:ActiveRecordRelation,
|
6
|
-
|
8
|
+
'super_diff/active_record/operation_trees/active_record_relation'
|
7
9
|
)
|
8
10
|
end
|
9
11
|
end
|
@@ -1,14 +1,16 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require 'super_diff/active_support'
|
4
|
+
|
5
|
+
require 'super_diff/active_record/differs'
|
6
|
+
require 'super_diff/active_record/inspection_tree_builders'
|
7
|
+
require 'super_diff/active_record/operation_trees'
|
8
|
+
require 'super_diff/active_record/operation_tree_builders'
|
9
|
+
require 'super_diff/active_record/operation_tree_flatteners'
|
8
10
|
|
9
11
|
module SuperDiff
|
10
12
|
module ActiveRecord
|
11
|
-
autoload :ObjectInspection,
|
13
|
+
autoload :ObjectInspection, 'super_diff/active_record/object_inspection'
|
12
14
|
|
13
15
|
SuperDiff.configure do |config|
|
14
16
|
config.prepend_extra_differ_classes(Differs::ActiveRecordRelation)
|
@@ -24,4 +26,4 @@ module SuperDiff
|
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
|
-
require
|
29
|
+
require 'super_diff/active_record/monkey_patches'
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module Differs
|
4
6
|
autoload(
|
5
7
|
:HashWithIndifferentAccess,
|
6
|
-
|
8
|
+
'super_diff/active_support/differs/hash_with_indifferent_access'
|
7
9
|
)
|
8
10
|
end
|
9
11
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module InspectionTreeBuilders
|
@@ -10,32 +12,32 @@ module SuperDiff
|
|
10
12
|
Core::InspectionTree.new do |t1|
|
11
13
|
# stree-ignore
|
12
14
|
t1.as_lines_when_rendering_to_lines(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
collection_bookend: :open
|
16
|
+
) do |t2|
|
17
|
+
t2.add_text '#<HashWithIndifferentAccess {'
|
18
|
+
end
|
17
19
|
|
18
20
|
# stree-ignore
|
19
21
|
t1.when_rendering_to_string do |t2|
|
20
|
-
|
21
|
-
|
22
|
+
t2.add_text ' '
|
23
|
+
end
|
22
24
|
|
23
25
|
# stree-ignore
|
24
26
|
t1.nested do |t2|
|
25
|
-
|
26
|
-
|
27
|
+
t2.insert_hash_inspection_of(object)
|
28
|
+
end
|
27
29
|
|
28
30
|
# stree-ignore
|
29
31
|
t1.when_rendering_to_string do |t2|
|
30
|
-
|
31
|
-
|
32
|
+
t2.add_text ' '
|
33
|
+
end
|
32
34
|
|
33
35
|
# stree-ignore
|
34
36
|
t1.as_lines_when_rendering_to_lines(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
collection_bookend: :close
|
38
|
+
) do |t2|
|
39
|
+
t2.add_text '}>'
|
40
|
+
end
|
39
41
|
end
|
40
42
|
end
|
41
43
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module InspectionTreeBuilders
|
@@ -10,32 +12,32 @@ module SuperDiff
|
|
10
12
|
Core::InspectionTree.new do |t1|
|
11
13
|
# stree-ignore
|
12
14
|
t1.as_lines_when_rendering_to_lines(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
collection_bookend: :open
|
16
|
+
) do |t2|
|
17
|
+
t2.add_text '#<OrderedOptions {'
|
18
|
+
end
|
17
19
|
|
18
20
|
# stree-ignore
|
19
21
|
t1.when_rendering_to_string do |t2|
|
20
|
-
|
21
|
-
|
22
|
+
t2.add_text ' '
|
23
|
+
end
|
22
24
|
|
23
25
|
# stree-ignore
|
24
26
|
t1.nested do |t2|
|
25
|
-
|
26
|
-
|
27
|
+
t2.insert_hash_inspection_of(object.to_hash)
|
28
|
+
end
|
27
29
|
|
28
30
|
# stree-ignore
|
29
31
|
t1.when_rendering_to_string do |t2|
|
30
|
-
|
31
|
-
|
32
|
+
t2.add_text ' '
|
33
|
+
end
|
32
34
|
|
33
35
|
# stree-ignore
|
34
36
|
t1.as_lines_when_rendering_to_lines(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
collection_bookend: :close
|
38
|
+
) do |t2|
|
39
|
+
t2.add_text '}>'
|
40
|
+
end
|
39
41
|
end
|
40
42
|
end
|
41
43
|
end
|
@@ -1,13 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module InspectionTreeBuilders
|
4
6
|
autoload(
|
5
7
|
:HashWithIndifferentAccess,
|
6
|
-
|
8
|
+
'super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access'
|
7
9
|
)
|
8
10
|
autoload(
|
9
11
|
:OrderedOptions,
|
10
|
-
|
12
|
+
'super_diff/active_support/inspection_tree_builders/ordered_options'
|
11
13
|
)
|
12
14
|
end
|
13
15
|
end
|
@@ -1,16 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module ObjectInspection
|
4
6
|
module InspectionTreeBuilders
|
5
7
|
def self.const_missing(missing_const_name)
|
6
8
|
if ActiveSupport::InspectionTreeBuilders.const_defined?(
|
7
|
-
|
8
|
-
|
9
|
-
warn <<~
|
9
|
+
missing_const_name
|
10
|
+
)
|
11
|
+
warn <<~WARNING
|
10
12
|
WARNING: SuperDiff::ActiveSupport::ObjectInspection::InspectionTreeBuilders::#{missing_const_name} is deprecated and will be removed in the next major release.
|
11
13
|
Please use SuperDiff::ActiveSupport::InspectionTreeBuilders::#{missing_const_name} instead.
|
12
14
|
#{caller_locations.join("\n")}
|
13
|
-
|
15
|
+
WARNING
|
14
16
|
ActiveSupport::InspectionTreeBuilders.const_get(missing_const_name)
|
15
17
|
else
|
16
18
|
super
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module OperationTreeBuilders
|
@@ -20,10 +22,10 @@ module SuperDiff
|
|
20
22
|
@actual = actual.transform_keys(&:to_s)
|
21
23
|
end
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
return unless actual.is_a?(::HashWithIndifferentAccess)
|
26
|
+
|
27
|
+
@expected = expected.transform_keys(&:to_s)
|
28
|
+
@actual = actual.to_h
|
27
29
|
end
|
28
30
|
|
29
31
|
protected
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module OperationTreeBuilders
|
4
6
|
autoload(
|
5
7
|
:HashWithIndifferentAccess,
|
6
|
-
|
8
|
+
'super_diff/active_support/operation_tree_builders/hash_with_indifferent_access'
|
7
9
|
)
|
8
10
|
end
|
9
11
|
end
|
data/lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module OperationTreeFlatteners
|
@@ -5,11 +7,11 @@ module SuperDiff
|
|
5
7
|
protected
|
6
8
|
|
7
9
|
def open_token
|
8
|
-
|
10
|
+
'#<HashWithIndifferentAccess {'
|
9
11
|
end
|
10
12
|
|
11
13
|
def close_token
|
12
|
-
|
14
|
+
'}>'
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module OperationTreeFlatteners
|
4
6
|
autoload(
|
5
7
|
:HashWithIndifferentAccess,
|
6
|
-
|
8
|
+
'super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access'
|
7
9
|
)
|
8
10
|
end
|
9
11
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module ActiveSupport
|
3
5
|
module OperationTrees
|
4
6
|
autoload(
|
5
7
|
:HashWithIndifferentAccess,
|
6
|
-
|
8
|
+
'super_diff/active_support/operation_trees/hash_with_indifferent_access'
|
7
9
|
)
|
8
10
|
end
|
9
11
|
end
|
@@ -1,12 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'super_diff/active_support/differs'
|
4
|
+
require 'super_diff/active_support/inspection_tree_builders'
|
5
|
+
require 'super_diff/active_support/operation_trees'
|
6
|
+
require 'super_diff/active_support/operation_tree_builders'
|
7
|
+
require 'super_diff/active_support/operation_tree_flatteners'
|
6
8
|
|
7
9
|
module SuperDiff
|
8
10
|
module ActiveSupport
|
9
|
-
autoload :ObjectInspection,
|
11
|
+
autoload :ObjectInspection, 'super_diff/active_support/object_inspection'
|
10
12
|
|
11
13
|
SuperDiff.configure do |config|
|
12
14
|
config.prepend_extra_differ_classes(Differs::HashWithIndifferentAccess)
|