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
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
class InspectionTreeBuilderDispatcher
|
@@ -6,11 +8,9 @@ module SuperDiff
|
|
6
8
|
method_object :object, [:available_classes]
|
7
9
|
|
8
10
|
def call
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
raise NoInspectionTreeBuilderAvailableError.create(object)
|
13
|
-
end
|
11
|
+
raise NoInspectionTreeBuilderAvailableError.create(object) unless resolved_class
|
12
|
+
|
13
|
+
resolved_class.call(object)
|
14
14
|
end
|
15
15
|
|
16
16
|
private
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
module InspectionTreeNodes
|
@@ -35,7 +37,7 @@ module SuperDiff
|
|
35
37
|
end
|
36
38
|
)
|
37
39
|
|
38
|
-
add_comma? ? string
|
40
|
+
add_comma? ? "#{string}," : string
|
39
41
|
end
|
40
42
|
|
41
43
|
def render_to_lines(object, type:, indentation_level:)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
module InspectionTreeNodes
|
@@ -15,10 +17,8 @@ module SuperDiff
|
|
15
17
|
|
16
18
|
def initialize(tree, *args, **options, &block)
|
17
19
|
if !args.empty? && block
|
18
|
-
raise ArgumentError.
|
19
|
-
|
20
|
-
"Either pass a block or a positional argument."
|
21
|
-
)
|
20
|
+
raise ArgumentError, 'You cannot provide both an immediate value and a lazy value. ' \
|
21
|
+
'Either pass a block or a positional argument.'
|
22
22
|
end
|
23
23
|
|
24
24
|
@tree = tree
|
@@ -62,12 +62,12 @@ module SuperDiff
|
|
62
62
|
|
63
63
|
def pretty_print(pp)
|
64
64
|
pp.object_address_group(self) do
|
65
|
-
pp.seplist(pretty_print_variables, proc { pp.text
|
65
|
+
pp.seplist(pretty_print_variables, proc { pp.text ',' }) do |name|
|
66
66
|
value = instance_variable_get(name)
|
67
|
-
pp.breakable
|
67
|
+
pp.breakable ' '
|
68
68
|
pp.group(1) do
|
69
|
-
pp.text name[1
|
70
|
-
pp.text
|
69
|
+
pp.text name[1..].to_s
|
70
|
+
pp.text ':'
|
71
71
|
pp.breakable
|
72
72
|
pp.pp value
|
73
73
|
end
|
@@ -80,7 +80,7 @@ module SuperDiff
|
|
80
80
|
attr_reader :tree, :immediate_value, :block, :options
|
81
81
|
|
82
82
|
def pretty_print_variables
|
83
|
-
block ? [
|
83
|
+
block ? [:@block] : [:@immediate_value]
|
84
84
|
end
|
85
85
|
|
86
86
|
def evaluate_block(object)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
module InspectionTreeNodes
|
@@ -11,6 +13,8 @@ module SuperDiff
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def initialize(tree, test, **options, &block)
|
16
|
+
super(tree, **options, &block)
|
17
|
+
|
14
18
|
@tree = tree
|
15
19
|
@test = test
|
16
20
|
@block = block
|
@@ -18,7 +22,7 @@ module SuperDiff
|
|
18
22
|
end
|
19
23
|
|
20
24
|
def render_to_string(object)
|
21
|
-
test_passes? ? render_to_string_in_subtree(object) :
|
25
|
+
test_passes? ? render_to_string_in_subtree(object) : ''
|
22
26
|
end
|
23
27
|
|
24
28
|
def render_to_lines(object, type:, indentation_level:)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
module InspectionTreeNodes
|
@@ -11,7 +13,7 @@ module SuperDiff
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def render_to_string(object)
|
14
|
-
empty?(object) ? render_to_string_in_subtree(object) :
|
16
|
+
empty?(object) ? render_to_string_in_subtree(object) : ''
|
15
17
|
end
|
16
18
|
|
17
19
|
def render_to_lines(object, type:, indentation_level:)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
module InspectionTreeNodes
|
@@ -11,7 +13,7 @@ module SuperDiff
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def render_to_string(object)
|
14
|
-
empty?(object) ?
|
16
|
+
empty?(object) ? '' : render_to_string_in_subtree(object)
|
15
17
|
end
|
16
18
|
|
17
19
|
def render_to_lines(object, type:, indentation_level:)
|
@@ -1,43 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
module InspectionTreeNodes
|
4
6
|
autoload(
|
5
7
|
:AsLinesWhenRenderingToLines,
|
6
|
-
|
8
|
+
'super_diff/core/inspection_tree_nodes/as_lines_when_rendering_to_lines'
|
7
9
|
)
|
8
10
|
autoload(
|
9
11
|
:AsPrefixWhenRenderingToLines,
|
10
|
-
|
12
|
+
'super_diff/core/inspection_tree_nodes/as_prefix_when_rendering_to_lines'
|
11
13
|
)
|
12
14
|
autoload(
|
13
15
|
:AsPreludeWhenRenderingToLines,
|
14
|
-
|
16
|
+
'super_diff/core/inspection_tree_nodes/as_prelude_when_rendering_to_lines'
|
15
17
|
)
|
16
18
|
autoload(
|
17
19
|
:AsSingleLine,
|
18
|
-
|
20
|
+
'super_diff/core/inspection_tree_nodes/as_single_line'
|
19
21
|
)
|
20
|
-
autoload :Base,
|
21
|
-
autoload :Inspection,
|
22
|
-
autoload :Nesting,
|
23
|
-
autoload :OnlyWhen,
|
24
|
-
autoload :Text,
|
25
|
-
autoload :WhenEmpty,
|
22
|
+
autoload :Base, 'super_diff/core/inspection_tree_nodes/base'
|
23
|
+
autoload :Inspection, 'super_diff/core/inspection_tree_nodes/inspection'
|
24
|
+
autoload :Nesting, 'super_diff/core/inspection_tree_nodes/nesting'
|
25
|
+
autoload :OnlyWhen, 'super_diff/core/inspection_tree_nodes/only_when'
|
26
|
+
autoload :Text, 'super_diff/core/inspection_tree_nodes/text'
|
27
|
+
autoload :WhenEmpty, 'super_diff/core/inspection_tree_nodes/when_empty'
|
26
28
|
autoload(
|
27
29
|
:WhenNonEmpty,
|
28
|
-
|
30
|
+
'super_diff/core/inspection_tree_nodes/when_non_empty'
|
29
31
|
)
|
30
32
|
autoload(
|
31
33
|
:WhenRenderingToLines,
|
32
|
-
|
34
|
+
'super_diff/core/inspection_tree_nodes/when_rendering_to_lines'
|
33
35
|
)
|
34
36
|
autoload(
|
35
37
|
:WhenRenderingToString,
|
36
|
-
|
38
|
+
'super_diff/core/inspection_tree_nodes/when_rendering_to_string'
|
37
39
|
)
|
38
40
|
|
39
41
|
def self.registry
|
40
|
-
@
|
42
|
+
@registry ||= [
|
41
43
|
AsLinesWhenRenderingToLines,
|
42
44
|
AsPrefixWhenRenderingToLines,
|
43
45
|
AsPreludeWhenRenderingToLines,
|
data/lib/super_diff/core/line.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
class Line
|
4
6
|
extend AttrExtras.mixin
|
5
7
|
|
6
|
-
ICONS = { delete:
|
8
|
+
ICONS = { delete: '-', insert: '+', noop: ' ' }.freeze
|
7
9
|
COLORS = { insert: :actual, delete: :expected, noop: :plain }.freeze
|
8
10
|
|
9
11
|
rattr_initialize(
|
@@ -11,12 +13,12 @@ module SuperDiff
|
|
11
13
|
:type!,
|
12
14
|
:indentation_level!,
|
13
15
|
:value!,
|
14
|
-
prefix:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
{ prefix: '',
|
17
|
+
add_comma: false,
|
18
|
+
children: [],
|
19
|
+
elided: false,
|
20
|
+
collection_bookend: nil,
|
21
|
+
complete_bookend: nil }
|
20
22
|
]
|
21
23
|
)
|
22
24
|
attr_query :add_comma?
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
class NoDifferAvailableError < StandardError
|
@@ -12,11 +14,11 @@ module SuperDiff
|
|
12
14
|
attr_accessor :expected, :actual
|
13
15
|
|
14
16
|
def initialize
|
15
|
-
super(
|
16
|
-
There is no differ available to handle an "expected" value of type
|
17
|
-
#{expected.class}
|
18
|
-
and an "actual" value of type
|
19
|
-
#{actual.class}.
|
17
|
+
super(<<~MESSAGE)
|
18
|
+
There is no differ available to handle an "expected" value of type
|
19
|
+
#{expected.class}
|
20
|
+
and an "actual" value of type
|
21
|
+
#{actual.class}.
|
20
22
|
MESSAGE
|
21
23
|
end
|
22
24
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
class NoInspectionTreeBuilderAvailableError < StandardError
|
@@ -11,9 +13,9 @@ module SuperDiff
|
|
11
13
|
attr_accessor :object
|
12
14
|
|
13
15
|
def initialize
|
14
|
-
super(
|
15
|
-
There is no inspection tree builder available to handle a "value" of type
|
16
|
-
#{object.class}.
|
16
|
+
super(<<~MESSAGE)
|
17
|
+
There is no inspection tree builder available to handle a "value" of type
|
18
|
+
#{object.class}.
|
17
19
|
MESSAGE
|
18
20
|
end
|
19
21
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
class NoOperationTreeAvailableError < StandardError
|
@@ -11,8 +13,8 @@ module SuperDiff
|
|
11
13
|
attr_accessor :value
|
12
14
|
|
13
15
|
def initialize
|
14
|
-
super(
|
15
|
-
There is no operation tree available to handle a "value" of type #{value.class}.
|
16
|
+
super(<<~MESSAGE)
|
17
|
+
There is no operation tree available to handle a "value" of type #{value.class}.
|
16
18
|
MESSAGE
|
17
19
|
end
|
18
20
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
class NoOperationTreeBuilderAvailableError < StandardError
|
@@ -12,11 +14,11 @@ module SuperDiff
|
|
12
14
|
attr_accessor :expected, :actual
|
13
15
|
|
14
16
|
def initialize
|
15
|
-
super(
|
16
|
-
There is no operation tree builder available to handle an "expected" value of type
|
17
|
-
#{expected.class}
|
18
|
-
and an "actual" value of type
|
19
|
-
#{actual.class}.
|
17
|
+
super(<<~MESSAGE)
|
18
|
+
There is no operation tree builder available to handle an "expected" value of type
|
19
|
+
#{expected.class}
|
20
|
+
and an "actual" value of type
|
21
|
+
#{actual.class}.
|
20
22
|
MESSAGE
|
21
23
|
end
|
22
24
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
class OperationTreeBuilderDispatcher
|
@@ -6,7 +8,7 @@ module SuperDiff
|
|
6
8
|
method_object(
|
7
9
|
:expected,
|
8
10
|
:actual,
|
9
|
-
[:available_classes, raise_if_nothing_applies: true]
|
11
|
+
[:available_classes, { raise_if_nothing_applies: true }]
|
10
12
|
)
|
11
13
|
|
12
14
|
def call
|
@@ -14,8 +16,6 @@ module SuperDiff
|
|
14
16
|
resolved_class.call(expected: expected, actual: actual)
|
15
17
|
elsif raise_if_nothing_applies?
|
16
18
|
raise NoOperationTreeBuilderAvailableError.create(expected, actual)
|
17
|
-
else
|
18
|
-
nil
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module Core
|
3
5
|
class OperationTreeFinder
|
@@ -6,14 +8,12 @@ module SuperDiff
|
|
6
8
|
method_object :value, [:available_classes]
|
7
9
|
|
8
10
|
def call
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
else
|
16
|
-
raise NoOperationTreeAvailableError.create(value)
|
11
|
+
raise NoOperationTreeAvailableError.create(value) unless resolved_class
|
12
|
+
|
13
|
+
begin
|
14
|
+
resolved_class.new([], underlying_object: value)
|
15
|
+
rescue ArgumentError
|
16
|
+
resolved_class.new([])
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -1,10 +1,12 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'set'
|
2
4
|
|
3
5
|
module SuperDiff
|
4
6
|
module Core
|
5
7
|
module RecursionGuard
|
6
|
-
RECURSION_GUARD_KEY =
|
7
|
-
PLACEHOLDER =
|
8
|
+
RECURSION_GUARD_KEY = 'super_diff_recursion_guard_key'
|
9
|
+
PLACEHOLDER = '∙∙∙'
|
8
10
|
|
9
11
|
def self.guarding_recursion_of(*objects, &block)
|
10
12
|
already_seen_objects, first_seen_objects =
|
@@ -17,7 +19,7 @@ module SuperDiff
|
|
17
19
|
end
|
18
20
|
|
19
21
|
result =
|
20
|
-
if block.arity
|
22
|
+
if block.arity.positive?
|
21
23
|
block.call(already_seen_objects.any?)
|
22
24
|
else
|
23
25
|
block.call
|