canon 0.1.7 → 0.1.9

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +69 -92
  3. data/README.adoc +13 -13
  4. data/docs/.lycheeignore +69 -0
  5. data/docs/Gemfile +1 -0
  6. data/docs/_config.yml +90 -1
  7. data/docs/advanced/diff-classification.adoc +82 -2
  8. data/docs/advanced/extending-canon.adoc +193 -0
  9. data/docs/features/match-options/index.adoc +239 -1
  10. data/docs/internals/diffnode-enrichment.adoc +611 -0
  11. data/docs/internals/index.adoc +251 -0
  12. data/docs/lychee.toml +13 -6
  13. data/docs/understanding/architecture.adoc +749 -33
  14. data/docs/understanding/comparison-pipeline.adoc +122 -0
  15. data/lib/canon/cache.rb +129 -0
  16. data/lib/canon/comparison/dimensions/attribute_order_dimension.rb +68 -0
  17. data/lib/canon/comparison/dimensions/attribute_presence_dimension.rb +68 -0
  18. data/lib/canon/comparison/dimensions/attribute_values_dimension.rb +171 -0
  19. data/lib/canon/comparison/dimensions/base_dimension.rb +107 -0
  20. data/lib/canon/comparison/dimensions/comments_dimension.rb +121 -0
  21. data/lib/canon/comparison/dimensions/element_position_dimension.rb +90 -0
  22. data/lib/canon/comparison/dimensions/registry.rb +77 -0
  23. data/lib/canon/comparison/dimensions/structural_whitespace_dimension.rb +119 -0
  24. data/lib/canon/comparison/dimensions/text_content_dimension.rb +96 -0
  25. data/lib/canon/comparison/dimensions.rb +54 -0
  26. data/lib/canon/comparison/format_detector.rb +87 -0
  27. data/lib/canon/comparison/html_comparator.rb +70 -26
  28. data/lib/canon/comparison/html_compare_profile.rb +8 -2
  29. data/lib/canon/comparison/html_parser.rb +80 -0
  30. data/lib/canon/comparison/json_comparator.rb +12 -0
  31. data/lib/canon/comparison/json_parser.rb +19 -0
  32. data/lib/canon/comparison/markup_comparator.rb +293 -0
  33. data/lib/canon/comparison/match_options/base_resolver.rb +150 -0
  34. data/lib/canon/comparison/match_options/json_resolver.rb +82 -0
  35. data/lib/canon/comparison/match_options/xml_resolver.rb +151 -0
  36. data/lib/canon/comparison/match_options/yaml_resolver.rb +87 -0
  37. data/lib/canon/comparison/match_options.rb +68 -463
  38. data/lib/canon/comparison/profile_definition.rb +149 -0
  39. data/lib/canon/comparison/ruby_object_comparator.rb +180 -0
  40. data/lib/canon/comparison/strategies/semantic_tree_match_strategy.rb +7 -10
  41. data/lib/canon/comparison/whitespace_sensitivity.rb +208 -0
  42. data/lib/canon/comparison/xml_comparator/attribute_comparator.rb +177 -0
  43. data/lib/canon/comparison/xml_comparator/attribute_filter.rb +136 -0
  44. data/lib/canon/comparison/xml_comparator/child_comparison.rb +197 -0
  45. data/lib/canon/comparison/xml_comparator/diff_node_builder.rb +115 -0
  46. data/lib/canon/comparison/xml_comparator/namespace_comparator.rb +186 -0
  47. data/lib/canon/comparison/xml_comparator/node_parser.rb +79 -0
  48. data/lib/canon/comparison/xml_comparator/node_type_comparator.rb +102 -0
  49. data/lib/canon/comparison/xml_comparator.rb +97 -684
  50. data/lib/canon/comparison/xml_node_comparison.rb +319 -0
  51. data/lib/canon/comparison/xml_parser.rb +19 -0
  52. data/lib/canon/comparison/yaml_comparator.rb +3 -3
  53. data/lib/canon/comparison.rb +265 -110
  54. data/lib/canon/diff/diff_classifier.rb +101 -2
  55. data/lib/canon/diff/diff_node.rb +32 -2
  56. data/lib/canon/diff/formatting_detector.rb +1 -1
  57. data/lib/canon/diff/node_serializer.rb +191 -0
  58. data/lib/canon/diff/path_builder.rb +143 -0
  59. data/lib/canon/diff_formatter/by_line/base_formatter.rb +251 -0
  60. data/lib/canon/diff_formatter/by_line/html_formatter.rb +6 -248
  61. data/lib/canon/diff_formatter/by_line/xml_formatter.rb +38 -229
  62. data/lib/canon/diff_formatter/diff_detail_formatter/color_helper.rb +30 -0
  63. data/lib/canon/diff_formatter/diff_detail_formatter/dimension_formatter.rb +579 -0
  64. data/lib/canon/diff_formatter/diff_detail_formatter/location_extractor.rb +121 -0
  65. data/lib/canon/diff_formatter/diff_detail_formatter/node_utils.rb +253 -0
  66. data/lib/canon/diff_formatter/diff_detail_formatter/text_utils.rb +61 -0
  67. data/lib/canon/diff_formatter/diff_detail_formatter.rb +31 -1028
  68. data/lib/canon/diff_formatter.rb +1 -1
  69. data/lib/canon/rspec_matchers.rb +38 -9
  70. data/lib/canon/tree_diff/operation_converter.rb +92 -338
  71. data/lib/canon/tree_diff/operation_converter_helpers/metadata_enricher.rb +71 -0
  72. data/lib/canon/tree_diff/operation_converter_helpers/post_processor.rb +103 -0
  73. data/lib/canon/tree_diff/operation_converter_helpers/reason_builder.rb +168 -0
  74. data/lib/canon/tree_diff/operation_converter_helpers/update_change_handler.rb +188 -0
  75. data/lib/canon/version.rb +1 -1
  76. data/lib/canon/xml/data_model.rb +24 -13
  77. metadata +48 -2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-12-24 00:00:00.000000000 Z
11
+ date: 2026-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs
@@ -139,11 +139,13 @@ files:
139
139
  - CODE_OF_CONDUCT.md
140
140
  - README.adoc
141
141
  - Rakefile
142
+ - docs/.lycheeignore
142
143
  - docs/Gemfile
143
144
  - docs/INDEX.adoc
144
145
  - docs/_config.yml
145
146
  - docs/advanced/diff-classification.adoc
146
147
  - docs/advanced/diff-pipeline.adoc
148
+ - docs/advanced/extending-canon.adoc
147
149
  - docs/advanced/index.adoc
148
150
  - docs/advanced/semantic-diff-report.adoc
149
151
  - docs/advanced/verbose-mode-architecture.adoc
@@ -169,6 +171,8 @@ files:
169
171
  - docs/interfaces/index.adoc
170
172
  - docs/interfaces/rspec/index.adoc
171
173
  - docs/interfaces/ruby-api/index.adoc
174
+ - docs/internals/diffnode-enrichment.adoc
175
+ - docs/internals/index.adoc
172
176
  - docs/lychee.toml
173
177
  - docs/reference/cli-options.adoc
174
178
  - docs/reference/environment-variables.adoc
@@ -187,6 +191,7 @@ files:
187
191
  - docs/understanding/index.adoc
188
192
  - exe/canon
189
193
  - lib/canon.rb
194
+ - lib/canon/cache.rb
190
195
  - lib/canon/cli.rb
191
196
  - lib/canon/commands/diff_command.rb
192
197
  - lib/canon/commands/format_command.rb
@@ -194,14 +199,44 @@ files:
194
199
  - lib/canon/comparison/base_comparator.rb
195
200
  - lib/canon/comparison/compare_profile.rb
196
201
  - lib/canon/comparison/comparison_result.rb
202
+ - lib/canon/comparison/dimensions.rb
203
+ - lib/canon/comparison/dimensions/attribute_order_dimension.rb
204
+ - lib/canon/comparison/dimensions/attribute_presence_dimension.rb
205
+ - lib/canon/comparison/dimensions/attribute_values_dimension.rb
206
+ - lib/canon/comparison/dimensions/base_dimension.rb
207
+ - lib/canon/comparison/dimensions/comments_dimension.rb
208
+ - lib/canon/comparison/dimensions/element_position_dimension.rb
209
+ - lib/canon/comparison/dimensions/registry.rb
210
+ - lib/canon/comparison/dimensions/structural_whitespace_dimension.rb
211
+ - lib/canon/comparison/dimensions/text_content_dimension.rb
212
+ - lib/canon/comparison/format_detector.rb
197
213
  - lib/canon/comparison/html_comparator.rb
198
214
  - lib/canon/comparison/html_compare_profile.rb
215
+ - lib/canon/comparison/html_parser.rb
199
216
  - lib/canon/comparison/json_comparator.rb
217
+ - lib/canon/comparison/json_parser.rb
218
+ - lib/canon/comparison/markup_comparator.rb
200
219
  - lib/canon/comparison/match_options.rb
220
+ - lib/canon/comparison/match_options/base_resolver.rb
221
+ - lib/canon/comparison/match_options/json_resolver.rb
222
+ - lib/canon/comparison/match_options/xml_resolver.rb
223
+ - lib/canon/comparison/match_options/yaml_resolver.rb
224
+ - lib/canon/comparison/profile_definition.rb
225
+ - lib/canon/comparison/ruby_object_comparator.rb
201
226
  - lib/canon/comparison/strategies/base_match_strategy.rb
202
227
  - lib/canon/comparison/strategies/match_strategy_factory.rb
203
228
  - lib/canon/comparison/strategies/semantic_tree_match_strategy.rb
229
+ - lib/canon/comparison/whitespace_sensitivity.rb
204
230
  - lib/canon/comparison/xml_comparator.rb
231
+ - lib/canon/comparison/xml_comparator/attribute_comparator.rb
232
+ - lib/canon/comparison/xml_comparator/attribute_filter.rb
233
+ - lib/canon/comparison/xml_comparator/child_comparison.rb
234
+ - lib/canon/comparison/xml_comparator/diff_node_builder.rb
235
+ - lib/canon/comparison/xml_comparator/namespace_comparator.rb
236
+ - lib/canon/comparison/xml_comparator/node_parser.rb
237
+ - lib/canon/comparison/xml_comparator/node_type_comparator.rb
238
+ - lib/canon/comparison/xml_node_comparison.rb
239
+ - lib/canon/comparison/xml_parser.rb
205
240
  - lib/canon/comparison/yaml_comparator.rb
206
241
  - lib/canon/config.rb
207
242
  - lib/canon/config/env_provider.rb
@@ -220,6 +255,8 @@ files:
220
255
  - lib/canon/diff/diff_report.rb
221
256
  - lib/canon/diff/diff_report_builder.rb
222
257
  - lib/canon/diff/formatting_detector.rb
258
+ - lib/canon/diff/node_serializer.rb
259
+ - lib/canon/diff/path_builder.rb
223
260
  - lib/canon/diff_formatter.rb
224
261
  - lib/canon/diff_formatter/by_line/base_formatter.rb
225
262
  - lib/canon/diff_formatter/by_line/html_formatter.rb
@@ -234,6 +271,11 @@ files:
234
271
  - lib/canon/diff_formatter/character_map.yml
235
272
  - lib/canon/diff_formatter/debug_output.rb
236
273
  - lib/canon/diff_formatter/diff_detail_formatter.rb
274
+ - lib/canon/diff_formatter/diff_detail_formatter/color_helper.rb
275
+ - lib/canon/diff_formatter/diff_detail_formatter/dimension_formatter.rb
276
+ - lib/canon/diff_formatter/diff_detail_formatter/location_extractor.rb
277
+ - lib/canon/diff_formatter/diff_detail_formatter/node_utils.rb
278
+ - lib/canon/diff_formatter/diff_detail_formatter/text_utils.rb
237
279
  - lib/canon/diff_formatter/legend.rb
238
280
  - lib/canon/errors.rb
239
281
  - lib/canon/formatters/html4_formatter.rb
@@ -266,6 +308,10 @@ files:
266
308
  - lib/canon/tree_diff/matchers/structural_propagator.rb
267
309
  - lib/canon/tree_diff/matchers/universal_matcher.rb
268
310
  - lib/canon/tree_diff/operation_converter.rb
311
+ - lib/canon/tree_diff/operation_converter_helpers/metadata_enricher.rb
312
+ - lib/canon/tree_diff/operation_converter_helpers/post_processor.rb
313
+ - lib/canon/tree_diff/operation_converter_helpers/reason_builder.rb
314
+ - lib/canon/tree_diff/operation_converter_helpers/update_change_handler.rb
269
315
  - lib/canon/tree_diff/operations/operation.rb
270
316
  - lib/canon/tree_diff/operations/operation_detector.rb
271
317
  - lib/canon/tree_diff/tree_diff_integrator.rb