canon 0.1.6 → 0.1.7

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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +163 -67
  3. data/README.adoc +400 -7
  4. data/docs/Gemfile +9 -0
  5. data/docs/INDEX.adoc +99 -182
  6. data/docs/_config.yml +100 -0
  7. data/docs/advanced/diff-classification.adoc +547 -0
  8. data/docs/advanced/diff-pipeline.adoc +358 -0
  9. data/docs/advanced/index.adoc +214 -0
  10. data/docs/advanced/semantic-diff-report.adoc +390 -0
  11. data/docs/{VERBOSE.adoc → advanced/verbose-mode-architecture.adoc} +51 -53
  12. data/docs/features/diff-formatting/algorithm-specific-output.adoc +533 -0
  13. data/docs/{CHARACTER_VISUALIZATION.adoc → features/diff-formatting/character-visualization.adoc} +23 -62
  14. data/docs/features/diff-formatting/colors-and-symbols.adoc +606 -0
  15. data/docs/features/diff-formatting/context-and-grouping.adoc +490 -0
  16. data/docs/features/diff-formatting/display-filtering.adoc +472 -0
  17. data/docs/features/diff-formatting/index.adoc +140 -0
  18. data/docs/features/environment-configuration/index.adoc +327 -0
  19. data/docs/features/environment-configuration/override-system.adoc +436 -0
  20. data/docs/features/environment-configuration/size-limits.adoc +273 -0
  21. data/docs/features/index.adoc +173 -0
  22. data/docs/features/input-validation/index.adoc +521 -0
  23. data/docs/features/match-options/algorithm-specific-behavior.adoc +365 -0
  24. data/docs/features/match-options/html-policies.adoc +312 -0
  25. data/docs/features/match-options/index.adoc +621 -0
  26. data/docs/getting-started/index.adoc +83 -0
  27. data/docs/getting-started/quick-start.adoc +76 -0
  28. data/docs/guides/choosing-configuration.adoc +689 -0
  29. data/docs/guides/index.adoc +181 -0
  30. data/docs/{CLI.adoc → interfaces/cli/index.adoc} +18 -13
  31. data/docs/interfaces/index.adoc +101 -0
  32. data/docs/{RSPEC.adoc → interfaces/rspec/index.adoc} +242 -31
  33. data/docs/{RUBY_API.adoc → interfaces/ruby-api/index.adoc} +118 -16
  34. data/docs/lychee.toml +65 -0
  35. data/docs/reference/cli-options.adoc +418 -0
  36. data/docs/reference/environment-variables.adoc +375 -0
  37. data/docs/reference/index.adoc +204 -0
  38. data/docs/reference/options-across-interfaces.adoc +417 -0
  39. data/docs/understanding/algorithms/dom-diff.adoc +389 -0
  40. data/docs/understanding/algorithms/index.adoc +314 -0
  41. data/docs/understanding/algorithms/semantic-tree-diff.adoc +533 -0
  42. data/docs/understanding/architecture.adoc +447 -0
  43. data/docs/understanding/comparison-pipeline.adoc +317 -0
  44. data/docs/understanding/formats/html.adoc +380 -0
  45. data/docs/understanding/formats/index.adoc +261 -0
  46. data/docs/understanding/formats/json.adoc +390 -0
  47. data/docs/understanding/formats/xml.adoc +366 -0
  48. data/docs/understanding/formats/yaml.adoc +504 -0
  49. data/docs/understanding/index.adoc +130 -0
  50. data/lib/canon/cli.rb +42 -1
  51. data/lib/canon/commands/diff_command.rb +108 -23
  52. data/lib/canon/comparison/compare_profile.rb +101 -0
  53. data/lib/canon/comparison/comparison_result.rb +41 -2
  54. data/lib/canon/comparison/html_comparator.rb +292 -71
  55. data/lib/canon/comparison/html_compare_profile.rb +117 -0
  56. data/lib/canon/comparison/match_options.rb +42 -4
  57. data/lib/canon/comparison/strategies/base_match_strategy.rb +99 -0
  58. data/lib/canon/comparison/strategies/match_strategy_factory.rb +74 -0
  59. data/lib/canon/comparison/strategies/semantic_tree_match_strategy.rb +220 -0
  60. data/lib/canon/comparison/xml_comparator.rb +695 -91
  61. data/lib/canon/comparison.rb +207 -2
  62. data/lib/canon/config/env_provider.rb +71 -0
  63. data/lib/canon/config/env_schema.rb +58 -0
  64. data/lib/canon/config/override_resolver.rb +55 -0
  65. data/lib/canon/config/type_converter.rb +59 -0
  66. data/lib/canon/config.rb +158 -29
  67. data/lib/canon/data_model.rb +29 -0
  68. data/lib/canon/diff/diff_classifier.rb +74 -14
  69. data/lib/canon/diff/diff_context_builder.rb +41 -0
  70. data/lib/canon/diff/diff_line.rb +18 -2
  71. data/lib/canon/diff/diff_node.rb +18 -3
  72. data/lib/canon/diff/diff_node_mapper.rb +71 -12
  73. data/lib/canon/diff/formatting_detector.rb +53 -0
  74. data/lib/canon/diff_formatter/by_line/base_formatter.rb +60 -5
  75. data/lib/canon/diff_formatter/by_line/html_formatter.rb +68 -16
  76. data/lib/canon/diff_formatter/by_line/json_formatter.rb +0 -37
  77. data/lib/canon/diff_formatter/by_line/simple_formatter.rb +0 -42
  78. data/lib/canon/diff_formatter/by_line/xml_formatter.rb +116 -31
  79. data/lib/canon/diff_formatter/by_line/yaml_formatter.rb +0 -37
  80. data/lib/canon/diff_formatter/by_object/base_formatter.rb +126 -19
  81. data/lib/canon/diff_formatter/by_object/xml_formatter.rb +30 -1
  82. data/lib/canon/diff_formatter/debug_output.rb +7 -1
  83. data/lib/canon/diff_formatter/diff_detail_formatter.rb +674 -57
  84. data/lib/canon/diff_formatter/legend.rb +42 -0
  85. data/lib/canon/diff_formatter.rb +78 -9
  86. data/lib/canon/errors.rb +56 -0
  87. data/lib/canon/formatters/html_formatter_base.rb +35 -1
  88. data/lib/canon/formatters/json_formatter.rb +3 -0
  89. data/lib/canon/formatters/yaml_formatter.rb +3 -0
  90. data/lib/canon/html/data_model.rb +229 -0
  91. data/lib/canon/html.rb +9 -0
  92. data/lib/canon/options/cli_generator.rb +70 -0
  93. data/lib/canon/options/registry.rb +234 -0
  94. data/lib/canon/rspec_matchers.rb +34 -13
  95. data/lib/canon/tree_diff/adapters/html_adapter.rb +316 -0
  96. data/lib/canon/tree_diff/adapters/json_adapter.rb +204 -0
  97. data/lib/canon/tree_diff/adapters/xml_adapter.rb +285 -0
  98. data/lib/canon/tree_diff/adapters/yaml_adapter.rb +213 -0
  99. data/lib/canon/tree_diff/core/attribute_comparator.rb +84 -0
  100. data/lib/canon/tree_diff/core/matching.rb +241 -0
  101. data/lib/canon/tree_diff/core/node_signature.rb +164 -0
  102. data/lib/canon/tree_diff/core/node_weight.rb +135 -0
  103. data/lib/canon/tree_diff/core/tree_node.rb +450 -0
  104. data/lib/canon/tree_diff/matchers/hash_matcher.rb +258 -0
  105. data/lib/canon/tree_diff/matchers/similarity_matcher.rb +168 -0
  106. data/lib/canon/tree_diff/matchers/structural_propagator.rb +242 -0
  107. data/lib/canon/tree_diff/matchers/universal_matcher.rb +220 -0
  108. data/lib/canon/tree_diff/operation_converter.rb +631 -0
  109. data/lib/canon/tree_diff/operations/operation.rb +92 -0
  110. data/lib/canon/tree_diff/operations/operation_detector.rb +626 -0
  111. data/lib/canon/tree_diff/tree_diff_integrator.rb +140 -0
  112. data/lib/canon/tree_diff.rb +33 -0
  113. data/lib/canon/validators/json_validator.rb +3 -1
  114. data/lib/canon/validators/yaml_validator.rb +3 -1
  115. data/lib/canon/version.rb +1 -1
  116. data/lib/canon/xml/data_model.rb +22 -23
  117. data/lib/canon/xml/element_matcher.rb +128 -20
  118. data/lib/canon/xml/namespace_helper.rb +110 -0
  119. data/lib/canon.rb +3 -0
  120. metadata +81 -23
  121. data/_config.yml +0 -116
  122. data/docs/ADVANCED_TOPICS.adoc +0 -20
  123. data/docs/BASIC_USAGE.adoc +0 -16
  124. data/docs/CUSTOMIZING_BEHAVIOR.adoc +0 -19
  125. data/docs/DIFF_ARCHITECTURE.adoc +0 -435
  126. data/docs/DIFF_FORMATTING.adoc +0 -540
  127. data/docs/FORMATS.adoc +0 -447
  128. data/docs/INPUT_VALIDATION.adoc +0 -477
  129. data/docs/MATCH_ARCHITECTURE.adoc +0 -463
  130. data/docs/MATCH_OPTIONS.adoc +0 -719
  131. data/docs/MODES.adoc +0 -432
  132. data/docs/NORMATIVE_INFORMATIVE_DIFFS.adoc +0 -219
  133. data/docs/OPTIONS.adoc +0 -1387
  134. data/docs/PREPROCESSING.adoc +0 -491
  135. data/docs/SEMANTIC_DIFF_REPORT.adoc +0 -528
  136. data/docs/UNDERSTANDING_CANON.adoc +0 -17
data/docs/INDEX.adoc CHANGED
@@ -1,222 +1,139 @@
1
1
  ---
2
2
  layout: default
3
- title: Documentation Index
3
+ title: Home
4
4
  nav_order: 1
5
- has_children: false
5
+ description: "Canon: Semantic comparison and formatting for serialization formats"
6
+ permalink: /
6
7
  ---
7
- = Index
8
- :toc:
8
+ = Canon Documentation
9
+ :toc: macro
9
10
  :toclevels: 2
10
11
 
11
- == Documentation overview
12
+ [.lead]
13
+ Canon provides canonicalization, pretty-printing, and semantic comparison for XML, HTML, JSON, and YAML formats.
12
14
 
13
- This index organizes all Canon documentation by complexity, progressing from
14
- basic usage to advanced technical topics.
15
+ toc::[]
15
16
 
16
- == Level 1: Getting started
17
+ == Welcome
17
18
 
18
- Start here if you're new to Canon:
19
+ Canon helps you:
19
20
 
20
- * **link:../README[README]** - Project overview, installation, and quick
21
- start examples
21
+ * **Format** documents into canonical or human-readable forms
22
+ * **Compare** documents semantically, not just textually
23
+ * **Test** with RSpec matchers that understand structure
24
+ * **Debug** with clear, color-coded diff output
22
25
 
23
- == Level 2: Basic usage
26
+ == Quick Navigation
24
27
 
25
- Learn how to use Canon through different interfaces (choose based on your
26
- needs):
28
+ === By Your Role
27
29
 
28
- * **link:RUBY_API[Ruby API]** - Using Canon from Ruby code
29
- * **link:CLI[Command-line interface]** - Terminal commands and options
30
- * **link:RSPEC[RSpec matchers]** - Testing with Canon in RSpec
30
+ **Developer**::
31
+ Start with link:interfaces/ruby-api/[Ruby API] to integrate Canon into your applications.
31
32
 
32
- == Level 3: Understanding Canon
33
+ **QA Engineer**::
34
+ Start with link:interfaces/rspec/[RSpec Matchers] for testing XML/JSON/YAML generation.
33
35
 
34
- Learn how Canon works internally:
36
+ **DevOps**::
37
+ Start with link:interfaces/cli/[CLI] for command-line formatting and comparison.
35
38
 
36
- * **link:FORMATS[Format support]** - XML, HTML, JSON, YAML
37
- canonicalization
38
- * **link:MODES[Diff modes]** - By-line vs by-object comparison modes
39
- * **link:MATCH_ARCHITECTURE[Match architecture]** - Three-phase
40
- comparison flow
39
+ **Architect**::
40
+ Start with link:understanding/architecture[Architecture] to understand Canon's design.
41
41
 
42
- == Level 4: Customizing behavior
42
+ === By Task
43
43
 
44
- Configure Canon for your specific needs:
44
+ **Format a document**::
45
+ * link:getting-started/quick-start#formatting[Quick Start: Formatting]
46
+ * link:interfaces/ruby-api/formatting[Ruby API: Formatting]
47
+ * link:interfaces/cli/format-command[CLI: format command]
45
48
 
46
- * **link:MATCH_OPTIONS[Match options]** - Match dimensions and profiles
47
- * **link:PREPROCESSING[Preprocessing]** - Document normalization options
48
- * **link:DIFF_FORMATTING[Diff formatting]** - Customizing diff output
49
- * **link:INPUT_VALIDATION[Input validation]** - Error handling
50
- * **link:CHARACTER_VISUALIZATION[Character visualization]** - Whitespace
51
- visibility
49
+ **Compare documents**::
50
+ * link:getting-started/quick-start#comparing[Quick Start: Comparing]
51
+ * link:interfaces/ruby-api/comparison[Ruby API: Comparison]
52
+ * link:interfaces/cli/diff-command[CLI: diff command]
52
53
 
53
- == Level 5: Advanced topics
54
+ **Test XML generation**::
55
+ * link:guides/testing-xml-generation[Guide: Testing XML Generation]
56
+ * link:interfaces/rspec/matchers[RSpec Matchers]
54
57
 
55
- For developers and advanced users:
58
+ **Debug test failures**::
59
+ * link:guides/debugging-test-failures[Guide: Debugging Test Failures]
60
+ * link:features/diff-formatting/character-visualization[Character Visualization]
56
61
 
57
- * **link:VERBOSE[Verbose mode]** - Two-tier diff output architecture
58
- * **link:SEMANTIC_DIFF_REPORT[Semantic diff report]** - Detailed report
59
- format
60
- * **link:NORMATIVE_INFORMATIVE_DIFFS[Normative vs informative diffs]** - Diff
61
- classification
62
- * **link:DIFF_ARCHITECTURE[Diff architecture]** - Six-layer technical
63
- pipeline
62
+ === By Format
64
63
 
65
- == Documentation by topic
64
+ link:understanding/formats/xml[**XML**]::
65
+ W3C Canonical XML 1.1, namespace handling, attribute ordering
66
66
 
67
- === Canonicalization and formatting
67
+ link:understanding/formats/html[**HTML**]::
68
+ HTML4/5 detection, rendered whitespace handling
68
69
 
69
- * link:FORMATS[Format support] - Format-specific canonicalization rules
70
- * link:RUBY_API#formatting[Ruby API: Formatting]
71
- * link:CLI#format-command[CLI: Format command]
70
+ link:understanding/formats/json[**JSON**]::
71
+ Sorted keys, semantic comparison
72
72
 
73
- === Comparison and matching
73
+ link:understanding/formats/yaml[**YAML**]::
74
+ Sorted keys, alias handling
74
75
 
75
- * link:MATCH_ARCHITECTURE[Match architecture] - Three-phase comparison
76
- * link:MATCH_OPTIONS[Match options] - Dimensions and profiles
77
- * link:PREPROCESSING[Preprocessing] - Document normalization
78
- * link:RUBY_API#comparison[Ruby API: Comparison]
79
- * link:CLI#diff-command[CLI: Diff command]
76
+ == Learning Path
80
77
 
81
- === Diff output
78
+ === Level 1: Get Started (5 minutes)
82
79
 
83
- * link:MODES[Diff modes] - By-line vs by-object
84
- * link:DIFF_FORMATTING[Diff formatting] - Output customization
85
- * link:CHARACTER_VISUALIZATION[Character visualization] - Whitespace
86
- visibility
87
- * link:VERBOSE[Verbose mode] - Detailed diff output
88
- * link:SEMANTIC_DIFF_REPORT[Semantic diff report] - Report structure
80
+ . link:getting-started/installation[Install Canon]
81
+ . link:getting-started/quick-start[Try basic examples]
82
+ . link:getting-started/core-concepts[Understand core concepts]
89
83
 
90
- === Testing
84
+ === Level 2: Learn Interfaces (15 minutes)
91
85
 
92
- * link:RSPEC[RSpec matchers] - Testing guide
93
- * link:MATCH_OPTIONS#match-profiles[Match profiles] - Test-friendly
94
- profiles
95
- * link:INPUT_VALIDATION[Input validation] - Error handling in tests
86
+ Choose your interface:
96
87
 
97
- === Technical architecture
88
+ * link:interfaces/ruby-api/[Ruby API] - Integrate into applications
89
+ * link:interfaces/cli/[CLI] - Command-line usage
90
+ * link:interfaces/rspec/[RSpec] - Testing integration
98
91
 
99
- * link:MATCH_ARCHITECTURE[Match architecture] - Comparison phases
100
- * link:DIFF_ARCHITECTURE[Diff architecture] - Six-layer pipeline
101
- * link:NORMATIVE_INFORMATIVE_DIFFS[Normative vs informative diffs] - Classification
102
- system
92
+ === Level 3: Understand Canon (30 minutes)
103
93
 
104
- == Quick reference
94
+ . link:understanding/architecture[Architecture overview]
95
+ . link:understanding/algorithms/[Comparison algorithms]
96
+ . link:understanding/diff-modes/[Diff output modes]
105
97
 
106
- === Common tasks
98
+ === Level 4: Master Features (1 hour)
107
99
 
108
- **Format a document**::
109
- * Ruby: link:RUBY_API#formatting[Formatting section]
110
- * CLI: link:CLI#format-command[Format command]
100
+ . link:features/match-options/[Match options and profiles]
101
+ . link:features/canonicalization/[Format-specific canonicalization]
102
+ . link:features/diff-formatting/[Customizing diff output]
111
103
 
112
- **Compare documents**::
113
- * Ruby: link:RUBY_API#comparison[Comparison section]
114
- * CLI: link:CLI#diff-command[Diff command]
115
- * RSpec: link:RSPEC#basic-usage[Basic usage]
104
+ === Level 5: Advanced Topics (As needed)
116
105
 
117
- **Configure comparison behavior**::
118
- * link:MATCH_OPTIONS[Match options] - Dimensions and profiles
119
- * link:PREPROCESSING[Preprocessing] - Normalization options
106
+ * link:advanced/dom-diff-internals[DOM Diff Algorithm Details]
107
+ * link:advanced/semantic-tree-diff-internals[Semantic Tree Diff Details]
108
+ * link:advanced/extending-canon[Extending Canon]
120
109
 
121
- **Customize diff output**::
122
- * link:DIFF_FORMATTING[Diff formatting] - Colors, context, grouping
123
- * link:MODES[Diff modes] - By-line or by-object
110
+ == Popular Topics
124
111
 
125
- **Debug test failures**::
126
- * link:RSPEC#troubleshooting[RSpec troubleshooting]
127
- * link:CHARACTER_VISUALIZATION[Character visualization]
128
- * link:INPUT_VALIDATION[Input validation]
129
-
130
- === By format
131
-
132
- **XML**::
133
- * link:FORMATS#xml-format[XML format details]
134
- * link:RUBY_API[Ruby API] (all examples include XML)
135
- * link:MODES[Diff modes] (by-object default, by-line optional)
136
-
137
- **HTML**::
138
- * link:FORMATS#html-format[HTML format details]
139
- * link:MODES#by-line-mode[By-line mode] (HTML always uses this)
140
-
141
- **JSON**::
142
- * link:FORMATS#json-format[JSON format details]
143
- * link:MODES#by-object-mode[By-object mode] (JSON default)
144
-
145
- **YAML**::
146
- * link:FORMATS#yaml-format[YAML format details]
147
- * link:MODES#by-object-mode[By-object mode] (YAML default)
148
-
149
- == Contributing to documentation
150
-
151
- === Documentation style guidelines
152
-
153
- When updating Canon documentation, follow these principles:
154
-
155
- **Heading style**::
156
- * Use sentence-case for all headings (e.g., "Match architecture", not "Match
157
- Architecture")
158
- * Use descriptive, clear headings that indicate content scope
159
-
160
- **Structure**::
161
- * Begin with a Scope section explaining what the document covers
162
- * Include a General section for background and key concepts
163
- * Organize content into logical sections with clear hierarchy
164
- * Use "See also" section at the end for cross-references
165
-
166
- **MECE principle**::
167
- * **Mutually Exclusive**: Each document covers a distinct topic without
168
- overlap
169
- * **Collectively Exhaustive**: All topics covered without gaps
170
- * Avoid duplicate information across documents
171
-
172
- **Examples and code**::
173
- * Wrap examples with `[example]` and `====` delimiters
174
- * Use `[source,lang]` with `----` delimiters for code blocks
175
- * Provide clear example titles describing what is shown
176
- * Include explanation after code examples
177
- * Use practical, real-world examples when possible
178
-
179
- **Lists**::
180
- * Separate lists from surrounding content with blank lines before and after
181
- * Ordered lists: Use `. ` flush with the line beginning
182
- * Unordered lists: Use `* ` flush with the line beginning
183
- * Second-level ordered: Use `.. `
184
- * Second-level unordered: Use `** `
185
- * Definition lists: Use `term:: description` format
186
-
187
- **Line length and formatting**::
188
- * Wrap lines at 80 characters
189
- * Exceptions: Cross-references, formulas, and code blocks
190
- * No "hanging paragraphs" - if needed, create a "General" subsection
191
-
192
- **Cross-references**::
193
- * Link to related documents using `link:DOCUMENT[Link text]`
194
- * Include "See also" section listing related documentation
195
- * Reference specific sections using anchors where appropriate
196
-
197
- **File organization**::
198
- * Each file uses `:toc:` and `:toclevels: 3` for navigation
199
- * Keep files focused on a single topic
200
- * Aim for 200-500 lines per document (except comprehensive references)
201
-
202
- === Content guidelines
203
-
204
- **Clarity**::
205
- * Write in clear, technical prose
206
- * Define terms when first introduced
207
- * Use consistent terminology throughout
208
-
209
- **Completeness**::
210
- * Provide complete syntax definitions
211
- * Include "Where," legend explaining syntax elements
212
- * Show both basic and advanced usage
213
-
214
- **Accuracy**::
215
- * Verify all code examples work correctly
216
- * Ensure cross-references point to existing documents
217
- * Keep documentation synchronized with code changes
218
-
219
- **Accessibility**::
220
- * Write for users with varying expertise levels
221
- * Progress from simple to complex topics
222
- * Link to prerequisite knowledge
112
+ * link:reference/options-across-interfaces[Options Across Interfaces] - Same options in CLI, Ruby API, and RSpec
113
+ * link:reference/environment-variables[Environment Variables] - Configure Canon via ENV variables
114
+ * link:features/match-options/profiles[Match Profiles] - Pre-configured comparison strategies
115
+ * link:features/diff-formatting/colors-and-symbols[Color-Coded Diffs] - Understanding diff output
116
+ * link:features/environment-configuration/size-limits[Size Limits] - Preventing hangs on large files
117
+ * link:reference/cli-options[CLI Options Reference] - Complete option listing
118
+
119
+ == Getting Help
120
+
121
+ **Found a bug?**::
122
+ link:https://github.com/lutaml/canon/issues[Report an issue on GitHub]
123
+
124
+ **Have a question?**::
125
+ Check link:reference/glossary[Glossary] or search this documentation
126
+
127
+ **Want to contribute?**::
128
+ See link:contributing[Contributing to Documentation]
129
+
130
+ == What's New
131
+
132
+ === Version 0.x (Current)
133
+
134
+ * Semantic tree diff algorithm (experimental)
135
+ * Size limits for large files
136
+ * Enhanced character visualization
137
+ * Environment variable configuration
138
+
139
+ See link:https://github.com/lutaml/canon/blob/main/CHANGELOG.md[Full Changelog]
data/docs/_config.yml ADDED
@@ -0,0 +1,100 @@
1
+ # Jekyll configuration for Canon documentation
2
+ # Uses Just the Docs theme - https://just-the-docs.com/
3
+
4
+ # Site settings
5
+ title: Canon Documentation
6
+ description: Semantic comparison and formatting for serialization formats (XML, HTML, JSON, YAML)
7
+ url: https://www.lutaml.org
8
+ baseurl: /canon
9
+
10
+ # Repository
11
+ repository: lutaml/canon
12
+
13
+ # Theme
14
+ theme: just-the-docs
15
+ color_scheme: light
16
+
17
+ # AsciiDoc support
18
+ asciidoc: {}
19
+ asciidoctor:
20
+ attributes:
21
+ idprefix: ''
22
+ idseparator: '-'
23
+ source-highlighter: rouge
24
+ icons: font
25
+ experimental: true
26
+ sectanchors: true
27
+ linkattrs: true
28
+ sectnums: true
29
+ toc: left
30
+ toclevels: 3
31
+
32
+ # Search configuration
33
+ search_enabled: true
34
+ search:
35
+ heading_level: 3
36
+ previews: 3
37
+ preview_words_before: 5
38
+ preview_words_after: 10
39
+ tokenizer_separator: /[\s/]+/
40
+ rel_url: true
41
+ button: true
42
+
43
+ # Navigation
44
+ nav_sort: case_insensitive
45
+ nav_fold: true
46
+
47
+ # External links
48
+ aux_links:
49
+ "Source":
50
+ - "https://github.com/lutaml/canon"
51
+ "Report Issues":
52
+ - "https://github.com/lutaml/canon/issues"
53
+
54
+ aux_links_new_tab: true
55
+
56
+ # Back to top
57
+ back_to_top: true
58
+ back_to_top_text: "Back to top"
59
+
60
+ # Heading anchors
61
+ heading_anchors: true
62
+
63
+ # Footer
64
+ footer_content: 'Copyright &copy; 2025 Ribose. Distributed under the <a href="https://github.com/lutaml/canon/blob/main/LICENSE.txt">BSD 2-Clause License</a>.'
65
+
66
+ # Plugins
67
+ plugins:
68
+ - jekyll-asciidoc
69
+ - jekyll-seo-tag
70
+
71
+ # Markdown settings (for any markdown files)
72
+ markdown: kramdown
73
+ kramdown:
74
+ input: GFM
75
+ hard_wrap: false
76
+ syntax_highlighter: rouge
77
+
78
+ # Defaults
79
+ defaults:
80
+ - scope:
81
+ path: ""
82
+ type: pages
83
+ values:
84
+ layout: default
85
+
86
+ # Exclude from processing
87
+ exclude:
88
+ - Gemfile
89
+ - Gemfile.lock
90
+ - node_modules
91
+ - vendor
92
+ - .sass-cache
93
+ - .jekyll-cache
94
+ - .bundle
95
+ - README.md
96
+ - LICENSE
97
+ - .git
98
+ - .gitignore
99
+
100
+ permalink: pretty