super_diff 0.6.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -1
  3. data/lib/super_diff/active_record/differs/active_record_relation.rb +3 -13
  4. data/lib/super_diff/active_record/object_inspection/{inspectors → inspection_tree_builders}/active_record_model.rb +19 -20
  5. data/lib/super_diff/active_record/object_inspection/{inspectors → inspection_tree_builders}/active_record_relation.rb +9 -8
  6. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders.rb +16 -0
  7. data/lib/super_diff/active_record/object_inspection.rb +2 -6
  8. data/lib/super_diff/active_record/operation_tree_flatteners/active_record_relation.rb +17 -0
  9. data/lib/super_diff/active_record/operation_tree_flatteners.rb +10 -0
  10. data/lib/super_diff/active_record/operation_trees/active_record_relation.rb +8 -7
  11. data/lib/super_diff/active_record.rb +7 -7
  12. data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +3 -13
  13. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access.rb +37 -0
  14. data/lib/super_diff/active_support/object_inspection/{inspectors.rb → inspection_tree_builders.rb} +2 -2
  15. data/lib/super_diff/active_support/object_inspection.rb +2 -6
  16. data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +17 -0
  17. data/lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb +17 -0
  18. data/lib/super_diff/active_support/operation_tree_flatteners.rb +10 -0
  19. data/lib/super_diff/active_support/operation_trees/hash_with_indifferent_access.rb +4 -7
  20. data/lib/super_diff/active_support.rb +8 -8
  21. data/lib/super_diff/colorized_document_extensions.rb +9 -6
  22. data/lib/super_diff/configuration.rb +81 -8
  23. data/lib/super_diff/csi/four_bit_color.rb +0 -2
  24. data/lib/super_diff/csi.rb +1 -2
  25. data/lib/super_diff/differs/array.rb +1 -1
  26. data/lib/super_diff/differs/base.rb +3 -21
  27. data/lib/super_diff/differs/custom_object.rb +1 -1
  28. data/lib/super_diff/differs/default_object.rb +1 -1
  29. data/lib/super_diff/differs/hash.rb +1 -1
  30. data/lib/super_diff/differs/main.rb +1 -7
  31. data/lib/super_diff/differs/multiline_string.rb +1 -1
  32. data/lib/super_diff/differs/time_like.rb +1 -1
  33. data/lib/super_diff/equality_matchers/array.rb +2 -2
  34. data/lib/super_diff/equality_matchers/default.rb +2 -2
  35. data/lib/super_diff/equality_matchers/hash.rb +2 -2
  36. data/lib/super_diff/equality_matchers/multiline_string.rb +2 -2
  37. data/lib/super_diff/equality_matchers/primitive.rb +4 -7
  38. data/lib/super_diff/equality_matchers/singleline_string.rb +2 -2
  39. data/lib/super_diff/helpers.rb +56 -2
  40. data/lib/super_diff/line.rb +83 -0
  41. data/lib/super_diff/object_inspection/inspection_tree.rb +183 -81
  42. data/lib/super_diff/object_inspection/inspection_tree_builders/array.rb +38 -0
  43. data/lib/super_diff/object_inspection/inspection_tree_builders/base.rb +27 -0
  44. data/lib/super_diff/object_inspection/inspection_tree_builders/custom_object.rb +37 -0
  45. data/lib/super_diff/object_inspection/inspection_tree_builders/default_object.rb +63 -0
  46. data/lib/super_diff/object_inspection/{inspectors → inspection_tree_builders}/defaults.rb +1 -2
  47. data/lib/super_diff/object_inspection/inspection_tree_builders/hash.rb +46 -0
  48. data/lib/super_diff/object_inspection/{inspectors → inspection_tree_builders}/main.rb +5 -10
  49. data/lib/super_diff/object_inspection/inspection_tree_builders/primitive.rb +21 -0
  50. data/lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb +64 -0
  51. data/lib/super_diff/object_inspection/inspection_tree_builders.rb +44 -0
  52. data/lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb +97 -0
  53. data/lib/super_diff/object_inspection/nodes/as_prefix_when_rendering_to_lines.rb +27 -0
  54. data/lib/super_diff/object_inspection/nodes/as_prelude_when_rendering_to_lines.rb +27 -0
  55. data/lib/super_diff/object_inspection/nodes/as_single_line.rb +33 -0
  56. data/lib/super_diff/object_inspection/nodes/base.rb +55 -20
  57. data/lib/super_diff/object_inspection/nodes/inspection.rb +47 -7
  58. data/lib/super_diff/object_inspection/nodes/nesting.rb +16 -5
  59. data/lib/super_diff/object_inspection/nodes/only_when.rb +54 -0
  60. data/lib/super_diff/object_inspection/nodes/text.rb +16 -2
  61. data/lib/super_diff/object_inspection/nodes/when_empty.rb +21 -6
  62. data/lib/super_diff/object_inspection/nodes/when_non_empty.rb +20 -5
  63. data/lib/super_diff/object_inspection/nodes/when_rendering_to_lines.rb +27 -0
  64. data/lib/super_diff/object_inspection/nodes/when_rendering_to_string.rb +27 -0
  65. data/lib/super_diff/object_inspection/nodes.rb +33 -32
  66. data/lib/super_diff/object_inspection/prefix_for_next_node.rb +6 -0
  67. data/lib/super_diff/object_inspection/prelude_for_next_node.rb +6 -0
  68. data/lib/super_diff/object_inspection.rb +12 -1
  69. data/lib/super_diff/operation_tree_builders/array.rb +7 -10
  70. data/lib/super_diff/operation_tree_builders/base.rb +6 -6
  71. data/lib/super_diff/operation_tree_builders/custom_object.rb +5 -2
  72. data/lib/super_diff/operation_tree_builders/default_object.rb +1 -1
  73. data/lib/super_diff/operation_tree_builders/defaults.rb +1 -1
  74. data/lib/super_diff/operation_tree_builders/hash.rb +1 -8
  75. data/lib/super_diff/operation_tree_builders/multiline_string.rb +2 -6
  76. data/lib/super_diff/operation_tree_builders/time_like.rb +2 -2
  77. data/lib/super_diff/operation_tree_flatteners/array.rb +15 -0
  78. data/lib/super_diff/operation_tree_flatteners/base.rb +54 -0
  79. data/lib/super_diff/operation_tree_flatteners/collection.rb +139 -0
  80. data/lib/super_diff/operation_tree_flatteners/custom_object.rb +28 -0
  81. data/lib/super_diff/operation_tree_flatteners/default_object.rb +32 -0
  82. data/lib/super_diff/operation_tree_flatteners/hash.rb +41 -0
  83. data/lib/super_diff/operation_tree_flatteners/multiline_string.rb +17 -0
  84. data/lib/super_diff/operation_tree_flatteners.rb +20 -0
  85. data/lib/super_diff/operation_trees/array.rb +4 -7
  86. data/lib/super_diff/operation_trees/base.rb +39 -16
  87. data/lib/super_diff/operation_trees/custom_object.rb +4 -8
  88. data/lib/super_diff/operation_trees/default_object.rb +28 -13
  89. data/lib/super_diff/operation_trees/hash.rb +4 -7
  90. data/lib/super_diff/operation_trees/main.rb +1 -1
  91. data/lib/super_diff/operation_trees/multiline_string.rb +4 -7
  92. data/lib/super_diff/operations/binary_operation.rb +1 -6
  93. data/lib/super_diff/operations/unary_operation.rb +2 -30
  94. data/lib/super_diff/recursion_guard.rb +3 -3
  95. data/lib/super_diff/rspec/differs/collection_including.rb +4 -2
  96. data/lib/super_diff/rspec/differs/hash_including.rb +4 -2
  97. data/lib/super_diff/rspec/monkey_patches.rb +2 -2
  98. data/lib/super_diff/rspec/object_inspection/{inspectors → inspection_tree_builders}/collection_containing_exactly.rb +9 -8
  99. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb +34 -0
  100. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb +103 -0
  101. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/hash_including.rb +36 -0
  102. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/instance_of.rb +26 -0
  103. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/kind_of.rb +26 -0
  104. data/lib/super_diff/rspec/object_inspection/{inspectors → inspection_tree_builders}/object_having_attributes.rb +10 -12
  105. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/primitive.rb +10 -0
  106. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/value_within.rb +33 -0
  107. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders.rb +44 -0
  108. data/lib/super_diff/rspec/object_inspection.rb +4 -1
  109. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +0 -3
  110. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +10 -3
  111. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +10 -3
  112. data/lib/super_diff/rspec.rb +34 -13
  113. data/lib/super_diff/tiered_lines.rb +4 -0
  114. data/lib/super_diff/tiered_lines_elider.rb +490 -0
  115. data/lib/super_diff/tiered_lines_formatter.rb +79 -0
  116. data/lib/super_diff/version.rb +1 -1
  117. data/lib/super_diff.rb +28 -6
  118. data/spec/examples.txt +482 -403
  119. data/spec/integration/rails/active_support_spec.rb +19 -0
  120. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +12 -6
  121. data/spec/integration/rspec/eq_matcher_spec.rb +33 -87
  122. data/spec/integration/rspec/have_attributes_matcher_spec.rb +17 -8
  123. data/spec/integration/rspec/match_array_matcher_spec.rb +14 -7
  124. data/spec/integration/rspec/match_matcher_spec.rb +93 -5
  125. data/spec/spec_helper.rb +4 -1
  126. data/spec/support/command_runner.rb +15 -25
  127. data/spec/support/helpers.rb +21 -0
  128. data/spec/support/integration/helpers.rb +2 -0
  129. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +3 -3
  130. data/spec/support/integration/test_programs/base.rb +36 -10
  131. data/spec/support/shared_examples/active_record.rb +3 -2
  132. data/spec/support/shared_examples/active_support.rb +65 -0
  133. data/spec/support/shared_examples/elided_diffs.rb +914 -0
  134. data/spec/support/shared_examples/hash_with_indifferent_access.rb +16 -16
  135. data/spec/support/unit/helpers.rb +15 -0
  136. data/spec/support/unit/matchers/match_output.rb +41 -0
  137. data/spec/tmp/warnings_logger/all_warnings.txt +2 -0
  138. data/spec/unit/active_record/object_inspection_spec.rb +273 -0
  139. data/spec/unit/equality_matchers/main_spec.rb +55 -75
  140. data/spec/unit/helpers_spec.rb +75 -0
  141. data/spec/unit/operation_tree_flatteners/array_spec.rb +604 -0
  142. data/spec/unit/operation_tree_flatteners/custom_object_spec.rb +667 -0
  143. data/spec/unit/operation_tree_flatteners/default_object_spec.rb +687 -0
  144. data/spec/unit/operation_tree_flatteners/hash_spec.rb +632 -0
  145. data/spec/unit/operation_tree_flatteners/multiline_string_spec.rb +121 -0
  146. data/spec/unit/rspec/object_inspection_spec.rb +446 -0
  147. data/spec/unit/super_diff_spec.rb +1530 -800
  148. data/spec/unit/tiered_lines_elider_spec.rb +6356 -0
  149. data/spec/unit/tiered_lines_formatter_spec.rb +193 -0
  150. metadata +91 -52
  151. data/lib/super_diff/active_record/diff_formatters/active_record_relation.rb +0 -23
  152. data/lib/super_diff/active_record/diff_formatters.rb +0 -10
  153. data/lib/super_diff/active_record/object_inspection/inspectors.rb +0 -16
  154. data/lib/super_diff/active_support/diff_formatters/hash_with_indifferent_access.rb +0 -36
  155. data/lib/super_diff/active_support/diff_formatters.rb +0 -10
  156. data/lib/super_diff/active_support/object_inspection/inspectors/hash_with_indifferent_access.rb +0 -28
  157. data/lib/super_diff/diff_formatters/array.rb +0 -21
  158. data/lib/super_diff/diff_formatters/base.rb +0 -33
  159. data/lib/super_diff/diff_formatters/custom_object.rb +0 -30
  160. data/lib/super_diff/diff_formatters/default_object.rb +0 -46
  161. data/lib/super_diff/diff_formatters/defaults.rb +0 -10
  162. data/lib/super_diff/diff_formatters/hash.rb +0 -34
  163. data/lib/super_diff/diff_formatters/main.rb +0 -41
  164. data/lib/super_diff/diff_formatters.rb +0 -14
  165. data/lib/super_diff/object_inspection/inspectors/array.rb +0 -32
  166. data/lib/super_diff/object_inspection/inspectors/base.rb +0 -36
  167. data/lib/super_diff/object_inspection/inspectors/custom_object.rb +0 -37
  168. data/lib/super_diff/object_inspection/inspectors/default_object.rb +0 -61
  169. data/lib/super_diff/object_inspection/inspectors/hash.rb +0 -32
  170. data/lib/super_diff/object_inspection/inspectors/primitive.rb +0 -28
  171. data/lib/super_diff/object_inspection/inspectors/string.rb +0 -23
  172. data/lib/super_diff/object_inspection/inspectors/time_like.rb +0 -23
  173. data/lib/super_diff/object_inspection/inspectors.rb +0 -23
  174. data/lib/super_diff/object_inspection/nodes/break.rb +0 -15
  175. data/lib/super_diff/object_inspection/nodes/when_multiline.rb +0 -22
  176. data/lib/super_diff/object_inspection/nodes/when_singleline.rb +0 -24
  177. data/lib/super_diff/rspec/object_inspection/inspectors/collection_including.rb +0 -28
  178. data/lib/super_diff/rspec/object_inspection/inspectors/hash_including.rb +0 -31
  179. data/lib/super_diff/rspec/object_inspection/inspectors/instance_of.rb +0 -23
  180. data/lib/super_diff/rspec/object_inspection/inspectors/kind_of.rb +0 -23
  181. data/lib/super_diff/rspec/object_inspection/inspectors/primitive.rb +0 -13
  182. data/lib/super_diff/rspec/object_inspection/inspectors/value_within.rb +0 -29
  183. data/lib/super_diff/rspec/object_inspection/inspectors.rb +0 -40
  184. data/spec/combustion/Gemfile.lock +0 -173
  185. data/spec/support/object_id.rb +0 -27
  186. data/spec/support/ruby_versions.rb +0 -11
@@ -1,30 +0,0 @@
1
- module SuperDiff
2
- module DiffFormatters
3
- class CustomObject < DefaultObject
4
- def self.applies_to?(operation_tree)
5
- operation_tree.is_a?(OperationTrees::CustomObject)
6
- end
7
-
8
- def call
9
- Collection.call(
10
- open_token: "#<#{value_class} {",
11
- close_token: "}>",
12
- collection_prefix: collection_prefix,
13
- build_item_prefix: -> (operation) {
14
- key =
15
- if operation.respond_to?(:left_key)
16
- operation.left_key
17
- else
18
- operation.key
19
- end
20
-
21
- "#{key}: "
22
- },
23
- operation_tree: operation_tree,
24
- indent_level: indent_level,
25
- add_comma: add_comma?,
26
- )
27
- end
28
- end
29
- end
30
- end
@@ -1,46 +0,0 @@
1
- module SuperDiff
2
- module DiffFormatters
3
- class DefaultObject < Base
4
- def self.applies_to?(operation_tree)
5
- operation_tree.is_a?(OperationTrees::DefaultObject)
6
- end
7
-
8
- def initialize(operation_tree, value_class: nil, **rest)
9
- super(operation_tree, **rest)
10
-
11
- @value_class = value_class
12
- end
13
-
14
- def call
15
- Collection.call(
16
- open_token: "#<#{value_class} {",
17
- close_token: "}>",
18
- collection_prefix: collection_prefix,
19
- build_item_prefix: -> (operation) {
20
- key =
21
- if operation.respond_to?(:left_key)
22
- operation.left_key
23
- else
24
- operation.key
25
- end
26
-
27
- "@#{key}="
28
- },
29
- operation_tree: operation_tree,
30
- indent_level: indent_level,
31
- add_comma: add_comma?,
32
- )
33
- end
34
-
35
- protected
36
-
37
- def value_class
38
- if @value_class
39
- @value_class
40
- else
41
- unimplemented_instance_method!
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,10 +0,0 @@
1
- module SuperDiff
2
- module DiffFormatters
3
- DEFAULTS = [
4
- Array,
5
- Hash,
6
- CustomObject,
7
- DefaultObject,
8
- ].freeze
9
- end
10
- end
@@ -1,34 +0,0 @@
1
- module SuperDiff
2
- module DiffFormatters
3
- class Hash < Base
4
- def self.applies_to?(operation_tree)
5
- operation_tree.is_a?(OperationTrees::Hash)
6
- end
7
-
8
- def call
9
- Collection.call(
10
- open_token: "{",
11
- close_token: "}",
12
- collection_prefix: collection_prefix,
13
- build_item_prefix: -> (operation) {
14
- key =
15
- if operation.respond_to?(:left_key)
16
- operation.left_key
17
- else
18
- operation.key
19
- end
20
-
21
- if key.is_a?(Symbol)
22
- "#{key}: "
23
- else
24
- "#{key.inspect} => "
25
- end
26
- },
27
- operation_tree: operation_tree,
28
- indent_level: indent_level,
29
- add_comma: add_comma?,
30
- )
31
- end
32
- end
33
- end
34
- end
@@ -1,41 +0,0 @@
1
- module SuperDiff
2
- module DiffFormatters
3
- class Main
4
- extend AttrExtras.mixin
5
-
6
- method_object(
7
- :operation_tree,
8
- [
9
- :indent_level!,
10
- add_comma: false,
11
- value_class: nil,
12
- ],
13
- )
14
-
15
- def call
16
- if resolved_class
17
- resolved_class.call(
18
- operation_tree,
19
- indent_level: indent_level,
20
- add_comma: add_comma?,
21
- value_class: value_class,
22
- )
23
- else
24
- raise NoDiffFormatterAvailableError.create(operation_tree)
25
- end
26
- end
27
-
28
- private
29
-
30
- attr_query :add_comma?
31
-
32
- def resolved_class
33
- available_classes.find { |klass| klass.applies_to?(operation_tree) }
34
- end
35
-
36
- def available_classes
37
- DEFAULTS + SuperDiff.configuration.extra_diff_formatter_classes
38
- end
39
- end
40
- end
41
- end
@@ -1,14 +0,0 @@
1
- module SuperDiff
2
- module DiffFormatters
3
- autoload :Array, "super_diff/diff_formatters/array"
4
- autoload :Base, "super_diff/diff_formatters/base"
5
- autoload :Collection, "super_diff/diff_formatters/collection"
6
- autoload :CustomObject, "super_diff/diff_formatters/custom_object"
7
- autoload :DefaultObject, "super_diff/diff_formatters/default_object"
8
- autoload :Hash, "super_diff/diff_formatters/hash"
9
- autoload :Main, "super_diff/diff_formatters/main"
10
- autoload :MultilineString, "super_diff/diff_formatters/multiline_string"
11
- end
12
- end
13
-
14
- require "super_diff/diff_formatters/defaults"
@@ -1,32 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- class Array < Base
5
- def self.applies_to?(value)
6
- value.is_a?(::Array)
7
- end
8
-
9
- protected
10
-
11
- def inspection_tree
12
- InspectionTree.new do
13
- when_empty do
14
- add_text "[]"
15
- end
16
-
17
- when_non_empty do
18
- add_text "["
19
-
20
- nested do |array|
21
- insert_array_inspection_of(array)
22
- end
23
-
24
- add_break
25
- add_text "]"
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,36 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- class Base
5
- extend AttrExtras.mixin
6
- extend ImplementationChecks
7
-
8
- def self.applies_to?(_value)
9
- unimplemented_class_method!
10
- end
11
-
12
- method_object :object, [:as_single_line!, :indent_level]
13
-
14
- def call
15
- SuperDiff::RecursionGuard.substituting_recursion_of(object) do
16
- inspection_tree.evaluate(
17
- object,
18
- as_single_line: as_single_line,
19
- indent_level: indent_level,
20
- )
21
- end
22
- end
23
-
24
- protected
25
-
26
- def inspection_tree
27
- unimplemented_instance_method!
28
- end
29
-
30
- private
31
-
32
- attr_query :as_single_line?
33
- end
34
- end
35
- end
36
- end
@@ -1,37 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- class CustomObject < Base
5
- def self.applies_to?(value)
6
- value.respond_to?(:attributes_for_super_diff)
7
- end
8
-
9
- protected
10
-
11
- def inspection_tree
12
- InspectionTree.new do
13
- add_text do |object|
14
- "#<#{object.class}"
15
- end
16
-
17
- when_multiline do
18
- add_text " {"
19
- end
20
-
21
- nested do |object|
22
- insert_hash_inspection_of(object.attributes_for_super_diff)
23
- end
24
-
25
- add_break
26
-
27
- when_multiline do
28
- add_text "}"
29
- end
30
-
31
- add_text ">"
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,61 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- class DefaultObject < Base
5
- def self.applies_to?(_value)
6
- true
7
- end
8
-
9
- protected
10
-
11
- def inspection_tree
12
- # rubocop:disable Metrics/BlockLength
13
- InspectionTree.new do
14
- when_empty do
15
- # rubocop:disable Style/SymbolProc
16
- add_text do |object|
17
- object.inspect
18
- end
19
- # rubocop:enable Style/SymbolProc
20
- end
21
-
22
- when_non_empty do
23
- when_singleline do
24
- add_text do |object|
25
- object.inspect
26
- end
27
- end
28
-
29
- when_multiline do
30
- add_text do |object|
31
- "#<%<class>s:0x%<id>x {" % {
32
- class: object.class,
33
- id: object.object_id * 2,
34
- }
35
- end
36
-
37
- nested do |object|
38
- add_break " "
39
-
40
- insert_separated_list(
41
- object.instance_variables.sort,
42
- separator: ","
43
- ) do |name|
44
- add_text name.to_s
45
- add_text "="
46
- add_inspection_of object.instance_variable_get(name)
47
- end
48
- end
49
-
50
- add_break
51
-
52
- add_text "}>"
53
- end
54
- end
55
- end
56
- # rubocop:enable Metrics/BlockLength
57
- end
58
- end
59
- end
60
- end
61
- end
@@ -1,32 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- class Hash < Base
5
- def self.applies_to?(value)
6
- value.is_a?(::Hash)
7
- end
8
-
9
- protected
10
-
11
- def inspection_tree
12
- InspectionTree.new do
13
- when_empty do
14
- add_text "{}"
15
- end
16
-
17
- when_non_empty do
18
- add_text "{"
19
-
20
- nested do |hash|
21
- insert_hash_inspection_of(hash)
22
- end
23
-
24
- add_break " "
25
- add_text "}"
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,28 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- class Primitive < Base
5
- def self.applies_to?(value)
6
- case value
7
- when true, false, nil, Symbol, Numeric, Regexp, Class
8
- true
9
- else
10
- false
11
- end
12
- end
13
-
14
- protected
15
-
16
- def inspection_tree
17
- InspectionTree.new do
18
- # rubocop:disable Style/SymbolProc
19
- add_text do |object|
20
- object.inspect
21
- end
22
- # rubocop:enable Style/SymbolProc
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,23 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- class String < Base
5
- def self.applies_to?(value)
6
- value.is_a?(::String)
7
- end
8
-
9
- protected
10
-
11
- def inspection_tree
12
- InspectionTree.new do
13
- # rubocop:disable Style/SymbolProc
14
- add_text do |string|
15
- string.inspect
16
- end
17
- # rubocop:enable Style/SymbolProc
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- class TimeLike < Base
5
- def self.applies_to?(value)
6
- SuperDiff.time_like?(value)
7
- end
8
-
9
- TIME_FORMAT = "%Y-%m-%d %H:%M:%S.%3N %Z %:z".freeze
10
-
11
- protected
12
-
13
- def inspection_tree
14
- InspectionTree.new do
15
- add_text do |time|
16
- "#{time.strftime(TIME_FORMAT)} (#{time.class})"
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Inspectors
4
- autoload :Base, "super_diff/object_inspection/inspectors/base"
5
- autoload :Array, "super_diff/object_inspection/inspectors/array"
6
- autoload(
7
- :CustomObject,
8
- "super_diff/object_inspection/inspectors/custom_object",
9
- )
10
- autoload(
11
- :DefaultObject,
12
- "super_diff/object_inspection/inspectors/default_object",
13
- )
14
- autoload :Hash, "super_diff/object_inspection/inspectors/hash"
15
- autoload :Main, "super_diff/object_inspection/inspectors/main"
16
- autoload :Primitive, "super_diff/object_inspection/inspectors/primitive"
17
- autoload :String, "super_diff/object_inspection/inspectors/string"
18
- autoload :TimeLike, "super_diff/object_inspection/inspectors/time_like"
19
- end
20
- end
21
- end
22
-
23
- require "super_diff/object_inspection/inspectors/defaults"
@@ -1,15 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Nodes
4
- class Break < Base
5
- def evaluate(_object, indent_level:, as_single_line:)
6
- if as_single_line
7
- immediate_value.to_s
8
- else
9
- "\n#{" " * indent_level}"
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,22 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Nodes
4
- class WhenMultiline < Base
5
- def evaluate(object, indent_level:, as_single_line:)
6
- if as_single_line
7
- ""
8
- elsif block
9
- evaluate_in_subtree(
10
- object,
11
- indent_level: indent_level,
12
- as_single_line: as_single_line,
13
- &block
14
- )
15
- else
16
- immediate_value
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,24 +0,0 @@
1
- module SuperDiff
2
- module ObjectInspection
3
- module Nodes
4
- class WhenSingleline < Base
5
- def evaluate(object, indent_level:, as_single_line:)
6
- if as_single_line
7
- if immediate_value
8
- immediate_value
9
- else
10
- evaluate_in_subtree(
11
- object,
12
- indent_level: indent_level,
13
- as_single_line: as_single_line,
14
- &block
15
- )
16
- end
17
- else
18
- ""
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,28 +0,0 @@
1
- module SuperDiff
2
- module RSpec
3
- module ObjectInspection
4
- module Inspectors
5
- class CollectionIncluding < SuperDiff::ObjectInspection::Inspectors::Base
6
- def self.applies_to?(value)
7
- SuperDiff::RSpec.a_collection_including_something?(value)
8
- end
9
-
10
- protected
11
-
12
- def inspection_tree
13
- SuperDiff::ObjectInspection::InspectionTree.new do
14
- add_text "#<a collection including ("
15
-
16
- nested do |aliased_matcher|
17
- insert_array_inspection_of(aliased_matcher.expecteds)
18
- end
19
-
20
- add_break
21
- add_text ")>"
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,31 +0,0 @@
1
- module SuperDiff
2
- module RSpec
3
- module ObjectInspection
4
- module Inspectors
5
- class HashIncluding < SuperDiff::ObjectInspection::Inspectors::Base
6
- def self.applies_to?(value)
7
- SuperDiff::RSpec.a_hash_including_something?(value)
8
- end
9
-
10
- protected
11
-
12
- def inspection_tree
13
- SuperDiff::ObjectInspection::InspectionTree.new do
14
- add_text "#<a hash including ("
15
-
16
- nested do |aliased_matcher|
17
- insert_hash_inspection_of(
18
- aliased_matcher.expecteds.first,
19
- initial_break: nil,
20
- )
21
- end
22
-
23
- add_break
24
- add_text ")>"
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,23 +0,0 @@
1
- module SuperDiff
2
- module RSpec
3
- module ObjectInspection
4
- module Inspectors
5
- class InstanceOf < SuperDiff::ObjectInspection::Inspectors::Base
6
- def self.applies_to?(value)
7
- SuperDiff::RSpec.an_instance_of_something?(value)
8
- end
9
-
10
- protected
11
-
12
- def inspection_tree
13
- SuperDiff::ObjectInspection::InspectionTree.new do
14
- add_text do |aliased_matcher|
15
- "#<an instance of #{aliased_matcher.expected}>"
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- module SuperDiff
2
- module RSpec
3
- module ObjectInspection
4
- module Inspectors
5
- class KindOf < SuperDiff::ObjectInspection::Inspectors::Base
6
- def self.applies_to?(value)
7
- SuperDiff::RSpec.a_kind_of_something?(value)
8
- end
9
-
10
- protected
11
-
12
- def inspection_tree
13
- SuperDiff::ObjectInspection::InspectionTree.new do
14
- add_text do |aliased_matcher|
15
- "#<a kind of #{aliased_matcher.expected}>"
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,13 +0,0 @@
1
- module SuperDiff
2
- module RSpec
3
- module ObjectInspection
4
- module Inspectors
5
- class Primitive < SuperDiff::ObjectInspection::Inspectors::Primitive
6
- def self.applies_to?(value)
7
- super || value.is_a?(::RSpec::Mocks::Double)
8
- end
9
- end
10
- end
11
- end
12
- end
13
- end