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.
Files changed (272) 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/monkey_patches.rb +129 -56
  175. data/lib/super_diff/rspec/object_inspection.rb +7 -5
  176. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +4 -4
  177. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +2 -0
  178. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +2 -0
  179. data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +2 -0
  180. data/lib/super_diff/rspec/operation_tree_builders.rb +6 -4
  181. data/lib/super_diff/rspec-rails.rb +4 -2
  182. data/lib/super_diff/rspec.rb +27 -14
  183. data/lib/super_diff/version.rb +3 -1
  184. data/lib/super_diff.rb +24 -27
  185. data/super_diff.gemspec +20 -18
  186. metadata +15 -182
  187. data/spec/examples.txt +0 -704
  188. data/spec/integration/rails/active_record_spec.rb +0 -21
  189. data/spec/integration/rails/active_support_spec.rb +0 -19
  190. data/spec/integration/rails/engines_spec.rb +0 -25
  191. data/spec/integration/rails/hash_with_indifferent_access_spec.rb +0 -21
  192. data/spec/integration/rspec/be_falsey_matcher_spec.rb +0 -58
  193. data/spec/integration/rspec/be_matcher_spec.rb +0 -605
  194. data/spec/integration/rspec/be_nil_matcher_spec.rb +0 -57
  195. data/spec/integration/rspec/be_predicate_matcher_spec.rb +0 -615
  196. data/spec/integration/rspec/be_truthy_matcher_spec.rb +0 -62
  197. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +0 -377
  198. data/spec/integration/rspec/eq_matcher_spec.rb +0 -1066
  199. data/spec/integration/rspec/generic_describable_matchers_spec.rb +0 -177
  200. data/spec/integration/rspec/have_attributes_matcher_spec.rb +0 -443
  201. data/spec/integration/rspec/have_predicate_matcher_spec.rb +0 -478
  202. data/spec/integration/rspec/include_matcher_spec.rb +0 -452
  203. data/spec/integration/rspec/magic_metadata_spec.rb +0 -51
  204. data/spec/integration/rspec/match_array_matcher_spec.rb +0 -424
  205. data/spec/integration/rspec/match_matcher_spec.rb +0 -1359
  206. data/spec/integration/rspec/raise_error_matcher_spec.rb +0 -1488
  207. data/spec/integration/rspec/respond_to_matcher_spec.rb +0 -999
  208. data/spec/integration/rspec/third_party_matcher_spec.rb +0 -245
  209. data/spec/integration/rspec/unhandled_errors_spec.rb +0 -150
  210. data/spec/internal/log/test.log +0 -0
  211. data/spec/spec_helper.rb +0 -90
  212. data/spec/support/colorizer.rb +0 -9
  213. data/spec/support/command_runner.rb +0 -253
  214. data/spec/support/helpers.rb +0 -21
  215. data/spec/support/integration/helpers.rb +0 -124
  216. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
  217. data/spec/support/integration/matchers.rb +0 -177
  218. data/spec/support/integration/test_programs/base.rb +0 -143
  219. data/spec/support/integration/test_programs/plain.rb +0 -19
  220. data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
  221. data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
  222. data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
  223. data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
  224. data/spec/support/models/a.rb +0 -11
  225. data/spec/support/models/active_record/person.rb +0 -28
  226. data/spec/support/models/active_record/query.rb +0 -15
  227. data/spec/support/models/active_record/shipping_address.rb +0 -24
  228. data/spec/support/models/customer.rb +0 -22
  229. data/spec/support/models/empty_class.rb +0 -6
  230. data/spec/support/models/item.rb +0 -10
  231. data/spec/support/models/order.rb +0 -9
  232. data/spec/support/models/person.rb +0 -20
  233. data/spec/support/models/player.rb +0 -30
  234. data/spec/support/models/shipping_address.rb +0 -25
  235. data/spec/support/shared_examples/active_record.rb +0 -428
  236. data/spec/support/shared_examples/active_support.rb +0 -188
  237. data/spec/support/shared_examples/elided_diffs.rb +0 -938
  238. data/spec/support/shared_examples/hash_with_indifferent_access.rb +0 -749
  239. data/spec/support/shared_examples/key.rb +0 -123
  240. data/spec/support/unit/helpers.rb +0 -24
  241. data/spec/support/unit/matchers/be_deprecated_in_favor_of.rb +0 -39
  242. data/spec/support/unit/matchers/match_output.rb +0 -40
  243. data/spec/unit/active_record/object_inspection_spec.rb +0 -289
  244. data/spec/unit/active_support/object_inspection_spec.rb +0 -170
  245. data/spec/unit/basic/operation_tree_flatteners/array_spec.rb +0 -637
  246. data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
  247. data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
  248. data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
  249. data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
  250. data/spec/unit/core/helpers_spec.rb +0 -68
  251. data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
  252. data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
  253. data/spec/unit/deprecations_spec.rb +0 -176
  254. data/spec/unit/equality_matchers/main_spec.rb +0 -1842
  255. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
  256. data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
  257. data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
  258. data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
  259. data/spec/unit/rspec/matchers/be_spec.rb +0 -17
  260. data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
  261. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
  262. data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
  263. data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
  264. data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
  265. data/spec/unit/rspec/matchers/include_spec.rb +0 -21
  266. data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
  267. data/spec/unit/rspec/matchers/match_spec.rb +0 -9
  268. data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
  269. data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
  270. data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
  271. data/spec/unit/rspec/object_inspection_spec.rb +0 -471
  272. data/spec/unit/super_diff_spec.rb +0 -2115
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b261fa1a942123632f87e74d6b123826571840e9d779d21424ca590b6a646f8f
4
- data.tar.gz: a2a780bc9752ec935edfd34bfb7588aa13c8a2357f1422037102e1c7774c31db
3
+ metadata.gz: 3ac91e4432f7f0811776000b7a7153addd51ae073428eb03c8ae46218a5fe63d
4
+ data.tar.gz: 81e25a8e85f13ecb77c6da4a8a923a4958d4f6695104841573bc80f0dec028b3
5
5
  SHA512:
6
- metadata.gz: 45a49cec47615c6c82e1cbae577c1bd9ad57852469f7a69d13c7daa8425971f8fdb109de7991db7b3f810dfcd9eb58d0cd1635c9497b913496ef8e5ab9e0f73b
7
- data.tar.gz: 8bf439969e3e15fe39661e25e65abca5a442a055efad43089d16bdd0a383c36c0ff02c67a6f73644d04c5581c8cf2a0c72b50f5a67d543046acd875a8c081e64
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] [![IssueHunt][issuehunt-badge]][issuehunt]
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/mcmire/super_diff/super_diff.yml?branch=master
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/mcmire/super_diff/issues
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/mcmire/super_diff/actions?query=workflow%3ASuperDiff
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/mcmire/super_diff/tree/old-master
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/mcmire/super_diff/blob/master/lib/super_diff/object_inspection/inspection_tree.rb
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 Elliot Winkler.
141
+ SuperDiff was created by Elliot Winkler and is maintained by Splitwise, Inc.
154
142
  It is released under the [MIT license](LICENSE).
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module ActiveRecord
3
5
  module Differs
@@ -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
- "super_diff/active_record/differs/active_record_relation"
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
- t3.add_text "{"
23
- end
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
- t3.add_text "}"
48
- end
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
- collection_bookend: :open
14
- ) do |t2|
15
- t2.add_text "#<ActiveRecord::Relation ["
16
- end
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
- t2.insert_array_inspection_of(object)
21
- end
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
- collection_bookend: :close
26
- ) do |t2|
27
- t2.add_text "]>"
28
- end
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
- "super_diff/active_record/inspection_tree_builders/active_record_model"
8
+ 'super_diff/active_record/inspection_tree_builders/active_record_model'
7
9
  )
8
10
  autoload(
9
11
  :ActiveRecordRelation,
10
- "super_diff/active_record/inspection_tree_builders/active_record_relation"
12
+ 'super_diff/active_record/inspection_tree_builders/active_record_relation'
11
13
  )
12
14
  end
13
15
  end
@@ -1,4 +1,6 @@
1
- # rubocop:disable Style/BracesAroundHashParameters, Style/ClassAndModuleChildren
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/BracesAroundHashParameters, Style/ClassAndModuleChildren
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
- missing_const_name
8
- )
9
- warn <<~EOT
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
- EOT
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.class == actual.class
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
- @_operation_tree ||= OperationTrees::ActiveRecordRelation.new([])
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
- "super_diff/active_record/operation_tree_builders/active_record_model"
8
+ 'super_diff/active_record/operation_tree_builders/active_record_model'
7
9
  )
8
10
  autoload(
9
11
  :ActiveRecordRelation,
10
- "super_diff/active_record/operation_tree_builders/active_record_relation"
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
- "#<ActiveRecord::Relation ["
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
- "super_diff/active_record/operation_tree_flatteners/active_record_relation"
8
+ 'super_diff/active_record/operation_tree_flatteners/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 OperationTrees
@@ -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
- "super_diff/active_record/operation_trees/active_record_relation"
8
+ 'super_diff/active_record/operation_trees/active_record_relation'
7
9
  )
8
10
  end
9
11
  end
@@ -1,14 +1,16 @@
1
- require "super_diff/active_support"
1
+ # frozen_string_literal: true
2
2
 
3
- require "super_diff/active_record/differs"
4
- require "super_diff/active_record/inspection_tree_builders"
5
- require "super_diff/active_record/operation_trees"
6
- require "super_diff/active_record/operation_tree_builders"
7
- require "super_diff/active_record/operation_tree_flatteners"
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, "super_diff/active_record/object_inspection"
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 "super_diff/active_record/monkey_patches"
29
+ require 'super_diff/active_record/monkey_patches'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module ActiveSupport
3
5
  module Differs
@@ -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
- "super_diff/active_support/differs/hash_with_indifferent_access"
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
- collection_bookend: :open
14
- ) do |t2|
15
- t2.add_text "#<HashWithIndifferentAccess {"
16
- end
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
- t2.add_text " "
21
- end
22
+ t2.add_text ' '
23
+ end
22
24
 
23
25
  # stree-ignore
24
26
  t1.nested do |t2|
25
- t2.insert_hash_inspection_of(object)
26
- end
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
- t2.add_text " "
31
- end
32
+ t2.add_text ' '
33
+ end
32
34
 
33
35
  # stree-ignore
34
36
  t1.as_lines_when_rendering_to_lines(
35
- collection_bookend: :close
36
- ) do |t2|
37
- t2.add_text "}>"
38
- end
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
- collection_bookend: :open
14
- ) do |t2|
15
- t2.add_text "#<OrderedOptions {"
16
- end
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
- t2.add_text " "
21
- end
22
+ t2.add_text ' '
23
+ end
22
24
 
23
25
  # stree-ignore
24
26
  t1.nested do |t2|
25
- t2.insert_hash_inspection_of(object.to_hash)
26
- end
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
- t2.add_text " "
31
- end
32
+ t2.add_text ' '
33
+ end
32
34
 
33
35
  # stree-ignore
34
36
  t1.as_lines_when_rendering_to_lines(
35
- collection_bookend: :close
36
- ) do |t2|
37
- t2.add_text "}>"
38
- end
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
- "super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access"
8
+ 'super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access'
7
9
  )
8
10
  autoload(
9
11
  :OrderedOptions,
10
- "super_diff/active_support/inspection_tree_builders/ordered_options"
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
- missing_const_name
8
- )
9
- warn <<~EOT
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
- EOT
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
- if actual.is_a?(::HashWithIndifferentAccess)
24
- @expected = expected.transform_keys(&:to_s)
25
- @actual = actual.to_h
26
- end
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
- "super_diff/active_support/operation_tree_builders/hash_with_indifferent_access"
8
+ 'super_diff/active_support/operation_tree_builders/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 OperationTreeFlatteners
@@ -5,11 +7,11 @@ module SuperDiff
5
7
  protected
6
8
 
7
9
  def open_token
8
- "#<HashWithIndifferentAccess {"
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
- "super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access"
8
+ 'super_diff/active_support/operation_tree_flatteners/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 OperationTrees
@@ -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
- "super_diff/active_support/operation_trees/hash_with_indifferent_access"
8
+ 'super_diff/active_support/operation_trees/hash_with_indifferent_access'
7
9
  )
8
10
  end
9
11
  end
@@ -1,12 +1,14 @@
1
- require "super_diff/active_support/differs"
2
- require "super_diff/active_support/inspection_tree_builders"
3
- require "super_diff/active_support/operation_trees"
4
- require "super_diff/active_support/operation_tree_builders"
5
- require "super_diff/active_support/operation_tree_flatteners"
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, "super_diff/active_support/object_inspection"
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)