canon 0.3.27 → 0.3.29

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/README.adoc +3 -0
  4. data/docs/INDEX.adoc +1 -1
  5. data/docs/advanced/diff-classification.adoc +1 -1
  6. data/docs/advanced/extending-canon.adoc +1 -1
  7. data/docs/advanced/index.adoc +6 -6
  8. data/docs/advanced/verbose-mode-architecture.adoc +1 -1
  9. data/docs/features/configuration-profiles.adoc +4 -4
  10. data/docs/features/diff-formatting/algorithm-specific-output.adoc +5 -5
  11. data/docs/features/diff-formatting/colors-and-symbols.adoc +4 -4
  12. data/docs/features/diff-formatting/comment-asymmetry.adoc +3 -3
  13. data/docs/features/diff-formatting/display-filtering.adoc +4 -4
  14. data/docs/features/diff-formatting/display-preprocessing.adoc +7 -7
  15. data/docs/features/diff-formatting/index.adoc +16 -16
  16. data/docs/features/diff-formatting/pretty-diff-mode.adoc +4 -4
  17. data/docs/features/diff-formatting/themes.adoc +2 -2
  18. data/docs/features/diff-formatting/whitespace-adjacency.adoc +3 -3
  19. data/docs/features/environment-configuration/index.adoc +8 -8
  20. data/docs/features/environment-configuration/override-system.adoc +5 -5
  21. data/docs/features/environment-configuration/size-limits.adoc +4 -4
  22. data/docs/features/index.adoc +1 -1
  23. data/docs/features/match-options/algorithm-specific-behavior.adoc +5 -5
  24. data/docs/features/match-options/html-policies.adoc +1 -1
  25. data/docs/features/match-options/index.adoc +7 -7
  26. data/docs/features/match-options/pretty-printed-fixtures.adoc +4 -4
  27. data/docs/features/regenerate-expected.adoc +157 -0
  28. data/docs/guides/choosing-configuration.adoc +6 -6
  29. data/docs/interfaces/rspec/index.adoc +1 -1
  30. data/docs/interfaces/ruby-api/index.adoc +1 -1
  31. data/docs/internals/diffnode-enrichment.adoc +1 -1
  32. data/docs/internals/index.adoc +4 -4
  33. data/docs/reference/cli-options.adoc +4 -4
  34. data/docs/reference/environment-variables.adoc +1 -1
  35. data/docs/understanding/algorithms/dom-diff.adoc +9 -9
  36. data/docs/understanding/algorithms/index.adoc +11 -11
  37. data/docs/understanding/algorithms/semantic-tree-diff.adoc +7 -7
  38. data/docs/understanding/architecture.adoc +9 -9
  39. data/docs/understanding/comparison-pipeline.adoc +7 -7
  40. data/docs/understanding/formats/html.adoc +5 -5
  41. data/docs/understanding/formats/index.adoc +5 -5
  42. data/docs/understanding/formats/json.adoc +5 -5
  43. data/docs/understanding/formats/xml.adoc +4 -4
  44. data/docs/understanding/formats/yaml.adoc +5 -5
  45. data/lib/canon/comparison/diff_node_builder.rb +9 -0
  46. data/lib/canon/config/env_schema.rb +6 -0
  47. data/lib/canon/rebaseliner/atomic_writer.rb +32 -0
  48. data/lib/canon/rebaseliner/call_site_resolver.rb +126 -0
  49. data/lib/canon/rebaseliner/heredoc_locator.rb +140 -0
  50. data/lib/canon/rebaseliner/heredoc_rewriter.rb +56 -0
  51. data/lib/canon/rebaseliner/heredoc_target.rb +19 -0
  52. data/lib/canon/rebaseliner/logger.rb +24 -0
  53. data/lib/canon/rebaseliner.rb +162 -0
  54. data/lib/canon/rspec_matchers.rb +101 -23
  55. data/lib/canon/version.rb +1 -1
  56. metadata +10 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8de5d7008a348037ef44fdd8bd5ee722e8077e058ab1e53cd2995b0dd5f0e2c
4
- data.tar.gz: 930b0efd7c7302968a6ff2f4fd9af8a6261a1a57fc71707d9206333a380f47a8
3
+ metadata.gz: ff4b9d6b5a57176d2d382f7b0d730047161920dfb4cb4004b58d60bba9c0edab
4
+ data.tar.gz: ed8dfddca4d957fbc3fbb1e62dbd1b03032c661e82c06513304d2abcf4e288cc
5
5
  SHA512:
6
- metadata.gz: 570bd7072c65d9c87316becd43334255bb176ee4260c1d40738cd51ee3d030c4ea3df9d93e923a2f6062c493271fb122bb252e1f41c6c0e40836d7fbe675fd5b
7
- data.tar.gz: a7d60c235f74cdf466a35b4ef6204c9943d306a1167dead26123314326936f90f7d96a5d2ee3bd2ace308556655c2e6492d2beb2ebab25933d4ce796dfd84e9f
6
+ metadata.gz: 778faacee321541b7d8ceef7c3497969080243acd01fc01bde3902deb68b7664e5ed966a230fc969766cfb32aefe76c81be9d7ae8a86d6b0f0ea870a6ed32cf1
7
+ data.tar.gz: a3a42291c8100b20362c273c34778abdb4f22eec057c616e54daa60b77e4272c9fe5742fa352874ffc1145c0800e89f6c00800d8938bfcf2af364cff9c71ba9f
data/.rubocop.yml CHANGED
@@ -17,3 +17,5 @@ plugins:
17
17
 
18
18
  AllCops:
19
19
  TargetRubyVersion: 3.0
20
+ Exclude:
21
+ - "spec/fixtures/**/*"
data/README.adoc CHANGED
@@ -189,6 +189,9 @@ $ canon help
189
189
  * **link:docs/CHARACTER_VISUALIZATION[Character visualization]** -
190
190
  Whitespace and special characters
191
191
  * **link:docs/INPUT_VALIDATION[Input validation]** - Error handling
192
+ * **link:docs/features/regenerate-expected[Regenerating expected heredocs]** -
193
+ `CANON_REGENERATE_EXPECTED=true` to rewrite failing `be_*_equivalent_to`
194
+ heredocs in-place from the prettyprinted received value
192
195
 
193
196
  === Advanced topics
194
197
 
data/docs/INDEX.adoc CHANGED
@@ -140,4 +140,4 @@ See link:contributing[Contributing to Documentation]
140
140
  * Configuration profiles with element-level whitespace classification
141
141
  * Three-way whitespace sensitivity: strict, normalize, insensitive
142
142
 
143
- See link:https://github.com/lutaml/canon/blob/main/CHANGELOG.md[Full Changelog]
143
+ See link:https://github.com/lutaml/canon/releases[Full Changelog]
@@ -279,7 +279,7 @@ direction relative to the partner content: `before`, `after`, or
279
279
  re-alignment walk encounters an asymmetric whitespace node
280
280
  * **Report-only** — does not change equivalence outcomes compared to
281
281
  pre-#137 behaviour; only changes the diff-report shape (see
282
- link:../features/diff-formatting/whitespace-adjacency.adoc[Whitespace
282
+ link:../../features/diff-formatting/whitespace-adjacency/[Whitespace
283
283
  adjacency] for details)
284
284
 
285
285
  .Example: Comment handling
@@ -188,6 +188,6 @@ See the source code for examples of:
188
188
 
189
189
  == See Also
190
190
 
191
- * link:../understanding/architecture.adoc[Architecture] - 4-layer architecture overview
191
+ * link:../../understanding/architecture/[Architecture] - 4-layer architecture overview
192
192
  * link:../features/diff-formatting/[Diff Formatting] - Layer 4 rendering options
193
193
  * link:diff-pipeline[Comparison Pipeline] - Technical pipeline details
@@ -19,10 +19,10 @@ This section provides detailed technical information about Canon's internal algo
19
19
 
20
20
  == What You'll Learn
21
21
 
22
- link:dom-diff-internals[**DOM Diff Internals**]::
22
+ link:../understanding/algorithms/dom-diff/[**DOM Diff**]::
23
23
  Deep dive into Canon's default DOM diff algorithm: position-based matching, operation detection, and diff generation.
24
24
 
25
- link:semantic-tree-diff-internals[**Semantic Tree Diff Internals**]::
25
+ link:../understanding/algorithms/semantic-tree-diff/[**Semantic Tree Diff**]::
26
26
  How the experimental semantic tree diff works: signature calculation, similarity matching, and operation classification.
27
27
 
28
28
  link:verbose-mode-architecture[**Verbose Mode Architecture**]::
@@ -57,7 +57,7 @@ The DOM diff algorithm is Canon's stable, well-tested comparison strategy.
57
57
  * Performance is critical
58
58
  * Stable, predictable behavior required
59
59
 
60
- See link:dom-diff-internals[DOM Diff Internals] for implementation details.
60
+ See link:../understanding/algorithms/dom-diff/[DOM Diff] for implementation details.
61
61
 
62
62
  === Semantic Tree Diff Algorithm
63
63
 
@@ -77,7 +77,7 @@ The semantic tree diff is an experimental algorithm that understands document st
77
77
  * Operation-based analysis desired
78
78
  * Willing to accept experimental status
79
79
 
80
- See link:semantic-tree-diff-internals[Semantic Tree Diff Internals] for implementation details.
80
+ See link:../understanding/algorithms/semantic-tree-diff/[Semantic Tree Diff Internals] for implementation details.
81
81
 
82
82
  == Architecture Patterns
83
83
 
@@ -203,8 +203,8 @@ result = Canon::Comparison.compare(doc1, doc2,
203
203
 
204
204
  == Next Steps
205
205
 
206
- * Read link:dom-diff-internals[DOM Diff Internals] to understand the default algorithm
207
- * Explore link:semantic-tree-diff-internals[Semantic Tree Diff] for advanced matching
206
+ * Read link:../understanding/algorithms/dom-diff/[DOM Diff] to understand the default algorithm
207
+ * Explore link:../understanding/algorithms/semantic-tree-diff/[Semantic Tree Diff] for advanced matching
208
208
  * Check link:extending-canon[Extending Canon] to add custom functionality
209
209
 
210
210
  == See Also
@@ -498,6 +498,6 @@ This ensures the correct output order and separation of concerns.
498
498
  == See also
499
499
 
500
500
  * link:../features/diff-formatting/[Diff Formatting] - Diff output customization
501
- * link:../understanding/comparison-pipeline.adoc[Comparison Pipeline] - 4-layer architecture
501
+ * link:../../understanding/comparison-pipeline/[Comparison Pipeline] - 4-layer architecture
502
502
  * link:../interfaces/rspec/[RSpec Matchers] - Using verbose mode in tests
503
503
  * link:../interfaces/cli/[CLI] - Command-line verbose mode
@@ -280,11 +280,11 @@ Profile YAML keys map directly to Canon configuration accessors:
280
280
  |===
281
281
 
282
282
  All `DiffConfig` and `MatchConfig` attributes documented in
283
- link:../reference/options-across-interfaces.adoc[Options Across Interfaces]
283
+ link:../../reference/options-across-interfaces/[Options Across Interfaces]
284
284
  are supported.
285
285
 
286
286
  == See also
287
287
 
288
- * link:environment-configuration/override-system.adoc[Override System] -- ENV variable priority
289
- * link:match-options/index.adoc[Match Options] -- match profile presets (`:strict`, `:spec_friendly`, etc.)
290
- * link:../guides/choosing-configuration.adoc[Choosing Configuration] -- decision guide
288
+ * link:../environment-configuration/override-system/[Override System] -- ENV variable priority
289
+ * link:../match-options/[Match Options] -- match profile presets (`:strict`, `:spec_friendly`, etc.)
290
+ * link:../../guides/choosing-configuration/[Choosing Configuration] -- decision guide
@@ -525,9 +525,9 @@ result = Canon::Comparison.equivalent?(doc1, doc2,
525
525
 
526
526
  == See Also
527
527
 
528
- * link:index.adoc[Diff Formatting Overview]
529
- * link:diff-modes.adoc[Diff Modes] - by_line vs by_object details
530
- * link:../match-options/algorithm-specific-behavior.adoc[Algorithm-Specific Behavior] - How algorithms work
528
+ * link:../[Diff Formatting Overview]
529
+ * link:../diff-formatting/[Diff modes] - by_line vs by_object details
530
+ * link:../../match-options/algorithm-specific-behavior/[Algorithm-Specific Behavior] - How algorithms work
531
531
  * link:../../understanding/algorithms/[Algorithms] - Detailed algorithm documentation
532
- * link:colors-and-symbols.adoc[Colors and Symbols] - Visual formatting options
533
- * link:../../guides/choosing-configuration.adoc[Choosing Configuration] - Decision guide
532
+ * link:../colors-and-symbols/[Colors and Symbols] - Visual formatting options
533
+ * link:../../../guides/choosing-configuration/[Choosing Configuration] - Decision guide
@@ -480,7 +480,7 @@ Canon supports multiple color themes that adapt the diff display to your termina
480
480
  * `:retro` -- Amber CRT, low blue light, accessibility
481
481
  * `:claude` -- Claude Code diff style with red/green backgrounds
482
482
 
483
- See link:themes.adoc[Diff display themes] for full theme documentation.
483
+ See link:../themes/[Diff display themes] for full theme documentation.
484
484
 
485
485
  === Automatic Color Detection
486
486
 
@@ -727,9 +727,9 @@ The combination ensures diffs are readable even without color perception.
727
727
 
728
728
  == Related Features
729
729
 
730
- * link:display-filtering.adoc[Display Filtering] - Control which diff types to show
731
- * link:context-and-grouping.adoc[Context and Grouping] - Control surrounding context
732
- * link:../match-options/index.adoc[Match Options] - Configure what's considered normative vs informative
730
+ * link:../display-filtering/[Display Filtering] - Control which diff types to show
731
+ * link:../context-and-grouping/[Context and Grouping] - Control surrounding context
732
+ * link:../../match-options/[Match Options] - Configure what's considered normative vs informative
733
733
 
734
734
  == See Also
735
735
 
@@ -88,7 +88,7 @@ DIFFERENCE #1 — comments: Comment present on EXPECTED only:
88
88
  == Combined with whitespace asymmetry
89
89
 
90
90
  The same realignment walk handles asymmetric whitespace-only text
91
- nodes (link:whitespace-adjacency.adoc[issue #137]) and asymmetric
91
+ nodes (link:../whitespace-adjacency/[issue #137]) and asymmetric
92
92
  comment nodes together. When a children mismatch is fully explained by
93
93
  a combination of asymmetric whitespace and asymmetric comments, the
94
94
  walker emits one diff per asymmetric node with the appropriate
@@ -147,9 +147,9 @@ Both comparison paths delegate to `ChildRealignment.walk`:
147
147
 
148
148
  == Related
149
149
 
150
- * link:whitespace-adjacency.adoc[Whitespace adjacency] — sibling
150
+ * link:../whitespace-adjacency/[Whitespace adjacency] — sibling
151
151
  contract for asymmetric whitespace-only text nodes.
152
- * link:../../advanced/diff-classification.adoc[Diff classification] —
152
+ * link:../../../advanced/diff-classification/[Diff classification] —
153
153
  Normative vs informative differences.
154
154
 
155
155
  == History
@@ -507,10 +507,10 @@ puts result.differences.count # Number of informative diffs
507
507
 
508
508
  == See also
509
509
 
510
- * link:../match-options/index.adoc[Match options] - Configure match dimensions
511
- * link:colors-and-symbols.adoc[Colors and symbols] - Understanding diff
510
+ * link:../../match-options/[Match options] - Configure match dimensions
511
+ * link:../colors-and-symbols/[Colors and symbols] - Understanding diff
512
512
  visualization
513
- * link:../../../understanding/algorithms/index.adoc[Diff algorithms] -
513
+ * link:../../../understanding/algorithms/[Diff algorithms] -
514
514
  Algorithm-specific behavior
515
- * link:../../../advanced/diff-classification.adoc[Diff classification] -
515
+ * link:../../../advanced/diff-classification/[Diff classification] -
516
516
  Normative vs informative classification
@@ -11,7 +11,7 @@ nav_order: 6
11
11
 
12
12
  Display preprocessing controls how documents are normalized *before the
13
13
  line-by-line diff is rendered*. It is entirely separate from
14
- link:../../features/match-options/index.adoc[comparison preprocessing]
14
+ link:../../match-options/[comparison preprocessing]
15
15
  (`FormatConfig#preprocessing`), which controls normalization for equivalence
16
16
  detection.
17
17
 
@@ -588,7 +588,7 @@ solve an asymmetric formatting problem: fixture files are typically
588
588
  hand-indented heredocs, while received XML is compact.
589
589
 
590
590
  For the full rationale, algorithm, and examples see the dedicated guide:
591
- link:../match-options/pretty-printed-fixtures.adoc[Pretty-printed fixture support].
591
+ link:../../match-options/pretty-printed-fixtures/[Pretty-printed fixture support].
592
592
 
593
593
  === Quick reference
594
594
 
@@ -644,13 +644,13 @@ described in <<_controlling_whitespace_visualization_with_element_classification
644
644
 
645
645
  == See also
646
646
 
647
- * link:character-visualization.adoc[Character visualization] — how special
647
+ * link:../character-visualization/[Character visualization] — how special
648
648
  characters are rendered in diff output
649
- * link:../match-options/pretty-printed-fixtures.adoc[Pretty-printed fixture support]
649
+ * link:../../match-options/pretty-printed-fixtures/[Pretty-printed fixture support]
650
650
  — full rationale, algorithm, and walkthrough examples
651
- * link:../../reference/options-across-interfaces.adoc[Options across interfaces]
651
+ * link:../../../reference/options-across-interfaces/[Options across interfaces]
652
652
  — Layer 1b display preprocessing table
653
- * link:../../reference/environment-variables.adoc[Environment variables] —
653
+ * link:../../../reference/environment-variables/[Environment variables] —
654
654
  `CANON_DISPLAY_PREPROCESSING` etc.
655
- * link:../match-options/index.adoc[Match options] — comparison preprocessing
655
+ * link:../../match-options/[Match options] — comparison preprocessing
656
656
  (`cfg.xml.preprocessing`)
@@ -32,7 +32,7 @@ Canon's diff formatting includes:
32
32
  themselves instead of cascading into mismatches against neighbouring
33
33
  content. The Reason line names the direction relative to the partner
34
34
  (`before`/`after`/`adjacent to`)
35
- (link:./whitespace-adjacency.adoc[details])
35
+ (link:whitespace-adjacency/[details])
36
36
 
37
37
  == Available formatting options
38
38
 
@@ -45,7 +45,7 @@ determination.
45
45
  * Show only normative differences (affect equivalence)
46
46
  * Show only informative differences (don't affect equivalence)
47
47
 
48
- See link:display-filtering.adoc[Display filtering] for complete details.
48
+ See link:display-filtering/[Display filtering] for complete details.
49
49
 
50
50
  === Colors and symbols
51
51
 
@@ -56,7 +56,7 @@ Canon uses color-coded output to distinguish different types of changes:
56
56
  * Yellow: Normative structural changes
57
57
  * Cyan: Informative differences
58
58
 
59
- See link:colors-and-symbols.adoc[Colors and symbols] for details.
59
+ See link:colors-and-symbols/[Colors and symbols] for details.
60
60
 
61
61
  === Diff display themes
62
62
 
@@ -67,7 +67,7 @@ Choose from 4 predefined color themes (light, dark, retro, claude) or create cus
67
67
  * Retro theme: Amber CRT, low blue light
68
68
  * Claude theme: Maximum contrast with colored backgrounds
69
69
 
70
- See link:themes.adoc[Themes] for complete theme documentation.
70
+ See link:themes/[Themes] for complete theme documentation.
71
71
 
72
72
  === Character visualization
73
73
 
@@ -90,7 +90,7 @@ Canon::Config.configure do |cfg|
90
90
  end
91
91
  ----
92
92
 
93
- See link:character-visualization.adoc[Character visualization] for details.
93
+ See link:character-visualization/[Character visualization] for details.
94
94
 
95
95
  === Context and grouping
96
96
 
@@ -99,7 +99,7 @@ Control how much surrounding context to show:
99
99
  * Context lines: Number of unchanged lines around changes
100
100
  * Grouping: Combine nearby changes into single blocks
101
101
 
102
- See link:context-and-grouping.adoc[Context and grouping] for details.
102
+ See link:context-and-grouping/[Context and grouping] for details.
103
103
 
104
104
  === Display preprocessing
105
105
 
@@ -111,7 +111,7 @@ algorithm:
111
111
  * `:pretty_print` — run through `Canon::PrettyPrinter::Xml` (one tag per line)
112
112
  * `:c14n` — run through XML C14N normalization
113
113
 
114
- See link:display-preprocessing.adoc[Display preprocessing] for details,
114
+ See link:display-preprocessing/[Display preprocessing] for details,
115
115
  including the character-visualization constraint for future extensibility.
116
116
 
117
117
  === Pretty-diff mode
@@ -133,7 +133,7 @@ formatter = Canon::DiffFormatter.new(
133
133
  )
134
134
  ----
135
135
 
136
- See link:pretty-diff-mode.adoc[Pretty-diff mode] for details and limitations.
136
+ See link:pretty-diff-mode/[Pretty-diff mode] for details and limitations.
137
137
 
138
138
  === Algorithm-specific output
139
139
 
@@ -142,7 +142,7 @@ Different diff algorithms produce different output styles:
142
142
  * DOM diff: Line-by-line or by-object output
143
143
  * Semantic tree diff: Operation-based output with tree structure
144
144
 
145
- See link:algorithm-specific-output.adoc[Algorithm-specific output] for details.
145
+ See link:algorithm-specific-output/[Algorithm-specific output] for details.
146
146
 
147
147
  == Common use cases
148
148
 
@@ -189,16 +189,16 @@ Diff formatting can be configured:
189
189
  * Per-format (XML, HTML, JSON, YAML)
190
190
  * Per-operation via method parameters
191
191
 
192
- See link:../../reference/cli-options.adoc[CLI options] and
193
- link:../../interfaces/ruby-api/index.adoc[Ruby API] for configuration details.
192
+ See link:../../reference/cli-options/[CLI options] and
193
+ link:../../interfaces/ruby-api/[Ruby API] for configuration details.
194
194
 
195
195
  == See also
196
196
 
197
- * link:../../understanding/comparison-pipeline.adoc[Comparison pipeline] -
197
+ * link:../../understanding/comparison-pipeline/[Comparison pipeline] -
198
198
  Understanding the diff generation process
199
- * link:../match-options/index.adoc[Match options] - Controlling what gets
199
+ * link:../match-options/[Match options] - Controlling what gets
200
200
  compared
201
- * link:../../advanced/diff-classification.adoc[Diff classification] -
201
+ * link:../../advanced/diff-classification/[Diff classification] -
202
202
  Normative vs informative differences
203
- * link:../../interfaces/cli/index.adoc[CLI interface] - Command-line usage
204
- * link:../../interfaces/ruby-api/index.adoc[Ruby API] - Programmatic usage
203
+ * link:../../interfaces/cli/[CLI interface] - Command-line usage
204
+ * link:../../interfaces/ruby-api/[Ruby API] - Programmatic usage
@@ -94,7 +94,7 @@ For preformatted elements where every whitespace character is significant, use
94
94
  `preserve_whitespace_elements` instead (e.g. `%w[pre code]`).
95
95
 
96
96
  See
97
- link:display-preprocessing.adoc#_controlling_whitespace_visualization_with_element_classification[display-preprocessing:
97
+ link:../display-preprocessing/#_controlling_whitespace_visualization_with_element_classification[display-preprocessing:
98
98
  element classification] for the full three-way classification system and HTML
99
99
  format defaults.
100
100
 
@@ -146,9 +146,9 @@ to avoid resolving against `Canon::Diff` which is an unrelated internal module.
146
146
 
147
147
  == See also
148
148
 
149
- * link:display-preprocessing.adoc[Display preprocessing] — normalising input
149
+ * link:../display-preprocessing/[Display preprocessing] — normalising input
150
150
  before the diff
151
- * link:context-and-grouping.adoc[Context and grouping] — context_lines and
151
+ * link:../context-and-grouping/[Context and grouping] — context_lines and
152
152
  diff grouping
153
- * link:display-filtering.adoc[Display filtering] — normative/informative
153
+ * link:../display-filtering/[Display filtering] — normative/informative
154
154
  filtering (`:by_line` only)
@@ -347,7 +347,7 @@ Colors `:bright_black` and `:bright_white` are not supported by Rainbow in 16-co
347
347
 
348
348
  == See also
349
349
 
350
- * link:colors-and-symbols.adoc[Colors and symbols] - Diff markers and classification
351
- * link:display-filtering.adoc[Display filtering] - Control which diff types appear
350
+ * link:../colors-and-symbols/[Colors and symbols] - Diff markers and classification
351
+ * link:../display-filtering/[Display filtering] - Control which diff types appear
352
352
  * link:../environment-configuration/index.html[Environment configuration] - ENV variable setup
353
353
  * link:../../reference/environment-variables.html[Environment variables reference] - Complete variable listing
@@ -110,7 +110,7 @@ information. In that case Canon falls back to naming the parent
110
110
  element instead — `Whitespace inside <PARENT>` — and the
111
111
  Expected/Actual detail block renders each side's parent element
112
112
  compactly per the contract from
113
- link:../../advanced/semantic-diff-report.adoc#parent-context-fallback-for-ambiguous-text-diffs[issue #112].
113
+ link:../../../advanced/semantic-diff-report/#parent-context-fallback-for-ambiguous-text-diffs[issue #112].
114
114
 
115
115
  NOTE: An earlier wording (`Whitespace surrounding "X"`) classified the
116
116
  *whitespace node's position among its own siblings* rather than its
@@ -212,9 +212,9 @@ whitespace node as a single normative `:whitespace_adjacency` diff.
212
212
 
213
213
  == Related
214
214
 
215
- * link:../../advanced/diff-classification.adoc[Diff classification] —
215
+ * link:../../../advanced/diff-classification/[Diff classification] —
216
216
  Normative vs informative differences.
217
- * link:../match-options/index.adoc[Match options] — Configuring
217
+ * link:../../match-options/[Match options] — Configuring
218
218
  `preserve_whitespace_elements`, `collapse_whitespace_elements`, and
219
219
  `strip_whitespace_elements`.
220
220
 
@@ -120,7 +120,7 @@ export CANON_DIFF_THEME=claude
120
120
 
121
121
  Valid values: `light`, `dark`, `retro`, `claude`
122
122
 
123
- See link:../diff-formatting/themes.adoc[Diff display themes] for complete theme documentation.
123
+ See link:../diff-formatting/themes/[Diff display themes] for complete theme documentation.
124
124
 
125
125
  === Context and grouping
126
126
 
@@ -162,7 +162,7 @@ Valid values: `true`, `false`, `1`, `0`, `yes`, `no`
162
162
 
163
163
  Canon provides configurable size limits to prevent hangs or excessive resource usage when processing very large files.
164
164
 
165
- See link:size-limits.adoc[Size Limits] for detailed configuration.
165
+ See link:size-limits/[Size Limits] for detailed configuration.
166
166
 
167
167
  Key variables:
168
168
 
@@ -172,7 +172,7 @@ Key variables:
172
172
 
173
173
  == Override system
174
174
 
175
- See link:override-system.adoc[Override System] for how environment variables interact with programmatic configuration.
175
+ See link:override-system/[Override System] for how environment variables interact with programmatic configuration.
176
176
 
177
177
  == Usage across interfaces
178
178
 
@@ -307,7 +307,7 @@ export CANON_USE_COLOR=false
307
307
 
308
308
  == Complete variable reference
309
309
 
310
- See link:../../reference/environment-variables.adoc[Environment Variables Reference] for a complete table of all environment variables.
310
+ See link:../../reference/environment-variables/[Environment Variables Reference] for a complete table of all environment variables.
311
311
 
312
312
  == Troubleshooting
313
313
 
@@ -344,7 +344,7 @@ puts "Source of algorithm: #{resolver.source_for(:algorithm)}"
344
344
 
345
345
  == See also
346
346
 
347
- * link:size-limits.adoc[Size Limits] - File size and node count limits
348
- * link:override-system.adoc[Override System] - How ENV vars override defaults
349
- * link:../../reference/environment-variables.adoc[Environment Variables Reference] - Complete variable listing
350
- * link:../../reference/options-across-interfaces.adoc[Options Across Interfaces] - How options map across CLI, Ruby, and RSpec
347
+ * link:size-limits/[Size Limits] - File size and node count limits
348
+ * link:override-system/[Override System] - How ENV vars override defaults
349
+ * link:../../reference/environment-variables/[Environment Variables Reference] - Complete variable listing
350
+ * link:../../reference/options-across-interfaces/[Options Across Interfaces] - How options map across CLI, Ruby, and RSpec
@@ -43,7 +43,7 @@ Configuration values are resolved using a strict four-level priority:
43
43
 
44
44
  **Rule**: Higher priority always wins, regardless of when values are set.
45
45
 
46
- See link:../configuration-profiles.adoc[Configuration Profiles] for details on the profile layer.
46
+ See link:../../configuration-profiles/[Configuration Profiles] for details on the profile layer.
47
47
 
48
48
  == How overrides work
49
49
 
@@ -437,7 +437,7 @@ end
437
437
 
438
438
  == See also
439
439
 
440
- * link:index.adoc[Environment Configuration] - Overview and usage
441
- * link:size-limits.adoc[Size Limits] - Limit-specific ENV variables
442
- * link:../../reference/environment-variables.adoc[Environment Variables Reference] - Complete listing
443
- * link:../../reference/options-across-interfaces.adoc[Options Across Interfaces] - How options work in CLI, Ruby, RSpec
440
+ * link:../[Environment Configuration] - Overview and usage
441
+ * link:../size-limits/[Size Limits] - Limit-specific ENV variables
442
+ * link:../../../reference/environment-variables/[Environment Variables Reference] - Complete listing
443
+ * link:../../../reference/options-across-interfaces/[Options Across Interfaces] - How options work in CLI, Ruby, RSpec
@@ -267,7 +267,7 @@ export CANON_VERBOSE_DIFF=false
267
267
 
268
268
  == See also
269
269
 
270
- * link:index.adoc[Environment Configuration] - Complete ENV configuration
271
- * link:override-system.adoc[Override System] - How ENV vars work
272
- * link:../../reference/environment-variables.adoc[Environment Variables Reference] - All variables
273
- * link:../../understanding/algorithms/dom-diff.adoc[DOM Algorithm] - Faster for large files
270
+ * link:../[Environment Configuration] - Complete ENV configuration
271
+ * link:../override-system/[Override System] - How ENV vars work
272
+ * link:../../../reference/environment-variables/[Environment Variables Reference] - All variables
273
+ * link:../../../understanding/algorithms/dom-diff/[DOM Algorithm] - Faster for large files
@@ -79,7 +79,7 @@ Customize how differences are displayed.
79
79
 
80
80
  === Configuration Profiles
81
81
 
82
- link:configuration-profiles.adoc[**Configuration Profiles**]::
82
+ link:configuration-profiles/[**Configuration Profiles**]::
83
83
  Bundle all settings into named presets defined in YAML.
84
84
  +
85
85
  * Built-in profiles (metanorma, metanorma_debug)
@@ -357,9 +357,9 @@ end
357
357
 
358
358
  == See Also
359
359
 
360
- * link:index.adoc[Match Options Overview]
360
+ * link:../[Match Options Overview]
361
361
  * link:../../understanding/algorithms/[Algorithms] - Detailed algorithm documentation
362
- * link:dimensions.adoc[Match Dimensions] - All available dimensions
363
- * link:profiles.adoc[Match Profiles] - Preset configurations
364
- * link:../diff-formatting/algorithm-specific-output.adoc[Algorithm-Specific Output] - How output differs
365
- * link:../../guides/choosing-configuration.adoc[Choosing Configuration] - Decision guide
362
+ * link:../match-options/[Match dimensions] - All available dimensions
363
+ * link:../match-options/[Match profiles] - Preset configurations
364
+ * link:../../diff-formatting/algorithm-specific-output/[Algorithm-Specific Output] - How output differs
365
+ * link:../../../guides/choosing-configuration/[Choosing Configuration] - Decision guide
@@ -314,4 +314,4 @@ See the following files for implementation details:
314
314
 
315
315
  * link:index.html[Match Options] - Overview of match system
316
316
  * link:algorithm-specific-behavior.html[Algorithm-Specific Behavior] - How algorithms handle options
317
- * link:../../advanced/diff-classification.html[Diff Classification] - Normative vs informative
317
+ * link:../../../advanced/diff-classification/[Diff Classification] - Normative vs informative
@@ -12,7 +12,7 @@ has_children: true
12
12
 
13
13
  This section provides a complete reference for Canon's match options, including match dimensions, behaviors, and predefined profiles.
14
14
 
15
- Match options control **Layer 3 (Match Options)** of Canon's 4-layer comparison architecture. See link:../../understanding/comparison-pipeline.adoc[Comparison Pipeline] for the complete flow.
15
+ Match options control **Layer 3 (Match Options)** of Canon's 4-layer comparison architecture. See link:../../understanding/comparison-pipeline/[Comparison Pipeline] for the complete flow.
16
16
 
17
17
  == Overview
18
18
 
@@ -22,15 +22,15 @@ Match options control which aspects of documents are compared and how strictly t
22
22
  * **Dimension behaviors**: How each dimension is compared (`:strict`, `:normalize`, `:ignore`)
23
23
  * **Match profiles**: Predefined combinations for common scenarios
24
24
 
25
- **Important**: Match options behave differently with each algorithm. See link:algorithm-specific-behavior.adoc[Algorithm-Specific Behavior] for details.
25
+ **Important**: Match options behave differently with each algorithm. See link:algorithm-specific-behavior/[Algorithm-Specific Behavior] for details.
26
26
 
27
27
  == Child Pages
28
28
 
29
- * link:dimensions.adoc[Match Dimensions] - Detailed reference for all dimensions
30
- * link:profiles.adoc[Match Profiles] - Predefined configurations
31
- * link:algorithm-specific-behavior.adoc[Algorithm-Specific Behavior] - How DOM and Semantic algorithms interpret options differently
32
- * link:html-policies.adoc[HTML-Specific Policies] - HTML format-specific comparison policies
33
- * link:pretty-printed-fixtures.adoc[Pretty-Printed Fixture Support] - Comparing compact generated XML against hand-indented fixture heredocs without spurious whitespace differences
29
+ * link:../match-options/[Match dimensions] - Detailed reference for all dimensions
30
+ * link:../match-options/[Match profiles] - Predefined configurations
31
+ * link:algorithm-specific-behavior/[Algorithm-Specific Behavior] - How DOM and Semantic algorithms interpret options differently
32
+ * link:html-policies/[HTML-Specific Policies] - HTML format-specific comparison policies
33
+ * link:pretty-printed-fixtures/[Pretty-Printed Fixture Support] - Comparing compact generated XML against hand-indented fixture heredocs without spurious whitespace differences
34
34
 
35
35
  == Match dimensions overview
36
36
 
@@ -261,10 +261,10 @@ new code.
261
261
 
262
262
  == See also
263
263
 
264
- * link:../../features/diff-formatting/display-preprocessing.adoc[Display preprocessing]
264
+ * link:../../diff-formatting/display-preprocessing/[Display preprocessing]
265
265
  — the `display_preprocessing` option and `XmlNormalized` serializer
266
- * link:index.adoc[Match options overview] — whitespace sensitivity classification
267
- * link:../../reference/options-across-interfaces.adoc[Options across interfaces]
266
+ * link:../[Match options overview] — whitespace sensitivity classification
267
+ * link:../../../reference/options-across-interfaces/[Options across interfaces]
268
268
  — cross-interface reference table
269
- * link:../../reference/environment-variables.adoc[Environment variables]
269
+ * link:../../../reference/environment-variables/[Environment variables]
270
270
  — `CANON_XML_DIFF_PRETTY_PRINTED_EXPECTED`, `CANON_XML_DIFF_PRETTY_PRINTED_RECEIVED`