super_diff 0.12.1 → 0.14.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 (271) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -19
  3. data/lib/super_diff/active_record/differs/active_record_relation.rb +2 -0
  4. data/lib/super_diff/active_record/differs.rb +3 -1
  5. data/lib/super_diff/active_record/inspection_tree_builders/active_record_model.rb +7 -5
  6. data/lib/super_diff/active_record/inspection_tree_builders/active_record_relation.rb +12 -10
  7. data/lib/super_diff/active_record/inspection_tree_builders.rb +4 -2
  8. data/lib/super_diff/active_record/monkey_patches.rb +4 -2
  9. data/lib/super_diff/active_record/object_inspection.rb +6 -4
  10. data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +3 -1
  11. data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +3 -1
  12. data/lib/super_diff/active_record/operation_tree_builders.rb +4 -2
  13. data/lib/super_diff/active_record/operation_tree_flatteners/active_record_relation.rb +4 -2
  14. data/lib/super_diff/active_record/operation_tree_flatteners.rb +3 -1
  15. data/lib/super_diff/active_record/operation_trees/active_record_relation.rb +2 -0
  16. data/lib/super_diff/active_record/operation_trees.rb +3 -1
  17. data/lib/super_diff/active_record.rb +10 -8
  18. data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +2 -0
  19. data/lib/super_diff/active_support/differs.rb +3 -1
  20. data/lib/super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access.rb +16 -14
  21. data/lib/super_diff/active_support/inspection_tree_builders/ordered_options.rb +16 -14
  22. data/lib/super_diff/active_support/inspection_tree_builders.rb +4 -2
  23. data/lib/super_diff/active_support/object_inspection.rb +6 -4
  24. data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +6 -4
  25. data/lib/super_diff/active_support/operation_tree_builders.rb +3 -1
  26. data/lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb +4 -2
  27. data/lib/super_diff/active_support/operation_tree_flatteners.rb +3 -1
  28. data/lib/super_diff/active_support/operation_trees/hash_with_indifferent_access.rb +2 -0
  29. data/lib/super_diff/active_support/operation_trees.rb +3 -1
  30. data/lib/super_diff/active_support.rb +8 -6
  31. data/lib/super_diff/basic/diff_formatters/collection.rb +18 -18
  32. data/lib/super_diff/basic/diff_formatters/multiline_string.rb +2 -0
  33. data/lib/super_diff/basic/diff_formatters.rb +4 -2
  34. data/lib/super_diff/basic/differs/array.rb +2 -0
  35. data/lib/super_diff/basic/differs/custom_object.rb +3 -1
  36. data/lib/super_diff/basic/differs/date_like.rb +2 -0
  37. data/lib/super_diff/basic/differs/default_object.rb +3 -1
  38. data/lib/super_diff/basic/differs/hash.rb +2 -0
  39. data/lib/super_diff/basic/differs/multiline_string.rb +2 -0
  40. data/lib/super_diff/basic/differs/time_like.rb +2 -0
  41. data/lib/super_diff/basic/differs.rb +11 -9
  42. data/lib/super_diff/basic/inspection_tree_builders/array.rb +5 -3
  43. data/lib/super_diff/basic/inspection_tree_builders/custom_object.rb +5 -3
  44. data/lib/super_diff/basic/inspection_tree_builders/data_object.rb +42 -0
  45. data/lib/super_diff/basic/inspection_tree_builders/date_like.rb +7 -5
  46. data/lib/super_diff/basic/inspection_tree_builders/default_object.rb +7 -5
  47. data/lib/super_diff/basic/inspection_tree_builders/hash.rb +7 -5
  48. data/lib/super_diff/basic/inspection_tree_builders/primitive.rb +3 -1
  49. data/lib/super_diff/basic/inspection_tree_builders/range_object.rb +19 -0
  50. data/lib/super_diff/basic/inspection_tree_builders/time_like.rb +8 -8
  51. data/lib/super_diff/basic/inspection_tree_builders.rb +18 -8
  52. data/lib/super_diff/basic/operation_tree_builders/array.rb +6 -4
  53. data/lib/super_diff/basic/operation_tree_builders/custom_object.rb +3 -1
  54. data/lib/super_diff/basic/operation_tree_builders/data_object.rb +20 -0
  55. data/lib/super_diff/basic/operation_tree_builders/date_like.rb +2 -0
  56. data/lib/super_diff/basic/operation_tree_builders/default_object.rb +32 -31
  57. data/lib/super_diff/basic/operation_tree_builders/hash.rb +49 -46
  58. data/lib/super_diff/basic/operation_tree_builders/multiline_string.rb +5 -3
  59. data/lib/super_diff/basic/operation_tree_builders/time_like.rb +5 -3
  60. data/lib/super_diff/basic/operation_tree_builders.rb +15 -9
  61. data/lib/super_diff/basic/operation_tree_flatteners/array.rb +4 -2
  62. data/lib/super_diff/basic/operation_tree_flatteners/collection.rb +11 -11
  63. data/lib/super_diff/basic/operation_tree_flatteners/custom_object.rb +5 -3
  64. data/lib/super_diff/basic/operation_tree_flatteners/default_object.rb +6 -5
  65. data/lib/super_diff/basic/operation_tree_flatteners/hash.rb +5 -3
  66. data/lib/super_diff/basic/operation_tree_flatteners/multiline_string.rb +3 -1
  67. data/lib/super_diff/basic/operation_tree_flatteners.rb +8 -6
  68. data/lib/super_diff/basic/operation_trees/array.rb +2 -0
  69. data/lib/super_diff/basic/operation_trees/custom_object.rb +2 -0
  70. data/lib/super_diff/basic/operation_trees/default_object.rb +6 -4
  71. data/lib/super_diff/basic/operation_trees/hash.rb +2 -0
  72. data/lib/super_diff/basic/operation_trees/multiline_string.rb +3 -1
  73. data/lib/super_diff/basic/operation_trees.rb +9 -7
  74. data/lib/super_diff/basic.rb +12 -7
  75. data/lib/super_diff/core/abstract_differ.rb +2 -0
  76. data/lib/super_diff/core/abstract_inspection_tree_builder.rb +2 -0
  77. data/lib/super_diff/core/abstract_operation_tree.rb +4 -2
  78. data/lib/super_diff/core/abstract_operation_tree_builder.rb +15 -18
  79. data/lib/super_diff/core/abstract_operation_tree_flattener.rb +5 -3
  80. data/lib/super_diff/core/binary_operation.rb +3 -1
  81. data/lib/super_diff/core/colorized_document_extensions.rb +2 -0
  82. data/lib/super_diff/core/configuration.rb +23 -43
  83. data/lib/super_diff/core/differ_dispatcher.rb +4 -2
  84. data/lib/super_diff/core/gem_version.rb +2 -0
  85. data/lib/super_diff/core/helpers.rb +14 -12
  86. data/lib/super_diff/core/implementation_checks.rb +6 -2
  87. data/lib/super_diff/core/inspection_tree.rb +38 -38
  88. data/lib/super_diff/core/inspection_tree_builder_dispatcher.rb +5 -5
  89. data/lib/super_diff/core/inspection_tree_nodes/as_lines_when_rendering_to_lines.rb +3 -1
  90. data/lib/super_diff/core/inspection_tree_nodes/as_prefix_when_rendering_to_lines.rb +2 -0
  91. data/lib/super_diff/core/inspection_tree_nodes/as_prelude_when_rendering_to_lines.rb +2 -0
  92. data/lib/super_diff/core/inspection_tree_nodes/as_single_line.rb +2 -0
  93. data/lib/super_diff/core/inspection_tree_nodes/base.rb +9 -9
  94. data/lib/super_diff/core/inspection_tree_nodes/inspection.rb +2 -0
  95. data/lib/super_diff/core/inspection_tree_nodes/nesting.rb +2 -0
  96. data/lib/super_diff/core/inspection_tree_nodes/only_when.rb +5 -1
  97. data/lib/super_diff/core/inspection_tree_nodes/text.rb +2 -0
  98. data/lib/super_diff/core/inspection_tree_nodes/when_empty.rb +3 -1
  99. data/lib/super_diff/core/inspection_tree_nodes/when_non_empty.rb +3 -1
  100. data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_lines.rb +3 -1
  101. data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_string.rb +2 -0
  102. data/lib/super_diff/core/inspection_tree_nodes.rb +16 -14
  103. data/lib/super_diff/core/line.rb +9 -7
  104. data/lib/super_diff/core/no_differ_available_error.rb +7 -5
  105. data/lib/super_diff/core/no_inspection_tree_builder_available_error.rb +5 -3
  106. data/lib/super_diff/core/no_operation_tree_available_error.rb +4 -2
  107. data/lib/super_diff/core/no_operation_tree_builder_available_error.rb +7 -5
  108. data/lib/super_diff/core/operation_tree_builder_dispatcher.rb +3 -3
  109. data/lib/super_diff/core/operation_tree_finder.rb +8 -8
  110. data/lib/super_diff/core/prefix_for_next_inspection_tree_node.rb +2 -0
  111. data/lib/super_diff/core/prelude_for_next_inspection_tree_node.rb +2 -0
  112. data/lib/super_diff/core/recursion_guard.rb +6 -4
  113. data/lib/super_diff/core/tiered_lines.rb +2 -0
  114. data/lib/super_diff/core/tiered_lines_elider.rb +53 -54
  115. data/lib/super_diff/core/tiered_lines_formatter.rb +6 -4
  116. data/lib/super_diff/core/unary_operation.rb +2 -0
  117. data/lib/super_diff/core.rb +31 -29
  118. data/lib/super_diff/csi/bold_sequence.rb +2 -0
  119. data/lib/super_diff/csi/color.rb +4 -4
  120. data/lib/super_diff/csi/color_sequence_block.rb +3 -1
  121. data/lib/super_diff/csi/colorized_document.rb +7 -9
  122. data/lib/super_diff/csi/document.rb +15 -18
  123. data/lib/super_diff/csi/eight_bit_color.rb +32 -37
  124. data/lib/super_diff/csi/four_bit_color.rb +12 -9
  125. data/lib/super_diff/csi/reset_sequence.rb +2 -0
  126. data/lib/super_diff/csi/twenty_four_bit_color.rb +22 -21
  127. data/lib/super_diff/csi/uncolorized_document.rb +2 -0
  128. data/lib/super_diff/csi.rb +12 -42
  129. data/lib/super_diff/differs.rb +6 -4
  130. data/lib/super_diff/equality_matchers/array.rb +18 -16
  131. data/lib/super_diff/equality_matchers/base.rb +6 -4
  132. data/lib/super_diff/equality_matchers/default.rb +5 -3
  133. data/lib/super_diff/equality_matchers/defaults.rb +3 -1
  134. data/lib/super_diff/equality_matchers/hash.rb +18 -16
  135. data/lib/super_diff/equality_matchers/main.rb +3 -1
  136. data/lib/super_diff/equality_matchers/multiline_string.rb +18 -16
  137. data/lib/super_diff/equality_matchers/primitive.rb +15 -13
  138. data/lib/super_diff/equality_matchers/singleline_string.rb +16 -14
  139. data/lib/super_diff/equality_matchers.rb +11 -9
  140. data/lib/super_diff/errors.rb +4 -2
  141. data/lib/super_diff/object_inspection.rb +17 -15
  142. data/lib/super_diff/operation_tree_builders.rb +6 -4
  143. data/lib/super_diff/operation_tree_flatteners.rb +6 -4
  144. data/lib/super_diff/operation_trees.rb +6 -4
  145. data/lib/super_diff/operations.rb +4 -2
  146. data/lib/super_diff/rails.rb +4 -2
  147. data/lib/super_diff/rspec/augmented_matcher.rb +3 -1
  148. data/lib/super_diff/rspec/differ.rb +16 -7
  149. data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +2 -0
  150. data/lib/super_diff/rspec/differs/collection_including.rb +2 -0
  151. data/lib/super_diff/rspec/differs/hash_including.rb +2 -0
  152. data/lib/super_diff/rspec/differs/object_having_attributes.rb +2 -0
  153. data/lib/super_diff/rspec/differs.rb +6 -4
  154. data/lib/super_diff/rspec/inspection_tree_builders/collection_containing_exactly.rb +12 -10
  155. data/lib/super_diff/rspec/inspection_tree_builders/collection_including.rb +10 -8
  156. data/lib/super_diff/rspec/inspection_tree_builders/double.rb +20 -18
  157. data/lib/super_diff/rspec/inspection_tree_builders/generic_describable_matcher.rb +2 -0
  158. data/lib/super_diff/rspec/inspection_tree_builders/hash_including.rb +10 -8
  159. data/lib/super_diff/rspec/inspection_tree_builders/instance_of.rb +2 -0
  160. data/lib/super_diff/rspec/inspection_tree_builders/kind_of.rb +2 -0
  161. data/lib/super_diff/rspec/inspection_tree_builders/object_having_attributes.rb +12 -10
  162. data/lib/super_diff/rspec/inspection_tree_builders/primitive.rb +2 -0
  163. data/lib/super_diff/rspec/inspection_tree_builders/value_within.rb +6 -4
  164. data/lib/super_diff/rspec/inspection_tree_builders.rb +12 -10
  165. data/lib/super_diff/rspec/matcher_text_builders/base.rb +12 -12
  166. data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +19 -17
  167. data/lib/super_diff/rspec/matcher_text_builders/contain_exactly.rb +3 -1
  168. data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +7 -5
  169. data/lib/super_diff/rspec/matcher_text_builders/match.rb +6 -4
  170. data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +5 -3
  171. data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +20 -18
  172. data/lib/super_diff/rspec/matcher_text_builders.rb +9 -7
  173. data/lib/super_diff/rspec/matcher_text_template.rb +34 -39
  174. data/lib/super_diff/rspec/object_inspection.rb +7 -5
  175. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +4 -4
  176. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +2 -0
  177. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +2 -0
  178. data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +2 -0
  179. data/lib/super_diff/rspec/operation_tree_builders.rb +6 -4
  180. data/lib/super_diff/rspec-rails.rb +4 -2
  181. data/lib/super_diff/rspec.rb +15 -13
  182. data/lib/super_diff/version.rb +3 -1
  183. data/lib/super_diff.rb +24 -27
  184. data/super_diff.gemspec +20 -18
  185. metadata +15 -182
  186. data/spec/examples.txt +0 -704
  187. data/spec/integration/rails/active_record_spec.rb +0 -21
  188. data/spec/integration/rails/active_support_spec.rb +0 -19
  189. data/spec/integration/rails/engines_spec.rb +0 -25
  190. data/spec/integration/rails/hash_with_indifferent_access_spec.rb +0 -21
  191. data/spec/integration/rspec/be_falsey_matcher_spec.rb +0 -58
  192. data/spec/integration/rspec/be_matcher_spec.rb +0 -605
  193. data/spec/integration/rspec/be_nil_matcher_spec.rb +0 -57
  194. data/spec/integration/rspec/be_predicate_matcher_spec.rb +0 -615
  195. data/spec/integration/rspec/be_truthy_matcher_spec.rb +0 -62
  196. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +0 -377
  197. data/spec/integration/rspec/eq_matcher_spec.rb +0 -1066
  198. data/spec/integration/rspec/generic_describable_matchers_spec.rb +0 -177
  199. data/spec/integration/rspec/have_attributes_matcher_spec.rb +0 -443
  200. data/spec/integration/rspec/have_predicate_matcher_spec.rb +0 -478
  201. data/spec/integration/rspec/include_matcher_spec.rb +0 -452
  202. data/spec/integration/rspec/magic_metadata_spec.rb +0 -51
  203. data/spec/integration/rspec/match_array_matcher_spec.rb +0 -424
  204. data/spec/integration/rspec/match_matcher_spec.rb +0 -1359
  205. data/spec/integration/rspec/raise_error_matcher_spec.rb +0 -1488
  206. data/spec/integration/rspec/respond_to_matcher_spec.rb +0 -999
  207. data/spec/integration/rspec/third_party_matcher_spec.rb +0 -245
  208. data/spec/integration/rspec/unhandled_errors_spec.rb +0 -150
  209. data/spec/internal/log/test.log +0 -0
  210. data/spec/spec_helper.rb +0 -90
  211. data/spec/support/colorizer.rb +0 -9
  212. data/spec/support/command_runner.rb +0 -253
  213. data/spec/support/helpers.rb +0 -21
  214. data/spec/support/integration/helpers.rb +0 -124
  215. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
  216. data/spec/support/integration/matchers.rb +0 -177
  217. data/spec/support/integration/test_programs/base.rb +0 -143
  218. data/spec/support/integration/test_programs/plain.rb +0 -19
  219. data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
  220. data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
  221. data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
  222. data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
  223. data/spec/support/models/a.rb +0 -11
  224. data/spec/support/models/active_record/person.rb +0 -28
  225. data/spec/support/models/active_record/query.rb +0 -15
  226. data/spec/support/models/active_record/shipping_address.rb +0 -24
  227. data/spec/support/models/customer.rb +0 -22
  228. data/spec/support/models/empty_class.rb +0 -6
  229. data/spec/support/models/item.rb +0 -10
  230. data/spec/support/models/order.rb +0 -9
  231. data/spec/support/models/person.rb +0 -20
  232. data/spec/support/models/player.rb +0 -30
  233. data/spec/support/models/shipping_address.rb +0 -25
  234. data/spec/support/shared_examples/active_record.rb +0 -428
  235. data/spec/support/shared_examples/active_support.rb +0 -188
  236. data/spec/support/shared_examples/elided_diffs.rb +0 -938
  237. data/spec/support/shared_examples/hash_with_indifferent_access.rb +0 -749
  238. data/spec/support/shared_examples/key.rb +0 -123
  239. data/spec/support/unit/helpers.rb +0 -24
  240. data/spec/support/unit/matchers/be_deprecated_in_favor_of.rb +0 -39
  241. data/spec/support/unit/matchers/match_output.rb +0 -40
  242. data/spec/unit/active_record/object_inspection_spec.rb +0 -289
  243. data/spec/unit/active_support/object_inspection_spec.rb +0 -170
  244. data/spec/unit/basic/operation_tree_flatteners/array_spec.rb +0 -637
  245. data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
  246. data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
  247. data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
  248. data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
  249. data/spec/unit/core/helpers_spec.rb +0 -68
  250. data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
  251. data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
  252. data/spec/unit/deprecations_spec.rb +0 -176
  253. data/spec/unit/equality_matchers/main_spec.rb +0 -1842
  254. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
  255. data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
  256. data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
  257. data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
  258. data/spec/unit/rspec/matchers/be_spec.rb +0 -17
  259. data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
  260. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
  261. data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
  262. data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
  263. data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
  264. data/spec/unit/rspec/matchers/include_spec.rb +0 -21
  265. data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
  266. data/spec/unit/rspec/matchers/match_spec.rb +0 -9
  267. data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
  268. data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
  269. data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
  270. data/spec/unit/rspec/object_inspection_spec.rb +0 -471
  271. 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
- if resolved_class
10
- resolved_class.call(object)
11
- else
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 + "," : 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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Core
3
5
  module InspectionTreeNodes
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Core
3
5
  module InspectionTreeNodes
@@ -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.new(
19
- "You cannot provide both an immediate value and a lazy value. " +
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 "," }) do |name|
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..-1].to_s
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 ? [:"@block"] : [:"@immediate_value"]
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Core
3
5
  module InspectionTreeNodes
@@ -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
@@ -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) ? "" : 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(*)
14
- ""
16
+ ''
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
@@ -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
- "super_diff/core/inspection_tree_nodes/as_lines_when_rendering_to_lines"
8
+ 'super_diff/core/inspection_tree_nodes/as_lines_when_rendering_to_lines'
7
9
  )
8
10
  autoload(
9
11
  :AsPrefixWhenRenderingToLines,
10
- "super_diff/core/inspection_tree_nodes/as_prefix_when_rendering_to_lines"
12
+ 'super_diff/core/inspection_tree_nodes/as_prefix_when_rendering_to_lines'
11
13
  )
12
14
  autoload(
13
15
  :AsPreludeWhenRenderingToLines,
14
- "super_diff/core/inspection_tree_nodes/as_prelude_when_rendering_to_lines"
16
+ 'super_diff/core/inspection_tree_nodes/as_prelude_when_rendering_to_lines'
15
17
  )
16
18
  autoload(
17
19
  :AsSingleLine,
18
- "super_diff/core/inspection_tree_nodes/as_single_line"
20
+ 'super_diff/core/inspection_tree_nodes/as_single_line'
19
21
  )
20
- autoload :Base, "super_diff/core/inspection_tree_nodes/base"
21
- autoload :Inspection, "super_diff/core/inspection_tree_nodes/inspection"
22
- autoload :Nesting, "super_diff/core/inspection_tree_nodes/nesting"
23
- autoload :OnlyWhen, "super_diff/core/inspection_tree_nodes/only_when"
24
- autoload :Text, "super_diff/core/inspection_tree_nodes/text"
25
- autoload :WhenEmpty, "super_diff/core/inspection_tree_nodes/when_empty"
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
- "super_diff/core/inspection_tree_nodes/when_non_empty"
30
+ 'super_diff/core/inspection_tree_nodes/when_non_empty'
29
31
  )
30
32
  autoload(
31
33
  :WhenRenderingToLines,
32
- "super_diff/core/inspection_tree_nodes/when_rendering_to_lines"
34
+ 'super_diff/core/inspection_tree_nodes/when_rendering_to_lines'
33
35
  )
34
36
  autoload(
35
37
  :WhenRenderingToString,
36
- "super_diff/core/inspection_tree_nodes/when_rendering_to_string"
38
+ 'super_diff/core/inspection_tree_nodes/when_rendering_to_string'
37
39
  )
38
40
 
39
41
  def self.registry
40
- @_registry ||= [
42
+ @registry ||= [
41
43
  AsLinesWhenRenderingToLines,
42
44
  AsPrefixWhenRenderingToLines,
43
45
  AsPreludeWhenRenderingToLines,
@@ -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: "-", insert: "+", noop: " " }.freeze
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
- add_comma: false,
16
- children: [],
17
- elided: false,
18
- collection_bookend: nil,
19
- complete_bookend: nil
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(<<-MESSAGE)
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(<<-MESSAGE)
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(<<-MESSAGE)
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(<<-MESSAGE)
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
- if resolved_class
10
- begin
11
- resolved_class.new([], underlying_object: value)
12
- rescue ArgumentError
13
- resolved_class.new([])
14
- end
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Core
3
5
  class PrefixForNextInspectionTreeNode < String
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Core
3
5
  class PreludeForNextInspectionTreeNode < String
@@ -1,10 +1,12 @@
1
- require "set"
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 = "super_diff_recursion_guard_key".freeze
7
- PLACEHOLDER = "∙∙∙".freeze
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 > 0
22
+ if block.arity.positive?
21
23
  block.call(already_seen_objects.any?)
22
24
  else
23
25
  block.call
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Core
3
5
  class TieredLines < Array