rumdl 0.0.167__tar.gz → 0.0.168__tar.gz

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.

Potentially problematic release.


This version of rumdl might be problematic. Click here for more details.

Files changed (468) hide show
  1. {rumdl-0.0.167 → rumdl-0.0.168}/.pre-commit-config.yaml +19 -2
  2. {rumdl-0.0.167 → rumdl-0.0.168}/CHANGELOG.md +121 -0
  3. {rumdl-0.0.167 → rumdl-0.0.168}/Cargo.lock +1 -1
  4. {rumdl-0.0.167 → rumdl-0.0.168}/Cargo.toml +1 -1
  5. {rumdl-0.0.167 → rumdl-0.0.168}/PKG-INFO +1 -1
  6. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md013.md +5 -1
  7. {rumdl-0.0.167 → rumdl-0.0.168}/rumdl.schema.json +73 -70
  8. rumdl-0.0.168/scripts/verify-release-ready.sh +99 -0
  9. {rumdl-0.0.167 → rumdl-0.0.168}/src/file_processor.rs +32 -5
  10. {rumdl-0.0.167 → rumdl-0.0.168}/src/lint_context.rs +45 -22
  11. {rumdl-0.0.167 → rumdl-0.0.168}/src/lsp/server.rs +43 -62
  12. {rumdl-0.0.167 → rumdl-0.0.168}/src/lsp/types.rs +245 -4
  13. {rumdl-0.0.167 → rumdl-0.0.168}/src/main.rs +18 -1
  14. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md011_no_reversed_links.rs +13 -12
  15. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md012_no_multiple_blanks/md012_config.rs +4 -1
  16. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md012_no_multiple_blanks.rs +62 -97
  17. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md013_line_length.rs +172 -23
  18. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md018_no_missing_space_atx.rs +63 -0
  19. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md033_no_inline_html.rs +145 -26
  20. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md052_reference_links_images.rs +97 -30
  21. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/regex_cache.rs +1 -0
  22. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/text_reflow.rs +152 -17
  23. {rumdl-0.0.167 → rumdl-0.0.168}/tests/character_ranges/extended_tests.rs +3 -6
  24. {rumdl-0.0.167 → rumdl-0.0.168}/tests/code_block_blockquote_edge_cases.rs +6 -7
  25. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md033_edge_cases_test.rs +23 -8
  26. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md033_blockquote_test.rs +5 -8
  27. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md033_kramdown_test.rs +9 -14
  28. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md033_test.rs +29 -38
  29. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md052_test.rs +3 -9
  30. rumdl-0.0.168/tests/sentence_per_line_test.rs +208 -0
  31. rumdl-0.0.167/tests/sentence_per_line_test.rs +0 -109
  32. {rumdl-0.0.167 → rumdl-0.0.168}/.config/nextest.toml +0 -0
  33. {rumdl-0.0.167 → rumdl-0.0.168}/.mise.toml +0 -0
  34. {rumdl-0.0.167 → rumdl-0.0.168}/.rumdl.toml +0 -0
  35. {rumdl-0.0.167 → rumdl-0.0.168}/.rustfmt.toml +0 -0
  36. {rumdl-0.0.167 → rumdl-0.0.168}/CONTRIBUTING.md +0 -0
  37. {rumdl-0.0.167 → rumdl-0.0.168}/LICENSE +0 -0
  38. {rumdl-0.0.167 → rumdl-0.0.168}/MANIFEST.in +0 -0
  39. {rumdl-0.0.167 → rumdl-0.0.168}/Makefile +0 -0
  40. {rumdl-0.0.167 → rumdl-0.0.168}/README.md +0 -0
  41. {rumdl-0.0.167 → rumdl-0.0.168}/assets/logo.png +0 -0
  42. {rumdl-0.0.167 → rumdl-0.0.168}/benches/fix_performance.rs +0 -0
  43. {rumdl-0.0.167 → rumdl-0.0.168}/benches/range_performance.rs +0 -0
  44. {rumdl-0.0.167 → rumdl-0.0.168}/benches/range_utils_benchmark.rs +0 -0
  45. {rumdl-0.0.167 → rumdl-0.0.168}/benches/rule_performance.rs +0 -0
  46. {rumdl-0.0.167 → rumdl-0.0.168}/benches/simple_fix_bench.rs +0 -0
  47. {rumdl-0.0.167 → rumdl-0.0.168}/benchmark/bin/bench_lint_context.rs +0 -0
  48. {rumdl-0.0.167 → rumdl-0.0.168}/benchmark/bin/benchmark.rs +0 -0
  49. {rumdl-0.0.167 → rumdl-0.0.168}/benchmark/bin/benchmark_rule.rs +0 -0
  50. {rumdl-0.0.167 → rumdl-0.0.168}/benchmark/bin/file_parallel_benchmark.rs +0 -0
  51. {rumdl-0.0.167 → rumdl-0.0.168}/benchmark/bin/measure_code_span_performance.rs +0 -0
  52. {rumdl-0.0.167 → rumdl-0.0.168}/cliff.toml +0 -0
  53. {rumdl-0.0.167 → rumdl-0.0.168}/docs/RULES.md +0 -0
  54. {rumdl-0.0.167 → rumdl-0.0.168}/docs/global-settings.md +0 -0
  55. {rumdl-0.0.167 → rumdl-0.0.168}/docs/inline-configuration.md +0 -0
  56. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md001.md +0 -0
  57. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md002.md +0 -0
  58. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md003.md +0 -0
  59. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md004.md +0 -0
  60. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md005.md +0 -0
  61. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md006.md +0 -0
  62. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md007.md +0 -0
  63. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md009.md +0 -0
  64. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md010.md +0 -0
  65. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md011.md +0 -0
  66. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md012.md +0 -0
  67. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md014.md +0 -0
  68. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md018.md +0 -0
  69. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md019.md +0 -0
  70. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md020.md +0 -0
  71. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md021.md +0 -0
  72. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md022.md +0 -0
  73. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md023.md +0 -0
  74. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md024.md +0 -0
  75. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md025.md +0 -0
  76. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md026.md +0 -0
  77. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md027.md +0 -0
  78. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md028.md +0 -0
  79. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md029.md +0 -0
  80. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md030.md +0 -0
  81. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md031.md +0 -0
  82. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md032.md +0 -0
  83. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md033.md +0 -0
  84. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md034.md +0 -0
  85. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md035.md +0 -0
  86. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md036.md +0 -0
  87. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md037.md +0 -0
  88. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md038.md +0 -0
  89. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md039.md +0 -0
  90. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md040.md +0 -0
  91. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md041.md +0 -0
  92. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md042.md +0 -0
  93. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md043.md +0 -0
  94. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md044.md +0 -0
  95. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md045.md +0 -0
  96. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md046.md +0 -0
  97. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md047.md +0 -0
  98. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md048.md +0 -0
  99. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md049.md +0 -0
  100. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md050.md +0 -0
  101. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md051.md +0 -0
  102. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md052.md +0 -0
  103. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md053.md +0 -0
  104. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md054.md +0 -0
  105. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md055.md +0 -0
  106. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md056.md +0 -0
  107. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md057.md +0 -0
  108. {rumdl-0.0.167 → rumdl-0.0.168}/docs/md058.md +0 -0
  109. {rumdl-0.0.167 → rumdl-0.0.168}/docs/vscode-extension.md +0 -0
  110. {rumdl-0.0.167 → rumdl-0.0.168}/pyproject.toml +0 -0
  111. {rumdl-0.0.167 → rumdl-0.0.168}/rumdl/__init__.py +0 -0
  112. {rumdl-0.0.167 → rumdl-0.0.168}/rumdl/__main__.py +0 -0
  113. {rumdl-0.0.167 → rumdl-0.0.168}/rumdl/py.typed +0 -0
  114. {rumdl-0.0.167 → rumdl-0.0.168}/rumdl.toml.example +0 -0
  115. {rumdl-0.0.167 → rumdl-0.0.168}/rust-toolchain.toml +0 -0
  116. {rumdl-0.0.167 → rumdl-0.0.168}/scripts/extract-changelog.sh +0 -0
  117. {rumdl-0.0.167 → rumdl-0.0.168}/scripts/generate-downloads-table.sh +0 -0
  118. {rumdl-0.0.167 → rumdl-0.0.168}/scripts/pre-release.sh +0 -0
  119. {rumdl-0.0.167 → rumdl-0.0.168}/scripts/prepare-release.sh +0 -0
  120. {rumdl-0.0.167 → rumdl-0.0.168}/scripts/setup-pre-commit.sh +0 -0
  121. {rumdl-0.0.167 → rumdl-0.0.168}/scripts/update-pre-commit-docs.sh +0 -0
  122. {rumdl-0.0.167 → rumdl-0.0.168}/src/cache.rs +0 -0
  123. {rumdl-0.0.167 → rumdl-0.0.168}/src/config.rs +0 -0
  124. {rumdl-0.0.167 → rumdl-0.0.168}/src/exit_codes.rs +0 -0
  125. {rumdl-0.0.167 → rumdl-0.0.168}/src/filtered_lines.rs +0 -0
  126. {rumdl-0.0.167 → rumdl-0.0.168}/src/fix_coordinator.rs +0 -0
  127. {rumdl-0.0.167 → rumdl-0.0.168}/src/formatter.rs +0 -0
  128. {rumdl-0.0.167 → rumdl-0.0.168}/src/inline_config.rs +0 -0
  129. {rumdl-0.0.167 → rumdl-0.0.168}/src/lib.rs +0 -0
  130. {rumdl-0.0.167 → rumdl-0.0.168}/src/lsp/mod.rs +0 -0
  131. {rumdl-0.0.167 → rumdl-0.0.168}/src/markdownlint_config.rs +0 -0
  132. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/azure.rs +0 -0
  133. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/concise.rs +0 -0
  134. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/github.rs +0 -0
  135. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/gitlab.rs +0 -0
  136. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/grouped.rs +0 -0
  137. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/json.rs +0 -0
  138. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/json_lines.rs +0 -0
  139. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/junit.rs +0 -0
  140. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/mod.rs +0 -0
  141. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/pylint.rs +0 -0
  142. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/sarif.rs +0 -0
  143. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/formatters/text.rs +0 -0
  144. {rumdl-0.0.167 → rumdl-0.0.168}/src/output/mod.rs +0 -0
  145. {rumdl-0.0.167 → rumdl-0.0.168}/src/parallel.rs +0 -0
  146. {rumdl-0.0.167 → rumdl-0.0.168}/src/performance.rs +0 -0
  147. {rumdl-0.0.167 → rumdl-0.0.168}/src/profiling.rs +0 -0
  148. {rumdl-0.0.167 → rumdl-0.0.168}/src/rule.rs +0 -0
  149. {rumdl-0.0.167 → rumdl-0.0.168}/src/rule_config.rs +0 -0
  150. {rumdl-0.0.167 → rumdl-0.0.168}/src/rule_config_serde.rs +0 -0
  151. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/blockquote_utils.rs +0 -0
  152. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/code_block_utils.rs +0 -0
  153. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/code_fence_utils.rs +0 -0
  154. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/emphasis_style.rs +0 -0
  155. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/front_matter_utils.rs +0 -0
  156. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/heading_utils.rs +0 -0
  157. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/list_utils.rs +0 -0
  158. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md001_heading_increment.rs +0 -0
  159. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  160. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md002_first_heading_h1.rs +0 -0
  161. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md003_heading_style/md003_config.rs +0 -0
  162. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md003_heading_style.rs +0 -0
  163. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  164. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md004_unordered_list_style.rs +0 -0
  165. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md005_list_indent.rs +0 -0
  166. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md006_start_bullets.rs +0 -0
  167. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md007_ul_indent/md007_config.rs +0 -0
  168. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md007_ul_indent.rs +0 -0
  169. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  170. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md009_trailing_spaces.rs +0 -0
  171. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  172. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md010_no_hard_tabs.rs +0 -0
  173. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md013_line_length/md013_config.rs +0 -0
  174. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  175. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md014_commands_show_output.rs +0 -0
  176. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  177. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  178. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  179. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  180. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md022_blanks_around_headings.rs +0 -0
  181. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md023_heading_start_left.rs +0 -0
  182. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  183. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md024_no_duplicate_heading.rs +0 -0
  184. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md025_single_title/md025_config.rs +0 -0
  185. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md025_single_title.rs +0 -0
  186. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  187. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  188. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  189. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  190. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
  191. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md029_ordered_list_prefix.rs +0 -0
  192. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  193. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md030_list_marker_space.rs +0 -0
  194. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md031_blanks_around_fences.rs +0 -0
  195. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md032_blanks_around_lists.rs +0 -0
  196. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  197. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md034_no_bare_urls.rs +0 -0
  198. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md035_hr_style/md035_config.rs +0 -0
  199. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md035_hr_style.rs +0 -0
  200. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  201. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  202. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  203. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md038_no_space_in_code.rs +0 -0
  204. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md039_no_space_in_links.rs +0 -0
  205. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md040_fenced_code_language.rs +0 -0
  206. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md041_first_line_heading.rs +0 -0
  207. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md042_no_empty_links.rs +0 -0
  208. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md043_required_headings.rs +0 -0
  209. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md044_proper_names/md044_config.rs +0 -0
  210. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md044_proper_names.rs +0 -0
  211. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  212. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md045_no_alt_text.rs +0 -0
  213. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  214. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md046_code_block_style.rs +0 -0
  215. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md047_single_trailing_newline.rs +0 -0
  216. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  217. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md048_code_fence_style.rs +0 -0
  218. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  219. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md049_emphasis_style.rs +0 -0
  220. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md050_strong_style/md050_config.rs +0 -0
  221. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md050_strong_style.rs +0 -0
  222. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md051_link_fragments.rs +0 -0
  223. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  224. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  225. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md054_link_image_style.rs +0 -0
  226. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  227. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md055_table_pipe_style.rs +0 -0
  228. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md056_table_column_count.rs +0 -0
  229. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  230. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md057_existing_relative_links.rs +0 -0
  231. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/md058_blanks_around_tables.rs +0 -0
  232. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/mod.rs +0 -0
  233. {rumdl-0.0.167 → rumdl-0.0.168}/src/rules/strong_style.rs +0 -0
  234. {rumdl-0.0.167 → rumdl-0.0.168}/src/stdin_processor.rs +0 -0
  235. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/anchor_styles/github.rs +0 -0
  236. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/anchor_styles/jekyll.rs +0 -0
  237. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/anchor_styles/kramdown.rs +0 -0
  238. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
  239. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/anchor_styles/mod.rs +0 -0
  240. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/ast_utils.rs +0 -0
  241. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/code_block_utils.rs +0 -0
  242. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/document_structure.rs +0 -0
  243. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/early_returns.rs +0 -0
  244. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/element_cache.rs +0 -0
  245. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/emphasis_utils.rs +0 -0
  246. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/fix_utils.rs +0 -0
  247. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/header_id_utils.rs +0 -0
  248. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/jinja_utils.rs +0 -0
  249. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/kramdown_utils.rs +0 -0
  250. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/line_ending.rs +0 -0
  251. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/markdown_elements.rs +0 -0
  252. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocs_admonitions.rs +0 -0
  253. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocs_common.rs +0 -0
  254. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocs_critic.rs +0 -0
  255. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocs_footnotes.rs +0 -0
  256. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocs_patterns.rs +0 -0
  257. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocs_snippets.rs +0 -0
  258. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocs_tabs.rs +0 -0
  259. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocs_test_utils.rs +0 -0
  260. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mkdocstrings_refs.rs +0 -0
  261. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/mod.rs +0 -0
  262. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/range_utils.rs +0 -0
  263. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/skip_context.rs +0 -0
  264. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/string_interner.rs +0 -0
  265. {rumdl-0.0.167 → rumdl-0.0.168}/src/utils/table_utils.rs +0 -0
  266. {rumdl-0.0.167 → rumdl-0.0.168}/src/vscode.rs +0 -0
  267. {rumdl-0.0.167 → rumdl-0.0.168}/src/watch.rs +0 -0
  268. {rumdl-0.0.167 → rumdl-0.0.168}/tests/advanced_integration_tests.rs +0 -0
  269. {rumdl-0.0.167 → rumdl-0.0.168}/tests/character_ranges/additional_tests.rs +0 -0
  270. {rumdl-0.0.167 → rumdl-0.0.168}/tests/character_ranges/basic_tests.rs +0 -0
  271. {rumdl-0.0.167 → rumdl-0.0.168}/tests/character_ranges/comprehensive_tests.rs +0 -0
  272. {rumdl-0.0.167 → rumdl-0.0.168}/tests/character_ranges/mod.rs +0 -0
  273. {rumdl-0.0.167 → rumdl-0.0.168}/tests/character_ranges/unicode_utils.rs +0 -0
  274. {rumdl-0.0.167 → rumdl-0.0.168}/tests/cli_duplication_test.rs +0 -0
  275. {rumdl-0.0.167 → rumdl-0.0.168}/tests/cli_explain_test.rs +0 -0
  276. {rumdl-0.0.167 → rumdl-0.0.168}/tests/cli_flag_precedence_test.rs +0 -0
  277. {rumdl-0.0.167 → rumdl-0.0.168}/tests/cli_integration_tests.rs +0 -0
  278. {rumdl-0.0.167 → rumdl-0.0.168}/tests/cli_lsp_fix_consistency.rs +0 -0
  279. {rumdl-0.0.167 → rumdl-0.0.168}/tests/cli_statistics_test.rs +0 -0
  280. {rumdl-0.0.167 → rumdl-0.0.168}/tests/common/cli_test_utils.rs +0 -0
  281. {rumdl-0.0.167 → rumdl-0.0.168}/tests/common/fixtures.rs +0 -0
  282. {rumdl-0.0.167 → rumdl-0.0.168}/tests/common/mod.rs +0 -0
  283. {rumdl-0.0.167 → rumdl-0.0.168}/tests/common/test_utils.rs +0 -0
  284. {rumdl-0.0.167 → rumdl-0.0.168}/tests/commonmark_compliance_tests.rs +0 -0
  285. {rumdl-0.0.167 → rumdl-0.0.168}/tests/comprehensive_integration_tests.rs +0 -0
  286. {rumdl-0.0.167 → rumdl-0.0.168}/tests/comprehensive_output_format_tests.rs +0 -0
  287. {rumdl-0.0.167 → rumdl-0.0.168}/tests/config_application_tests.rs +0 -0
  288. {rumdl-0.0.167 → rumdl-0.0.168}/tests/config_file_command_test.rs +0 -0
  289. {rumdl-0.0.167 → rumdl-0.0.168}/tests/config_tests.rs +0 -0
  290. {rumdl-0.0.167 → rumdl-0.0.168}/tests/config_upward_traversal_test.rs +0 -0
  291. {rumdl-0.0.167 → rumdl-0.0.168}/tests/configuration_inheritance_tests.rs +0 -0
  292. {rumdl-0.0.167 → rumdl-0.0.168}/tests/consistency_regression_tests.rs +0 -0
  293. {rumdl-0.0.167 → rumdl-0.0.168}/tests/crlf_line_endings_test.rs +0 -0
  294. {rumdl-0.0.167 → rumdl-0.0.168}/tests/cross_platform_compatibility_tests.rs +0 -0
  295. {rumdl-0.0.167 → rumdl-0.0.168}/tests/deeply_nested_lists_performance_test.rs +0 -0
  296. {rumdl-0.0.167 → rumdl-0.0.168}/tests/escaped_brackets_test.rs +0 -0
  297. {rumdl-0.0.167 → rumdl-0.0.168}/tests/exclude_with_explicit_paths_test.rs +0 -0
  298. {rumdl-0.0.167 → rumdl-0.0.168}/tests/final_confidence_assessment.rs +0 -0
  299. {rumdl-0.0.167 → rumdl-0.0.168}/tests/fix_counting_test.rs +0 -0
  300. {rumdl-0.0.167 → rumdl-0.0.168}/tests/fix_performance_baseline_test.rs +0 -0
  301. {rumdl-0.0.167 → rumdl-0.0.168}/tests/fixable_unfixable_config_test.rs +0 -0
  302. {rumdl-0.0.167 → rumdl-0.0.168}/tests/html_comments_test.rs +0 -0
  303. {rumdl-0.0.167 → rumdl-0.0.168}/tests/init_command_test.rs +0 -0
  304. {rumdl-0.0.167 → rumdl-0.0.168}/tests/init_tests.rs +0 -0
  305. {rumdl-0.0.167 → rumdl-0.0.168}/tests/inline_config_blocks_test.rs +0 -0
  306. {rumdl-0.0.167 → rumdl-0.0.168}/tests/inline_config_test.rs +0 -0
  307. {rumdl-0.0.167 → rumdl-0.0.168}/tests/integration_tests.rs +0 -0
  308. {rumdl-0.0.167 → rumdl-0.0.168}/tests/json_output_test.rs +0 -0
  309. {rumdl-0.0.167 → rumdl-0.0.168}/tests/kramdown_integration_test.rs +0 -0
  310. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lib.rs +0 -0
  311. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lsp_editor_integration_tests.rs +0 -0
  312. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lsp_formatting_tests.rs +0 -0
  313. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lsp_initialization_options_test.rs +0 -0
  314. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lsp_integration_tests.rs +0 -0
  315. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lsp_memory_leak_tests.rs +0 -0
  316. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lsp_mkdocs_flavor_test.rs +0 -0
  317. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lsp_tests.rs +0 -0
  318. {rumdl-0.0.167 → rumdl-0.0.168}/tests/lsp_unopened_document_test.rs +0 -0
  319. {rumdl-0.0.167 → rumdl-0.0.168}/tests/malformed_markdown_stress_tests.rs +0 -0
  320. {rumdl-0.0.167 → rumdl-0.0.168}/tests/markdownlint_cli_integration.rs +0 -0
  321. {rumdl-0.0.167 → rumdl-0.0.168}/tests/markdownlint_config_test.rs +0 -0
  322. {rumdl-0.0.167 → rumdl-0.0.168}/tests/markdownlintignore_test.rs +0 -0
  323. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md009_md013_integration_test.rs +0 -0
  324. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md009_md013_order_test.rs +0 -0
  325. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md013_hard_breaks_test.rs +0 -0
  326. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md013_reflow_integration_test.rs +0 -0
  327. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md013_reflow_nested_lists_test.rs +0 -0
  328. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md032_edge_cases_test.rs +0 -0
  329. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md032_ordered_list_bug_test.rs +0 -0
  330. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md037_xxxx_regression_test.rs +0 -0
  331. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md038_false_positive_test.rs +0 -0
  332. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md051_issue_39_regression_test.rs +0 -0
  333. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md051_readme_bug_test.rs +0 -0
  334. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md051_toc_bug_test.rs +0 -0
  335. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md052_literal_brackets_test.rs +0 -0
  336. {rumdl-0.0.167 → rumdl-0.0.168}/tests/md054_code_span_test.rs +0 -0
  337. {rumdl-0.0.167 → rumdl-0.0.168}/tests/mkdocs_anchor_edge_cases_test.rs +0 -0
  338. {rumdl-0.0.167 → rumdl-0.0.168}/tests/mkdocs_anchor_test.rs +0 -0
  339. {rumdl-0.0.167 → rumdl-0.0.168}/tests/nested_code_block_test.rs +0 -0
  340. {rumdl-0.0.167 → rumdl-0.0.168}/tests/output_format_integration_tests.rs +0 -0
  341. {rumdl-0.0.167 → rumdl-0.0.168}/tests/output_format_tests.rs +0 -0
  342. {rumdl-0.0.167 → rumdl-0.0.168}/tests/per_file_ignores_integration_test.rs +0 -0
  343. {rumdl-0.0.167 → rumdl-0.0.168}/tests/perf_check.rs +0 -0
  344. {rumdl-0.0.167 → rumdl-0.0.168}/tests/performance_validation_tests.rs +0 -0
  345. {rumdl-0.0.167 → rumdl-0.0.168}/tests/pyproject_config_tests.rs +0 -0
  346. {rumdl-0.0.167 → rumdl-0.0.168}/tests/real_world_repository_tests.rs +0 -0
  347. {rumdl-0.0.167 → rumdl-0.0.168}/tests/regression_prevention_tests.rs +0 -0
  348. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/emphasis_edge_cases_test.rs +0 -0
  349. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/heading_edge_cases_test.rs +0 -0
  350. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/inline_content_edge_cases_test.rs +0 -0
  351. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/link_edge_cases_test.rs +0 -0
  352. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/list_rules_integration_test.rs +0 -0
  353. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md001_test.rs +0 -0
  354. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md001_unicode_test.rs +0 -0
  355. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md002_test.rs +0 -0
  356. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md003_test.rs +0 -0
  357. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md004_test.rs +0 -0
  358. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md005_dynamic_indent_test.rs +0 -0
  359. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md005_test.rs +0 -0
  360. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md005_unicode_test.rs +0 -0
  361. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md006_test.rs +0 -0
  362. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md006_unicode_test.rs +0 -0
  363. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md007_test.rs +0 -0
  364. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md009_test.rs +0 -0
  365. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md010_test.rs +0 -0
  366. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md011_test.rs +0 -0
  367. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md012_test.rs +0 -0
  368. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md013_test.rs +0 -0
  369. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md014_test.rs +0 -0
  370. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md018_test.rs +0 -0
  371. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md019_test.rs +0 -0
  372. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md020_test.rs +0 -0
  373. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md021_test.rs +0 -0
  374. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md022_test.rs +0 -0
  375. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md023_extended_test.rs +0 -0
  376. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md023_test.rs +0 -0
  377. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md024_test.rs +0 -0
  378. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md025_test.rs +0 -0
  379. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md026_kramdown_test.rs +0 -0
  380. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md026_test.rs +0 -0
  381. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md027_test.rs +0 -0
  382. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md028_md009_interaction_test.rs +0 -0
  383. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md028_test.rs +0 -0
  384. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md029_code_block_separation_test.rs +0 -0
  385. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md029_fix_test.rs +0 -0
  386. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md029_issue42_test.rs +0 -0
  387. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md029_markdownlint_parity_test.rs +0 -0
  388. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md029_nested_list_continuation_test.rs +0 -0
  389. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
  390. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md029_test.rs +0 -0
  391. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md029_unicode_test.rs +0 -0
  392. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md030_test.rs +0 -0
  393. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md031_kramdown_test.rs +0 -0
  394. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md031_test.rs +0 -0
  395. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md032_test.rs +0 -0
  396. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md033_extended_test.rs +0 -0
  397. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md034_ipv6_test.rs +0 -0
  398. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md034_test.rs +0 -0
  399. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md035_test.rs +0 -0
  400. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md036_test.rs +0 -0
  401. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md037_kramdown_test.rs +0 -0
  402. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md037_test.rs +0 -0
  403. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md038_nested_backticks_test.rs +0 -0
  404. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md038_test.rs +0 -0
  405. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md039_test.rs +0 -0
  406. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md040_test.rs +0 -0
  407. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md041_test.rs +0 -0
  408. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md042_test.rs +0 -0
  409. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md043_test.rs +0 -0
  410. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md044_test.rs +0 -0
  411. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md045_test.rs +0 -0
  412. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md046_test.rs +0 -0
  413. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md047_test.rs +0 -0
  414. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md048_test.rs +0 -0
  415. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md049_test.rs +0 -0
  416. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md050_test.rs +0 -0
  417. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_comprehensive_test.rs +0 -0
  418. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
  419. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_edge_cases_test.rs +0 -0
  420. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_issue_39_regression_test.rs +0 -0
  421. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
  422. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_property_based_test.rs +0 -0
  423. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_regression_prevention_test.rs +0 -0
  424. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_test.rs +0 -0
  425. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md051_unicode_security_test.rs +0 -0
  426. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md053_additional_test.rs +0 -0
  427. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md053_proptest.rs +0 -0
  428. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md053_test.rs +0 -0
  429. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md054_test.rs +0 -0
  430. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md054_unicode_test.rs +0 -0
  431. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md055_test.rs +0 -0
  432. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md056_test.rs +0 -0
  433. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md057_test.rs +0 -0
  434. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md058_kramdown_test.rs +0 -0
  435. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/md058_test.rs +0 -0
  436. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/mkdocs_admonitions_test.rs +0 -0
  437. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/mkdocs_edge_cases_test.rs +0 -0
  438. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/mkdocs_extensions_test.rs +0 -0
  439. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/mkdocs_snippets_test.rs +0 -0
  440. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/mod.rs +0 -0
  441. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules/rule_interaction_test.rs +0 -0
  442. {rumdl-0.0.167 → rumdl-0.0.168}/tests/rules_mod_test.rs +0 -0
  443. {rumdl-0.0.167 → rumdl-0.0.168}/tests/schema_validation_test.rs +0 -0
  444. {rumdl-0.0.167 → rumdl-0.0.168}/tests/skip_context_tests.rs +0 -0
  445. {rumdl-0.0.167 → rumdl-0.0.168}/tests/test_ast_code_block_issue.rs +0 -0
  446. {rumdl-0.0.167 → rumdl-0.0.168}/tests/test_gfm_vs_default_parsing.rs +0 -0
  447. {rumdl-0.0.167 → rumdl-0.0.168}/tests/test_lint_context_flow.rs +0 -0
  448. {rumdl-0.0.167 → rumdl-0.0.168}/tests/test_list_ast_structure.rs +0 -0
  449. {rumdl-0.0.167 → rumdl-0.0.168}/tests/test_multiline_ast.rs +0 -0
  450. {rumdl-0.0.167 → rumdl-0.0.168}/tests/test_underscore_edge_cases.rs +0 -0
  451. {rumdl-0.0.167 → rumdl-0.0.168}/tests/thread_safety_tests.rs +0 -0
  452. {rumdl-0.0.167 → rumdl-0.0.168}/tests/unfixable_rules_test.rs +0 -0
  453. {rumdl-0.0.167 → rumdl-0.0.168}/tests/unicode_edge_case_tests.rs +0 -0
  454. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utf8_boundary_tests.rs +0 -0
  455. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils/blockquote_utils_test.rs +0 -0
  456. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils/code_block_utils_extended_test.rs +0 -0
  457. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils/code_block_utils_test.rs +0 -0
  458. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils/core_utils_test.rs +0 -0
  459. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils/front_matter_utils_test.rs +0 -0
  460. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils/line_index_test.rs +0 -0
  461. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils/mod.rs +0 -0
  462. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils_markdown_edge_cases.rs +0 -0
  463. {rumdl-0.0.167 → rumdl-0.0.168}/tests/utils_tests.rs +0 -0
  464. {rumdl-0.0.167 → rumdl-0.0.168}/tests/vscode_extension_fixes.rs +0 -0
  465. {rumdl-0.0.167 → rumdl-0.0.168}/tests/vscode_test.rs +0 -0
  466. {rumdl-0.0.167 → rumdl-0.0.168}/tests/vscode_tests.rs +0 -0
  467. {rumdl-0.0.167 → rumdl-0.0.168}/tests/vscode_windows_comprehensive_test.rs +0 -0
  468. {rumdl-0.0.167 → rumdl-0.0.168}/tests/vscode_windows_test.rs +0 -0
@@ -44,6 +44,14 @@ repos:
44
44
  pass_filenames: false
45
45
  stages: [pre-commit]
46
46
 
47
+ - id: cargo-lock-check
48
+ name: check Cargo.lock is up-to-date
49
+ entry: cargo check --locked
50
+ language: system
51
+ files: ^(Cargo\.(toml|lock)|.*\.rs)$
52
+ pass_filenames: false
53
+ stages: [pre-commit]
54
+
47
55
  # General file quality checks
48
56
  - repo: https://github.com/pre-commit/pre-commit-hooks
49
57
  rev: v4.6.0
@@ -60,12 +68,12 @@ repos:
60
68
  - id: mixed-line-ending
61
69
  args: [--fix=lf]
62
70
 
63
- # Markdown linting using rumdl itself (local binary)
71
+ # Markdown linting using rumdl itself (cargo run)
64
72
  - repo: local
65
73
  hooks:
66
74
  - id: rumdl
67
75
  name: rumdl check
68
- entry: ./target/release/rumdl check
76
+ entry: cargo run --quiet -- check
69
77
  language: system
70
78
  files: \.md$
71
79
  exclude: ^(test_tmp|benchmark/test-data|docs/temp|CHANGELOG\.md)
@@ -101,3 +109,12 @@ repos:
101
109
  pass_filenames: false
102
110
  stages: [pre-push]
103
111
  verbose: true
112
+
113
+ - id: cargo-lock-check-push
114
+ name: verify Cargo.lock is committed and up-to-date
115
+ entry: cargo check --locked
116
+ language: system
117
+ files: ^(Cargo\.(toml|lock)|.*\.rs)$
118
+ pass_filenames: false
119
+ stages: [pre-push]
120
+ verbose: true
@@ -7,6 +7,127 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.0.168] - 2025-10-28
11
+
12
+ ### Added
13
+
14
+ - **CLI: Support for Quarto (.qmd) and RMarkdown (.rmd/.Rmd) files**
15
+ - Added support for `.qmd` (Quarto), `.rmd` and `.Rmd` (RMarkdown) file extensions
16
+ - Enables markdown linting for data science and scientific documentation workflows
17
+ - Particularly useful for Jupyter-based publishing and reproducible research documents
18
+
19
+ - **LSP: will_save_wait_until for proper auto-fix on save**
20
+ - Implemented LSP `textDocument/willSaveWaitUntil` capability
21
+ - Provides proper auto-fix on save support in compatible editors
22
+ - More reliable than `textDocument/didSave` approach
23
+ - Ensures fixes are applied before file is actually saved to disk
24
+
25
+ - **MD033: LSP Quick Fix to remove HTML tags while keeping content**
26
+ - New code action removes HTML opening and closing tags while preserving inner content
27
+ - Helps convert inline HTML to plain text when needed
28
+ - Available through editor Quick Fix menu (Ctrl+. or Cmd+.)
29
+
30
+ ### Fixed
31
+
32
+ - **MD013: Skip auto-fix for list items containing HTML tags**
33
+ - Prevents broken auto-fix when HTML tags are present in list items
34
+ - HTML structure (indentation, tag hierarchy) is now preserved
35
+ - Errors are still reported but no destructive fix is applied
36
+ - Pragmatic solution until full HTML-aware reflow is implemented
37
+ - Fixes issues where tags like `</details>` were split or indentation was lost
38
+
39
+ - **MD013: Fix incorrect sentence splitting after abbreviations in sentence-per-line mode**
40
+ - No longer incorrectly splits sentences after common abbreviations (e.g., etc., i.e., Dr., Mr.)
41
+ - Improved sentence detection algorithm for better accuracy
42
+ - Prevents unwanted line breaks in the middle of sentences
43
+
44
+ - **MD013: Prevent autolinks from being parsed as HTML tags**
45
+ - Autolinks like `<https://example.com>` are no longer treated as HTML
46
+ - Fixes false positives in HTML detection that could skip auto-fix unnecessarily
47
+ - Properly distinguishes between markdown autolinks and actual HTML tags
48
+
49
+ - **MD013: Prevent content duplication in sentence-per-line reflow**
50
+ - Fixed bug where content could be duplicated during paragraph reflow
51
+ - Ensures each sentence appears exactly once in reflowed output
52
+ - Improves reliability of auto-fix in sentence-per-line mode
53
+
54
+ - **MD013: Improve sentence-per-line error messages and highlighting**
55
+ - Better error messages that clearly indicate sentence-per-line violations
56
+ - More accurate highlighting of problematic text
57
+ - Helps users understand what needs to be fixed
58
+
59
+ - **MD013: Skip template directives at paragraph start in sentence-per-line mode**
60
+ - Template directives (like `{{ variable }}`) at start of paragraphs no longer cause issues
61
+ - Prevents false positives in templated markdown files
62
+ - Improves compatibility with static site generators and template engines
63
+
64
+ - **MD013: Treat template directives as paragraph boundaries**
65
+ - Template directives now properly separate paragraphs during reflow
66
+ - Prevents template syntax from being joined with regular content
67
+ - Better handling of mixed template and markdown content
68
+
69
+ - **MD013: Join single-sentence paragraphs in sentence-per-line mode**
70
+ - Single-sentence paragraphs that span multiple lines are now properly joined
71
+ - Fixes issues where short paragraphs were incorrectly flagged
72
+ - Improves consistency of sentence-per-line formatting
73
+
74
+ - **MD013: Handle multiple spaces and multi-line paragraphs in sentence-per-line mode**
75
+ - Better handling of paragraphs with inconsistent spacing
76
+ - Multi-line paragraphs are now correctly reflowed
77
+ - Fixes edge cases in whitespace handling
78
+
79
+ - **MD052: Preserve backtick-wrapped patterns with dots in MkDocs mode**
80
+ - Backtick-wrapped references like `` `[foo.bar]` `` now preserve dots in slugs
81
+ - Matches MkDocs behavior of treating code-wrapped text literally
82
+ - Prevents false positives for code examples in documentation
83
+
84
+ - **MD052: Support Pandoc citations and inline footnotes in RMarkdown/Quarto**
85
+ - Recognizes Pandoc citation syntax: `[@citation]`, `@citation`, `[-@citation]`
86
+ - Recognizes inline footnote syntax: `^[footnote text]`
87
+ - No longer treats these as reference-style links
88
+ - Essential for academic and scientific writing in RMarkdown and Quarto
89
+
90
+ - **MD033: Only report opening HTML tags, not closing tags**
91
+ - MD033 violations now only report the opening tag of an HTML element
92
+ - Reduces noise in linting output (one violation per element vs two)
93
+ - Closing tags like `</div>` are no longer separately reported
94
+ - Makes HTML-related warnings clearer and less redundant
95
+
96
+ - **MD018: Skip CSS selectors and JS code inside HTML blocks**
97
+ - CSS selectors like `#slide-1` inside `<style>` tags no longer trigger MD018
98
+ - JavaScript code inside `<script>` tags is properly ignored
99
+ - Prevents false positives for Quarto and RMarkdown files with embedded HTML/CSS/JS
100
+ - Particularly important for interactive documents and custom styling
101
+
102
+ - **MD012: Enforce exactly 1 newline at EOF and clean LSP logging**
103
+ - Files now must end with exactly one newline character (not zero, not two)
104
+ - Aligns with POSIX standard and common editor behavior
105
+ - Improved LSP logging with less noise
106
+
107
+ - **CI: Use cargo run instead of release binary in rumdl pre-commit hook**
108
+ - Pre-commit hooks now use `cargo run` for more reliable execution
109
+ - Prevents issues with stale release binaries during development
110
+ - Better integration with cargo workflow
111
+
112
+ - **Schema: Allow root-level rule sections like [MD013] in config validation**
113
+ - Configuration schema now correctly allows `[MD013]` style sections
114
+ - Fixes false validation errors for valid TOML config
115
+ - Better compatibility with common configuration patterns
116
+
117
+ ### Changed
118
+
119
+ - **Refactor: Detect HTML blocks before parsing headings**
120
+ - Reordered LintContext initialization to detect HTML blocks first
121
+ - Headings are no longer detected inside HTML blocks (like `<style>` or `<script>`)
122
+ - Architectural improvement that prevents multiple false positives
123
+ - Benefits MD018 and other heading-related rules
124
+ - More correct parsing aligned with markdown specifications
125
+
126
+ - **Refactor: Use filtered_lines() for front-matter handling in MD011 and MD012**
127
+ - Improved front-matter handling using consistent filtered_lines API
128
+ - Better code reuse and maintainability
129
+ - More reliable front-matter detection across rules
130
+
10
131
  ## [0.0.167] - 2025-10-24
11
132
 
12
133
  ### Added
@@ -1983,7 +1983,7 @@ dependencies = [
1983
1983
 
1984
1984
  [[package]]
1985
1985
  name = "rumdl"
1986
- version = "0.0.167"
1986
+ version = "0.0.168"
1987
1987
  dependencies = [
1988
1988
  "anyhow",
1989
1989
  "assert_cmd",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.167"
3
+ version = "0.0.168"
4
4
  edition = "2024"
5
5
  rust-version = "1.89.0"
6
6
  description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.167
3
+ Version: 0.0.168
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -212,7 +212,11 @@ When `line-length` is set to `0`, no line length warnings will be reported for a
212
212
  - Sentence-per-line workflows where line length is not a concern
213
213
  - Documentation where long lines (e.g., URLs, technical terms) are unavoidable and acceptable
214
214
 
215
- **Note**: With `line-length: 0`, reflow still works (using a very large effective line length), so you can still use `sentence-per-line` mode for automatic formatting without any line length warnings.
215
+ **Note**: With `line-length: 0` and `reflow-mode: "sentence-per-line"`, rumdl will:
216
+
217
+ - Split multiple sentences that share a line into separate lines
218
+ - Join single sentences that span multiple lines into one line (since there's no length constraint)
219
+ - Provide consistent "one sentence = one line" formatting throughout your document
216
220
 
217
221
  ### Example with automatic reflow
218
222
 
@@ -1,107 +1,73 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "Config",
4
- "description": "rumdl configuration for linting Markdown files. Rules can be configured individually using [MD###] sections with rule-specific options.",
5
- "type": "object",
6
- "properties": {
7
- "global": {
8
- "description": "Global configuration options",
9
- "default": {
10
- "disable": [],
11
- "enable": [],
12
- "exclude": [],
13
- "fixable": [],
14
- "flavor": "standard",
15
- "force_exclude": false,
16
- "include": [],
17
- "line_length": 80,
18
- "respect_gitignore": true,
19
- "unfixable": []
20
- },
21
- "allOf": [
22
- {
23
- "$ref": "#/definitions/GlobalConfig"
24
- }
25
- ]
26
- },
27
- "per-file-ignores": {
28
- "description": "Per-file rule ignores: maps file patterns to lists of rules to ignore Example: { \"README.md\": [\"MD033\"], \"docs/**/*.md\": [\"MD013\"] }",
29
- "default": {},
30
- "type": "object",
31
- "additionalProperties": {
32
- "type": "array",
33
- "items": {
34
- "type": "string"
35
- }
36
- }
37
- }
3
+ "additionalProperties": {
4
+ "$ref": "#/definitions/RuleConfig"
38
5
  },
39
6
  "definitions": {
40
7
  "GlobalConfig": {
41
8
  "description": "Global configuration options",
42
- "type": "object",
43
9
  "properties": {
44
10
  "disable": {
45
- "description": "Disabled rules",
46
11
  "default": [],
47
- "type": "array",
12
+ "description": "Disabled rules",
48
13
  "items": {
49
14
  "type": "string"
50
- }
15
+ },
16
+ "type": "array"
51
17
  },
52
18
  "enable": {
53
- "description": "Enabled rules",
54
19
  "default": [],
55
- "type": "array",
20
+ "description": "Enabled rules",
56
21
  "items": {
57
22
  "type": "string"
58
- }
23
+ },
24
+ "type": "array"
59
25
  },
60
26
  "exclude": {
61
- "description": "Files to exclude",
62
27
  "default": [],
63
- "type": "array",
28
+ "description": "Files to exclude",
64
29
  "items": {
65
30
  "type": "string"
66
- }
31
+ },
32
+ "type": "array"
67
33
  },
68
34
  "fixable": {
69
- "description": "Rules that are allowed to be fixed when --fix is used If specified, only these rules will be fixed",
70
35
  "default": [],
71
- "type": "array",
36
+ "description": "Rules that are allowed to be fixed when --fix is used If specified, only these rules will be fixed",
72
37
  "items": {
73
38
  "type": "string"
74
- }
39
+ },
40
+ "type": "array"
75
41
  },
76
42
  "flavor": {
77
- "description": "Markdown flavor/dialect to use (mkdocs, gfm, commonmark, etc.) When set, adjusts parsing and validation rules for that specific Markdown variant",
78
- "default": "standard",
79
43
  "allOf": [
80
44
  {
81
45
  "$ref": "#/definitions/MarkdownFlavor"
82
46
  }
83
- ]
47
+ ],
48
+ "default": "standard",
49
+ "description": "Markdown flavor/dialect to use (mkdocs, gfm, commonmark, etc.) When set, adjusts parsing and validation rules for that specific Markdown variant"
84
50
  },
85
51
  "force_exclude": {
86
- "description": "[DEPRECATED] Whether to enforce exclude patterns for explicitly passed paths. This option is deprecated as of v0.0.156 and has no effect. Exclude patterns are now always respected, even for explicitly provided files. This prevents duplication between rumdl config and tool configs like pre-commit.",
87
52
  "default": false,
88
53
  "deprecated": true,
54
+ "description": "[DEPRECATED] Whether to enforce exclude patterns for explicitly passed paths. This option is deprecated as of v0.0.156 and has no effect. Exclude patterns are now always respected, even for explicitly provided files. This prevents duplication between rumdl config and tool configs like pre-commit.",
89
55
  "type": "boolean"
90
56
  },
91
57
  "include": {
92
- "description": "Files to include",
93
58
  "default": [],
94
- "type": "array",
59
+ "description": "Files to include",
95
60
  "items": {
96
61
  "type": "string"
97
- }
62
+ },
63
+ "type": "array"
98
64
  },
99
65
  "line_length": {
100
- "description": "Global line length setting (used by MD013 and other rules if not overridden)",
101
66
  "default": 80,
102
- "type": "integer",
67
+ "description": "Global line length setting (used by MD013 and other rules if not overridden)",
103
68
  "format": "uint64",
104
- "minimum": 0.0
69
+ "minimum": 0.0,
70
+ "type": "integer"
105
71
  },
106
72
  "output_format": {
107
73
  "description": "Output format for linting results (e.g., \"text\", \"json\", \"pylint\", etc.)",
@@ -111,43 +77,80 @@
111
77
  ]
112
78
  },
113
79
  "respect_gitignore": {
114
- "description": "Respect .gitignore files when scanning directories",
115
80
  "default": true,
81
+ "description": "Respect .gitignore files when scanning directories",
116
82
  "type": "boolean"
117
83
  },
118
84
  "unfixable": {
119
- "description": "Rules that should never be fixed, even when --fix is used Takes precedence over fixable",
120
85
  "default": [],
121
- "type": "array",
86
+ "description": "Rules that should never be fixed, even when --fix is used Takes precedence over fixable",
122
87
  "items": {
123
88
  "type": "string"
124
- }
89
+ },
90
+ "type": "array"
125
91
  }
126
- }
92
+ },
93
+ "type": "object"
127
94
  },
128
95
  "MarkdownFlavor": {
129
96
  "description": "Markdown flavor/dialect enumeration",
130
97
  "oneOf": [
131
98
  {
132
99
  "description": "Standard Markdown without flavor-specific adjustments",
133
- "type": "string",
134
100
  "enum": [
135
101
  "standard"
136
- ]
102
+ ],
103
+ "type": "string"
137
104
  },
138
105
  {
139
106
  "description": "MkDocs flavor with auto-reference support",
140
- "type": "string",
141
107
  "enum": [
142
108
  "mkdocs"
143
- ]
109
+ ],
110
+ "type": "string"
144
111
  }
145
112
  ]
146
113
  },
147
114
  "RuleConfig": {
115
+ "additionalProperties": true,
148
116
  "description": "Represents a rule-specific configuration",
149
- "type": "object",
150
- "additionalProperties": true
117
+ "type": "object"
118
+ }
119
+ },
120
+ "description": "rumdl configuration for linting Markdown files. Rules can be configured individually using [MD###] sections with rule-specific options.",
121
+ "properties": {
122
+ "global": {
123
+ "allOf": [
124
+ {
125
+ "$ref": "#/definitions/GlobalConfig"
126
+ }
127
+ ],
128
+ "default": {
129
+ "disable": [],
130
+ "enable": [],
131
+ "exclude": [],
132
+ "fixable": [],
133
+ "flavor": "standard",
134
+ "force_exclude": false,
135
+ "include": [],
136
+ "line_length": 80,
137
+ "respect_gitignore": true,
138
+ "unfixable": []
139
+ },
140
+ "description": "Global configuration options"
141
+ },
142
+ "per-file-ignores": {
143
+ "additionalProperties": {
144
+ "items": {
145
+ "type": "string"
146
+ },
147
+ "type": "array"
148
+ },
149
+ "default": {},
150
+ "description": "Per-file rule ignores: maps file patterns to lists of rules to ignore Example: { \"README.md\": [\"MD033\"], \"docs/**/*.md\": [\"MD013\"] }",
151
+ "type": "object"
151
152
  }
152
- }
153
+ },
154
+ "title": "Config",
155
+ "type": "object"
153
156
  }
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env bash
2
+ # Script to verify that a release is ready to be tagged and pushed
3
+ # This checks all the conditions that would cause a release to fail in CI
4
+
5
+ set -euo pipefail
6
+
7
+ RED='\033[0;31m'
8
+ GREEN='\033[0;32m'
9
+ YELLOW='\033[1;33m'
10
+ NC='\033[0m' # No Color
11
+
12
+ echo "🔍 Verifying release readiness..."
13
+ echo ""
14
+
15
+ ERRORS=0
16
+
17
+ # Check 1: Verify Cargo.lock is up-to-date
18
+ echo -n "Checking Cargo.lock is up-to-date... "
19
+ if cargo check --locked &>/dev/null; then
20
+ echo -e "${GREEN}✓${NC}"
21
+ else
22
+ echo -e "${RED}✗${NC}"
23
+ echo -e "${RED}ERROR: Cargo.lock is out of date or missing${NC}"
24
+ echo "Run: cargo check"
25
+ echo "Then commit the updated Cargo.lock"
26
+ ((ERRORS++))
27
+ fi
28
+
29
+ # Check 2: Verify no uncommitted changes
30
+ echo -n "Checking for uncommitted changes... "
31
+ if [[ -z $(git status --porcelain) ]]; then
32
+ echo -e "${GREEN}✓${NC}"
33
+ else
34
+ echo -e "${RED}✗${NC}"
35
+ echo -e "${RED}ERROR: There are uncommitted changes${NC}"
36
+ git status --short
37
+ ((ERRORS++))
38
+ fi
39
+
40
+ # Check 3: Verify version consistency
41
+ echo -n "Checking version consistency... "
42
+ CARGO_VERSION=$(grep '^version =' Cargo.toml | head -1 | sed 's/.*"\(.*\)".*/\1/')
43
+ LOCK_VERSION=$(grep -A 1 '^name = "rumdl"' Cargo.lock | grep '^version' | head -1 | sed 's/.*"\(.*\)".*/\1/')
44
+
45
+ if [[ "$CARGO_VERSION" == "$LOCK_VERSION" ]]; then
46
+ echo -e "${GREEN}✓${NC} (v$CARGO_VERSION)"
47
+ else
48
+ echo -e "${RED}✗${NC}"
49
+ echo -e "${RED}ERROR: Version mismatch!${NC}"
50
+ echo "Cargo.toml: $CARGO_VERSION"
51
+ echo "Cargo.lock: $LOCK_VERSION"
52
+ ((ERRORS++))
53
+ fi
54
+
55
+ # Check 4: Verify CHANGELOG.md has entry for current version
56
+ echo -n "Checking CHANGELOG.md for v$CARGO_VERSION... "
57
+ if grep -q "## \[${CARGO_VERSION}\]" CHANGELOG.md; then
58
+ echo -e "${GREEN}✓${NC}"
59
+ else
60
+ echo -e "${YELLOW}⚠${NC}"
61
+ echo -e "${YELLOW}WARNING: No CHANGELOG entry found for v${CARGO_VERSION}${NC}"
62
+ echo "Consider adding a CHANGELOG entry before releasing"
63
+ fi
64
+
65
+ # Check 5: Verify we're on main branch
66
+ echo -n "Checking current branch... "
67
+ CURRENT_BRANCH=$(git branch --show-current)
68
+ if [[ "$CURRENT_BRANCH" == "main" ]]; then
69
+ echo -e "${GREEN}✓${NC} (main)"
70
+ else
71
+ echo -e "${YELLOW}⚠${NC}"
72
+ echo -e "${YELLOW}WARNING: Not on main branch (currently on: $CURRENT_BRANCH)${NC}"
73
+ fi
74
+
75
+ # Check 6: Verify tag doesn't already exist
76
+ echo -n "Checking if tag v$CARGO_VERSION exists... "
77
+ if git rev-parse "v$CARGO_VERSION" &>/dev/null; then
78
+ echo -e "${RED}✗${NC}"
79
+ echo -e "${RED}ERROR: Tag v$CARGO_VERSION already exists${NC}"
80
+ echo "Delete with: git tag -d v$CARGO_VERSION && git push origin --delete v$CARGO_VERSION"
81
+ ((ERRORS++))
82
+ else
83
+ echo -e "${GREEN}✓${NC}"
84
+ fi
85
+
86
+ # Summary
87
+ echo ""
88
+ echo "════════════════════════════════════════"
89
+ if [[ $ERRORS -eq 0 ]]; then
90
+ echo -e "${GREEN}✅ Release is ready!${NC}"
91
+ echo ""
92
+ echo "To create and push the release:"
93
+ echo " git tag v$CARGO_VERSION"
94
+ echo " git push origin main v$CARGO_VERSION"
95
+ else
96
+ echo -e "${RED}❌ Release is NOT ready ($ERRORS errors)${NC}"
97
+ echo "Fix the errors above before tagging"
98
+ exit 1
99
+ fi
@@ -193,6 +193,14 @@ pub fn find_markdown_files(
193
193
  types_builder.add_defaults(); // Add standard types
194
194
  types_builder.add("markdown", "*.md").unwrap();
195
195
  types_builder.add("markdown", "*.markdown").unwrap();
196
+ types_builder.add("markdown", "*.mdx").unwrap();
197
+ types_builder.add("markdown", "*.mkd").unwrap();
198
+ types_builder.add("markdown", "*.mkdn").unwrap();
199
+ types_builder.add("markdown", "*.mdown").unwrap();
200
+ types_builder.add("markdown", "*.mdwn").unwrap();
201
+ types_builder.add("markdown", "*.qmd").unwrap();
202
+ types_builder.add("markdown", "*.rmd").unwrap();
203
+ types_builder.add("markdown", "*.Rmd").unwrap();
196
204
  types_builder.select("markdown"); // Select ONLY markdown for processing
197
205
  let types = types_builder.build().unwrap();
198
206
  walk_builder.types(types);
@@ -216,8 +224,19 @@ pub fn find_markdown_files(
216
224
  // 2. Config include is used ONLY in discovery mode if specified
217
225
  config.global.include.clone()
218
226
  } else if is_discovery_mode {
219
- // 3. Default include (*.md, *.markdown) ONLY in discovery mode if no CLI/Config include
220
- vec!["*.md".to_string(), "*.markdown".to_string()]
227
+ // 3. Default include (all markdown variants) ONLY in discovery mode if no CLI/Config include
228
+ vec![
229
+ "*.md".to_string(),
230
+ "*.markdown".to_string(),
231
+ "*.mdx".to_string(),
232
+ "*.mkd".to_string(),
233
+ "*.mkdn".to_string(),
234
+ "*.mdown".to_string(),
235
+ "*.mdwn".to_string(),
236
+ "*.qmd".to_string(),
237
+ "*.rmd".to_string(),
238
+ "*.Rmd".to_string(),
239
+ ]
221
240
  } else {
222
241
  // 4. Explicit path mode: No includes applied by default. Walk starts from explicit paths.
223
242
  Vec::new()
@@ -311,7 +330,10 @@ pub fn find_markdown_files(
311
330
  // If it's a file, check if it's a markdown file
312
331
  if path.is_file()
313
332
  && let Some(ext) = path.extension()
314
- && (ext == "md" || ext == "markdown")
333
+ && matches!(
334
+ ext.to_str(),
335
+ Some("md" | "markdown" | "mdx" | "mkd" | "mkdn" | "mdown" | "mdwn" | "qmd" | "rmd" | "Rmd")
336
+ )
315
337
  {
316
338
  processed_explicit_files = true;
317
339
  // Convert to relative path for pattern matching
@@ -414,11 +436,16 @@ pub fn find_markdown_files(
414
436
  file_paths.dedup();
415
437
 
416
438
  // --- Final Explicit Markdown Filter ---
417
- // Ensure only files with .md or .markdown extensions are returned,
439
+ // Ensure only files with markdown extensions are returned,
418
440
  // regardless of how ignore crate overrides interacted with type filters.
419
441
  file_paths.retain(|path_str| {
420
442
  let path = Path::new(path_str);
421
- path.extension().is_some_and(|ext| ext == "md" || ext == "markdown")
443
+ path.extension().is_some_and(|ext| {
444
+ matches!(
445
+ ext.to_str(),
446
+ Some("md" | "markdown" | "mdx" | "mkd" | "mkdn" | "mdown" | "mdwn" | "qmd" | "rmd" | "Rmd")
447
+ )
448
+ })
422
449
  });
423
450
  // -------------------------------------
424
451