rumdl 0.0.132__tar.gz → 0.0.135__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 (429) hide show
  1. {rumdl-0.0.132 → rumdl-0.0.135}/CHANGELOG.md +45 -1
  2. {rumdl-0.0.132 → rumdl-0.0.135}/Cargo.lock +25 -18
  3. {rumdl-0.0.132 → rumdl-0.0.135}/Cargo.toml +1 -1
  4. {rumdl-0.0.132 → rumdl-0.0.135}/PKG-INFO +46 -18
  5. {rumdl-0.0.132 → rumdl-0.0.135}/README.md +45 -17
  6. {rumdl-0.0.132 → rumdl-0.0.135}/benches/fix_performance.rs +1 -1
  7. {rumdl-0.0.132 → rumdl-0.0.135}/src/config.rs +52 -0
  8. {rumdl-0.0.132 → rumdl-0.0.135}/src/lint_context.rs +1 -1
  9. {rumdl-0.0.132 → rumdl-0.0.135}/src/main.rs +41 -6
  10. {rumdl-0.0.132 → rumdl-0.0.135}/src/markdownlint_config.rs +46 -2
  11. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md005_list_indent.rs +316 -47
  12. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md006_start_bullets.rs +6 -0
  13. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md007_ul_indent/md007_config.rs +18 -0
  14. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md007_ul_indent.rs +44 -24
  15. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md009_trailing_spaces.rs +0 -11
  16. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md012_no_multiple_blanks.rs +125 -3
  17. rumdl-0.0.135/src/rules/md028_no_blanks_blockquote.rs +522 -0
  18. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md029_ordered_list_prefix/md029_config.rs +4 -2
  19. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md029_ordered_list_prefix.rs +107 -5
  20. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md050_strong_style.rs +58 -2
  21. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md051_link_fragments.rs +66 -10
  22. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md052_reference_links_images.rs +146 -15
  23. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md053_link_image_reference_definitions.rs +209 -11
  24. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/regex_cache.rs +2 -1
  25. {rumdl-0.0.132 → rumdl-0.0.135}/tests/character_ranges/extended_tests.rs +2 -2
  26. {rumdl-0.0.132 → rumdl-0.0.135}/tests/character_ranges/mod.rs +1 -1
  27. {rumdl-0.0.132 → rumdl-0.0.135}/tests/cli_integration_tests.rs +114 -0
  28. rumdl-0.0.135/tests/md037_xxxx_regression_test.rs +91 -0
  29. {rumdl-0.0.132 → rumdl-0.0.135}/tests/performance_validation_tests.rs +1 -1
  30. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/list_rules_integration_test.rs +9 -9
  31. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md005_dynamic_indent_test.rs +9 -9
  32. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md005_test.rs +11 -11
  33. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md005_unicode_test.rs +10 -10
  34. rumdl-0.0.135/tests/rules/md028_md009_interaction_test.rs +324 -0
  35. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md028_test.rs +44 -13
  36. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md050_test.rs +162 -0
  37. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_test.rs +194 -0
  38. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md052_test.rs +60 -0
  39. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md053_additional_test.rs +1 -1
  40. rumdl-0.0.135/tests/rules/md053_test.rs +328 -0
  41. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/mod.rs +2 -0
  42. rumdl-0.0.135/tests/rules/rule_interaction_test.rs +264 -0
  43. {rumdl-0.0.132 → rumdl-0.0.135}/tests/vscode_extension_fixes.rs +2 -2
  44. rumdl-0.0.132/src/rules/md028_no_blanks_blockquote.rs +0 -343
  45. rumdl-0.0.132/tests/rules/md053_test.rs +0 -159
  46. {rumdl-0.0.132 → rumdl-0.0.135}/.config/nextest.toml +0 -0
  47. {rumdl-0.0.132 → rumdl-0.0.135}/.mise.toml +0 -0
  48. {rumdl-0.0.132 → rumdl-0.0.135}/.pre-commit-config.yaml +0 -0
  49. {rumdl-0.0.132 → rumdl-0.0.135}/.rumdl.toml +0 -0
  50. {rumdl-0.0.132 → rumdl-0.0.135}/.rustfmt.toml +0 -0
  51. {rumdl-0.0.132 → rumdl-0.0.135}/LICENSE +0 -0
  52. {rumdl-0.0.132 → rumdl-0.0.135}/MANIFEST.in +0 -0
  53. {rumdl-0.0.132 → rumdl-0.0.135}/Makefile +0 -0
  54. {rumdl-0.0.132 → rumdl-0.0.135}/assets/logo.png +0 -0
  55. {rumdl-0.0.132 → rumdl-0.0.135}/benches/range_performance.rs +0 -0
  56. {rumdl-0.0.132 → rumdl-0.0.135}/benches/range_utils_benchmark.rs +0 -0
  57. {rumdl-0.0.132 → rumdl-0.0.135}/benches/rule_performance.rs +0 -0
  58. {rumdl-0.0.132 → rumdl-0.0.135}/benches/simple_fix_bench.rs +0 -0
  59. {rumdl-0.0.132 → rumdl-0.0.135}/benchmark/bin/bench_lint_context.rs +0 -0
  60. {rumdl-0.0.132 → rumdl-0.0.135}/benchmark/bin/benchmark.rs +0 -0
  61. {rumdl-0.0.132 → rumdl-0.0.135}/benchmark/bin/benchmark_rule.rs +0 -0
  62. {rumdl-0.0.132 → rumdl-0.0.135}/benchmark/bin/file_parallel_benchmark.rs +0 -0
  63. {rumdl-0.0.132 → rumdl-0.0.135}/benchmark/bin/measure_code_span_performance.rs +0 -0
  64. {rumdl-0.0.132 → rumdl-0.0.135}/docs/RULES.md +0 -0
  65. {rumdl-0.0.132 → rumdl-0.0.135}/docs/global-settings.md +0 -0
  66. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md001.md +0 -0
  67. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md002.md +0 -0
  68. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md003.md +0 -0
  69. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md004.md +0 -0
  70. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md005.md +0 -0
  71. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md006.md +0 -0
  72. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md007.md +0 -0
  73. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md009.md +0 -0
  74. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md010.md +0 -0
  75. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md011.md +0 -0
  76. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md012.md +0 -0
  77. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md013.md +0 -0
  78. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md014.md +0 -0
  79. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md018.md +0 -0
  80. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md019.md +0 -0
  81. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md020.md +0 -0
  82. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md021.md +0 -0
  83. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md022.md +0 -0
  84. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md023.md +0 -0
  85. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md024.md +0 -0
  86. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md025.md +0 -0
  87. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md026.md +0 -0
  88. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md027.md +0 -0
  89. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md028.md +0 -0
  90. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md029.md +0 -0
  91. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md030.md +0 -0
  92. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md031.md +0 -0
  93. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md032.md +0 -0
  94. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md033.md +0 -0
  95. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md034.md +0 -0
  96. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md035.md +0 -0
  97. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md036.md +0 -0
  98. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md037.md +0 -0
  99. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md038.md +0 -0
  100. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md039.md +0 -0
  101. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md040.md +0 -0
  102. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md041.md +0 -0
  103. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md042.md +0 -0
  104. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md043.md +0 -0
  105. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md044.md +0 -0
  106. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md045.md +0 -0
  107. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md046.md +0 -0
  108. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md047.md +0 -0
  109. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md048.md +0 -0
  110. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md049.md +0 -0
  111. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md050.md +0 -0
  112. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md051.md +0 -0
  113. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md052.md +0 -0
  114. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md053.md +0 -0
  115. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md054.md +0 -0
  116. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md055.md +0 -0
  117. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md056.md +0 -0
  118. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md057.md +0 -0
  119. {rumdl-0.0.132 → rumdl-0.0.135}/docs/md058.md +0 -0
  120. {rumdl-0.0.132 → rumdl-0.0.135}/docs/vscode-extension.md +0 -0
  121. {rumdl-0.0.132 → rumdl-0.0.135}/parity_check.py +0 -0
  122. {rumdl-0.0.132 → rumdl-0.0.135}/pyproject.toml +0 -0
  123. {rumdl-0.0.132 → rumdl-0.0.135}/python/MANIFEST.in +0 -0
  124. {rumdl-0.0.132 → rumdl-0.0.135}/python/PYTHON-README.md +0 -0
  125. {rumdl-0.0.132 → rumdl-0.0.135}/python/rumdl/__init__.py +0 -0
  126. {rumdl-0.0.132 → rumdl-0.0.135}/python/rumdl/__main__.py +0 -0
  127. {rumdl-0.0.132 → rumdl-0.0.135}/python/rumdl/py.typed +0 -0
  128. {rumdl-0.0.132 → rumdl-0.0.135}/rumdl.toml.example +0 -0
  129. {rumdl-0.0.132 → rumdl-0.0.135}/rust-toolchain.toml +0 -0
  130. {rumdl-0.0.132 → rumdl-0.0.135}/scripts/extract-changelog.sh +0 -0
  131. {rumdl-0.0.132 → rumdl-0.0.135}/scripts/generate-downloads-table.sh +0 -0
  132. {rumdl-0.0.132 → rumdl-0.0.135}/scripts/pre-release.sh +0 -0
  133. {rumdl-0.0.132 → rumdl-0.0.135}/scripts/prepare-release.sh +0 -0
  134. {rumdl-0.0.132 → rumdl-0.0.135}/scripts/setup-pre-commit.sh +0 -0
  135. {rumdl-0.0.132 → rumdl-0.0.135}/scripts/update-pre-commit-docs.sh +0 -0
  136. {rumdl-0.0.132 → rumdl-0.0.135}/src/exit_codes.rs +0 -0
  137. {rumdl-0.0.132 → rumdl-0.0.135}/src/inline_config.rs +0 -0
  138. {rumdl-0.0.132 → rumdl-0.0.135}/src/lib.rs +0 -0
  139. {rumdl-0.0.132 → rumdl-0.0.135}/src/lsp/mod.rs +0 -0
  140. {rumdl-0.0.132 → rumdl-0.0.135}/src/lsp/server.rs +0 -0
  141. {rumdl-0.0.132 → rumdl-0.0.135}/src/lsp/types.rs +0 -0
  142. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/azure.rs +0 -0
  143. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/concise.rs +0 -0
  144. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/github.rs +0 -0
  145. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/gitlab.rs +0 -0
  146. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/grouped.rs +0 -0
  147. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/json.rs +0 -0
  148. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/json_lines.rs +0 -0
  149. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/junit.rs +0 -0
  150. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/mod.rs +0 -0
  151. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/pylint.rs +0 -0
  152. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/sarif.rs +0 -0
  153. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/formatters/text.rs +0 -0
  154. {rumdl-0.0.132 → rumdl-0.0.135}/src/output/mod.rs +0 -0
  155. {rumdl-0.0.132 → rumdl-0.0.135}/src/parallel.rs +0 -0
  156. {rumdl-0.0.132 → rumdl-0.0.135}/src/performance.rs +0 -0
  157. {rumdl-0.0.132 → rumdl-0.0.135}/src/profiling.rs +0 -0
  158. {rumdl-0.0.132 → rumdl-0.0.135}/src/python.rs +0 -0
  159. {rumdl-0.0.132 → rumdl-0.0.135}/src/rule.rs +0 -0
  160. {rumdl-0.0.132 → rumdl-0.0.135}/src/rule_config.rs +0 -0
  161. {rumdl-0.0.132 → rumdl-0.0.135}/src/rule_config_serde.rs +0 -0
  162. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/blockquote_utils.rs +0 -0
  163. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/code_block_utils.rs +0 -0
  164. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/code_fence_utils.rs +0 -0
  165. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/emphasis_style.rs +0 -0
  166. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/front_matter_utils.rs +0 -0
  167. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/heading_utils.rs +0 -0
  168. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/list_utils.rs +0 -0
  169. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md001_heading_increment.rs +0 -0
  170. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  171. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md002_first_heading_h1.rs +0 -0
  172. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md003_heading_style/md003_config.rs +0 -0
  173. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md003_heading_style.rs +0 -0
  174. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  175. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md004_unordered_list_style.rs +0 -0
  176. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  177. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  178. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md010_no_hard_tabs.rs +0 -0
  179. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md011_no_reversed_links.rs +0 -0
  180. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
  181. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md013_line_length/md013_config.rs +0 -0
  182. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md013_line_length.rs +0 -0
  183. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  184. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md014_commands_show_output.rs +0 -0
  185. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md018_no_missing_space_atx.rs +0 -0
  186. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  187. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  188. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  189. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  190. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md022_blanks_around_headings.rs +0 -0
  191. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md023_heading_start_left.rs +0 -0
  192. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  193. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md024_no_duplicate_heading.rs +0 -0
  194. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md025_single_title/md025_config.rs +0 -0
  195. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md025_single_title.rs +0 -0
  196. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  197. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  198. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  199. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  200. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md030_list_marker_space.rs +0 -0
  201. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md031_blanks_around_fences.rs +0 -0
  202. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md032_blanks_around_lists.rs +0 -0
  203. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  204. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md033_no_inline_html.rs +0 -0
  205. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md034_no_bare_urls.rs +0 -0
  206. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md035_hr_style/md035_config.rs +0 -0
  207. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md035_hr_style.rs +0 -0
  208. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  209. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  210. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  211. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md038_no_space_in_code.rs +0 -0
  212. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md039_no_space_in_links.rs +0 -0
  213. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md040_fenced_code_language.rs +0 -0
  214. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md041_first_line_heading.rs +0 -0
  215. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md042_no_empty_links.rs +0 -0
  216. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md043_required_headings.rs +0 -0
  217. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md044_proper_names/md044_config.rs +0 -0
  218. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md044_proper_names.rs +0 -0
  219. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  220. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md045_no_alt_text.rs +0 -0
  221. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  222. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md046_code_block_style.rs +0 -0
  223. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md047_single_trailing_newline.rs +0 -0
  224. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  225. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md048_code_fence_style.rs +0 -0
  226. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  227. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md049_emphasis_style.rs +0 -0
  228. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md050_strong_style/md050_config.rs +0 -0
  229. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  230. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md054_link_image_style.rs +0 -0
  231. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  232. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md055_table_pipe_style.rs +0 -0
  233. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md056_table_column_count.rs +0 -0
  234. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  235. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md057_existing_relative_links.rs +0 -0
  236. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/md058_blanks_around_tables.rs +0 -0
  237. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/mod.rs +0 -0
  238. {rumdl-0.0.132 → rumdl-0.0.135}/src/rules/strong_style.rs +0 -0
  239. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/anchor_styles/github.rs +0 -0
  240. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/anchor_styles/jekyll.rs +0 -0
  241. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/anchor_styles/kramdown.rs +0 -0
  242. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
  243. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/anchor_styles/mod.rs +0 -0
  244. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/ast_utils.rs +0 -0
  245. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/code_block_utils.rs +0 -0
  246. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/document_structure.rs +0 -0
  247. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/early_returns.rs +0 -0
  248. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/element_cache.rs +0 -0
  249. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/emphasis_utils.rs +0 -0
  250. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/fix_utils.rs +0 -0
  251. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/header_id_utils.rs +0 -0
  252. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/kramdown_utils.rs +0 -0
  253. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/line_ending.rs +0 -0
  254. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/markdown_elements.rs +0 -0
  255. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocs_admonitions.rs +0 -0
  256. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocs_common.rs +0 -0
  257. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocs_critic.rs +0 -0
  258. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocs_footnotes.rs +0 -0
  259. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocs_patterns.rs +0 -0
  260. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocs_snippets.rs +0 -0
  261. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocs_tabs.rs +0 -0
  262. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocs_test_utils.rs +0 -0
  263. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mkdocstrings_refs.rs +0 -0
  264. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/mod.rs +0 -0
  265. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/range_utils.rs +0 -0
  266. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/skip_context.rs +0 -0
  267. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/string_interner.rs +0 -0
  268. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/table_utils.rs +0 -0
  269. {rumdl-0.0.132 → rumdl-0.0.135}/src/utils/text_reflow.rs +0 -0
  270. {rumdl-0.0.132 → rumdl-0.0.135}/src/vscode.rs +0 -0
  271. {rumdl-0.0.132 → rumdl-0.0.135}/tests/advanced_integration_tests.rs +0 -0
  272. {rumdl-0.0.132 → rumdl-0.0.135}/tests/character_ranges/additional_tests.rs +0 -0
  273. {rumdl-0.0.132 → rumdl-0.0.135}/tests/character_ranges/basic_tests.rs +0 -0
  274. {rumdl-0.0.132 → rumdl-0.0.135}/tests/character_ranges/comprehensive_tests.rs +0 -0
  275. {rumdl-0.0.132 → rumdl-0.0.135}/tests/character_ranges/unicode_utils.rs +0 -0
  276. {rumdl-0.0.132 → rumdl-0.0.135}/tests/cli_duplication_test.rs +0 -0
  277. {rumdl-0.0.132 → rumdl-0.0.135}/tests/cli_explain_test.rs +0 -0
  278. {rumdl-0.0.132 → rumdl-0.0.135}/tests/cli_flag_precedence_test.rs +0 -0
  279. {rumdl-0.0.132 → rumdl-0.0.135}/tests/cli_lsp_fix_consistency.rs +0 -0
  280. {rumdl-0.0.132 → rumdl-0.0.135}/tests/cli_statistics_test.rs +0 -0
  281. {rumdl-0.0.132 → rumdl-0.0.135}/tests/common/cli_test_utils.rs +0 -0
  282. {rumdl-0.0.132 → rumdl-0.0.135}/tests/common/fixtures.rs +0 -0
  283. {rumdl-0.0.132 → rumdl-0.0.135}/tests/common/mod.rs +0 -0
  284. {rumdl-0.0.132 → rumdl-0.0.135}/tests/common/test_utils.rs +0 -0
  285. {rumdl-0.0.132 → rumdl-0.0.135}/tests/commonmark_compliance_tests.rs +0 -0
  286. {rumdl-0.0.132 → rumdl-0.0.135}/tests/comprehensive_integration_tests.rs +0 -0
  287. {rumdl-0.0.132 → rumdl-0.0.135}/tests/comprehensive_output_format_tests.rs +0 -0
  288. {rumdl-0.0.132 → rumdl-0.0.135}/tests/config_application_tests.rs +0 -0
  289. {rumdl-0.0.132 → rumdl-0.0.135}/tests/config_file_command_test.rs +0 -0
  290. {rumdl-0.0.132 → rumdl-0.0.135}/tests/config_tests.rs +0 -0
  291. {rumdl-0.0.132 → rumdl-0.0.135}/tests/config_upward_traversal_test.rs +0 -0
  292. {rumdl-0.0.132 → rumdl-0.0.135}/tests/configuration_inheritance_tests.rs +0 -0
  293. {rumdl-0.0.132 → rumdl-0.0.135}/tests/consistency_regression_tests.rs +0 -0
  294. {rumdl-0.0.132 → rumdl-0.0.135}/tests/cross_platform_compatibility_tests.rs +0 -0
  295. {rumdl-0.0.132 → rumdl-0.0.135}/tests/deeply_nested_lists_performance_test.rs +0 -0
  296. {rumdl-0.0.132 → rumdl-0.0.135}/tests/escaped_brackets_test.rs +0 -0
  297. {rumdl-0.0.132 → rumdl-0.0.135}/tests/final_confidence_assessment.rs +0 -0
  298. {rumdl-0.0.132 → rumdl-0.0.135}/tests/fixable_unfixable_config_test.rs +0 -0
  299. {rumdl-0.0.132 → rumdl-0.0.135}/tests/init_command_test.rs +0 -0
  300. {rumdl-0.0.132 → rumdl-0.0.135}/tests/init_tests.rs +0 -0
  301. {rumdl-0.0.132 → rumdl-0.0.135}/tests/inline_config_blocks_test.rs +0 -0
  302. {rumdl-0.0.132 → rumdl-0.0.135}/tests/inline_config_test.rs +0 -0
  303. {rumdl-0.0.132 → rumdl-0.0.135}/tests/integration_tests.rs +0 -0
  304. {rumdl-0.0.132 → rumdl-0.0.135}/tests/json_output_test.rs +0 -0
  305. {rumdl-0.0.132 → rumdl-0.0.135}/tests/kramdown_integration_test.rs +0 -0
  306. {rumdl-0.0.132 → rumdl-0.0.135}/tests/lib.rs +0 -0
  307. {rumdl-0.0.132 → rumdl-0.0.135}/tests/lsp_editor_integration_tests.rs +0 -0
  308. {rumdl-0.0.132 → rumdl-0.0.135}/tests/lsp_formatting_tests.rs +0 -0
  309. {rumdl-0.0.132 → rumdl-0.0.135}/tests/lsp_initialization_options_test.rs +0 -0
  310. {rumdl-0.0.132 → rumdl-0.0.135}/tests/lsp_integration_tests.rs +0 -0
  311. {rumdl-0.0.132 → rumdl-0.0.135}/tests/lsp_memory_leak_tests.rs +0 -0
  312. {rumdl-0.0.132 → rumdl-0.0.135}/tests/lsp_mkdocs_flavor_test.rs +0 -0
  313. {rumdl-0.0.132 → rumdl-0.0.135}/tests/lsp_tests.rs +0 -0
  314. {rumdl-0.0.132 → rumdl-0.0.135}/tests/malformed_markdown_stress_tests.rs +0 -0
  315. {rumdl-0.0.132 → rumdl-0.0.135}/tests/markdownlint_cli_integration.rs +0 -0
  316. {rumdl-0.0.132 → rumdl-0.0.135}/tests/markdownlint_config_test.rs +0 -0
  317. {rumdl-0.0.132 → rumdl-0.0.135}/tests/markdownlintignore_test.rs +0 -0
  318. {rumdl-0.0.132 → rumdl-0.0.135}/tests/md013_reflow_integration_test.rs +0 -0
  319. {rumdl-0.0.132 → rumdl-0.0.135}/tests/md051_issue_39_regression_test.rs +0 -0
  320. {rumdl-0.0.132 → rumdl-0.0.135}/tests/nested_code_block_test.rs +0 -0
  321. {rumdl-0.0.132 → rumdl-0.0.135}/tests/output_format_integration_tests.rs +0 -0
  322. {rumdl-0.0.132 → rumdl-0.0.135}/tests/output_format_tests.rs +0 -0
  323. {rumdl-0.0.132 → rumdl-0.0.135}/tests/perf_check.rs +0 -0
  324. {rumdl-0.0.132 → rumdl-0.0.135}/tests/pyproject_config_tests.rs +0 -0
  325. {rumdl-0.0.132 → rumdl-0.0.135}/tests/python_bindings_test.rs +0 -0
  326. {rumdl-0.0.132 → rumdl-0.0.135}/tests/real_world_repository_tests.rs +0 -0
  327. {rumdl-0.0.132 → rumdl-0.0.135}/tests/regression_prevention_tests.rs +0 -0
  328. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/emphasis_edge_cases_test.rs +0 -0
  329. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/heading_edge_cases_test.rs +0 -0
  330. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/inline_content_edge_cases_test.rs +0 -0
  331. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/link_edge_cases_test.rs +0 -0
  332. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md001_test.rs +0 -0
  333. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md001_unicode_test.rs +0 -0
  334. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md002_test.rs +0 -0
  335. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md003_test.rs +0 -0
  336. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md004_test.rs +0 -0
  337. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md006_test.rs +0 -0
  338. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md006_unicode_test.rs +0 -0
  339. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md007_test.rs +0 -0
  340. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md009_test.rs +0 -0
  341. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md010_test.rs +0 -0
  342. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md011_test.rs +0 -0
  343. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md012_test.rs +0 -0
  344. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md013_test.rs +0 -0
  345. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md014_test.rs +0 -0
  346. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md018_test.rs +0 -0
  347. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md019_test.rs +0 -0
  348. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md020_test.rs +0 -0
  349. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md021_test.rs +0 -0
  350. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md022_test.rs +0 -0
  351. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md023_extended_test.rs +0 -0
  352. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md023_test.rs +0 -0
  353. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md024_test.rs +0 -0
  354. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md025_test.rs +0 -0
  355. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md026_kramdown_test.rs +0 -0
  356. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md026_test.rs +0 -0
  357. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md027_test.rs +0 -0
  358. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md029_code_block_separation_test.rs +0 -0
  359. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md029_fix_test.rs +0 -0
  360. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md029_issue42_test.rs +0 -0
  361. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md029_markdownlint_parity_test.rs +0 -0
  362. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
  363. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md029_test.rs +0 -0
  364. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md029_unicode_test.rs +0 -0
  365. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md030_test.rs +0 -0
  366. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md031_kramdown_test.rs +0 -0
  367. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md031_test.rs +0 -0
  368. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md032_test.rs +0 -0
  369. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md033_extended_test.rs +0 -0
  370. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md033_kramdown_test.rs +0 -0
  371. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md033_test.rs +0 -0
  372. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md034_ipv6_test.rs +0 -0
  373. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md034_test.rs +0 -0
  374. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md035_test.rs +0 -0
  375. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md036_test.rs +0 -0
  376. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md037_kramdown_test.rs +0 -0
  377. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md037_test.rs +0 -0
  378. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md038_nested_backticks_test.rs +0 -0
  379. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md038_test.rs +0 -0
  380. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md039_test.rs +0 -0
  381. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md040_test.rs +0 -0
  382. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md041_test.rs +0 -0
  383. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md042_test.rs +0 -0
  384. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md043_test.rs +0 -0
  385. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md044_test.rs +0 -0
  386. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md045_test.rs +0 -0
  387. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md046_test.rs +0 -0
  388. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md047_test.rs +0 -0
  389. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md048_test.rs +0 -0
  390. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md049_test.rs +0 -0
  391. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_comprehensive_test.rs +0 -0
  392. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
  393. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_edge_cases_test.rs +0 -0
  394. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_issue_39_regression_test.rs +0 -0
  395. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
  396. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_property_based_test.rs +0 -0
  397. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_regression_prevention_test.rs +0 -0
  398. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md051_unicode_security_test.rs +0 -0
  399. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md053_proptest.rs +0 -0
  400. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md054_test.rs +0 -0
  401. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md054_unicode_test.rs +0 -0
  402. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md055_test.rs +0 -0
  403. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md056_test.rs +0 -0
  404. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md057_test.rs +0 -0
  405. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md058_kramdown_test.rs +0 -0
  406. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/md058_test.rs +0 -0
  407. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/mkdocs_admonitions_test.rs +0 -0
  408. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/mkdocs_edge_cases_test.rs +0 -0
  409. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/mkdocs_extensions_test.rs +0 -0
  410. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules/mkdocs_snippets_test.rs +0 -0
  411. {rumdl-0.0.132 → rumdl-0.0.135}/tests/rules_mod_test.rs +0 -0
  412. {rumdl-0.0.132 → rumdl-0.0.135}/tests/skip_context_tests.rs +0 -0
  413. {rumdl-0.0.132 → rumdl-0.0.135}/tests/test_underscore_edge_cases.rs +0 -0
  414. {rumdl-0.0.132 → rumdl-0.0.135}/tests/thread_safety_tests.rs +0 -0
  415. {rumdl-0.0.132 → rumdl-0.0.135}/tests/unfixable_rules_test.rs +0 -0
  416. {rumdl-0.0.132 → rumdl-0.0.135}/tests/unicode_edge_case_tests.rs +0 -0
  417. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils/blockquote_utils_test.rs +0 -0
  418. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils/code_block_utils_extended_test.rs +0 -0
  419. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils/code_block_utils_test.rs +0 -0
  420. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils/core_utils_test.rs +0 -0
  421. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils/front_matter_utils_test.rs +0 -0
  422. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils/line_index_test.rs +0 -0
  423. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils/mod.rs +0 -0
  424. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils_markdown_edge_cases.rs +0 -0
  425. {rumdl-0.0.132 → rumdl-0.0.135}/tests/utils_tests.rs +0 -0
  426. {rumdl-0.0.132 → rumdl-0.0.135}/tests/vscode_test.rs +0 -0
  427. {rumdl-0.0.132 → rumdl-0.0.135}/tests/vscode_tests.rs +0 -0
  428. {rumdl-0.0.132 → rumdl-0.0.135}/tests/vscode_windows_comprehensive_test.rs +0 -0
  429. {rumdl-0.0.132 → rumdl-0.0.135}/tests/vscode_windows_test.rs +0 -0
@@ -7,6 +7,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.0.135] - 2025-09-03
11
+
12
+ ## [0.0.134] - 2025-09-02
13
+
14
+ ### Added
15
+ - **MD051**: HTML anchor tag support for any element with id/name attributes
16
+ - Supports `<a>`, `<span>`, `<div>` and any other HTML element with id attribute
17
+ - Case-sensitive matching for HTML anchors (case-insensitive for Markdown)
18
+ - Handles multiple id attributes (only first is used per HTML spec)
19
+
20
+ ### Fixed
21
+ - **MD007**: Implemented proper indentation style configuration for markdownlint compatibility
22
+ - Added IndentStyle enum with TextAligned (default) and Fixed (markdownlint) modes
23
+ - Auto-configures style="fixed" when loading from .markdownlint.yaml files
24
+ - Resolves 5-space indentation detection issues (#77)
25
+ - **MD029**: Improved list numbering style compatibility
26
+ - Added OneOrOrdered style (markdownlint default) accepting either all-ones or sequential
27
+ - Changed default from Ordered to OneOrOrdered for better compatibility
28
+ - **MD050**: Fixed false positives for emphasis patterns inside HTML `<code>` tags
29
+ - Patterns like `__pycache__`, `__init__` no longer flagged inside code elements
30
+ - **MD052**: Fixed reference checking to skip HTML content lines
31
+ - Skip any line starting with '<' to match markdownlint behavior
32
+ - Fixed regex to properly handle nested brackets in references like `[`Union[T, None]`]`
33
+ - **MD053**: Improved duplicate reference detection
34
+ - Detect when same reference is defined multiple times
35
+ - Handle case-insensitive duplicates per CommonMark spec
36
+ - Remove overly aggressive filters that skip valid references
37
+ - **MD028**: Aligned with markdownlint behavior for blank lines in blockquotes
38
+ - Flag all blank lines between blockquotes as ambiguous
39
+ - Better distinguish blockquote separators from internal blank lines
40
+ - **MD005**: Fixed respect for MD007 configuration and nested list handling
41
+ - **MD006**: Skip validation for lists inside blockquotes where indentation is expected
42
+
43
+ ## [0.0.133] - 2025-08-30
44
+
45
+ ### Fixed
46
+ - **MD028/MD009**: Complete fix for rule conflict where MD028 and MD009 were "fighting each other" (fixes #66)
47
+ - MD028 now only flags truly blank lines inside blockquotes, not `>` or `> ` lines
48
+ - MD009 simplified to remove special cases for empty blockquote lines
49
+ - Both rules now correctly follow CommonMark specifications
50
+
10
51
  ## [0.0.132] - 2025-08-30
11
52
 
12
53
  ### Added
@@ -519,7 +560,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
519
560
 
520
561
  - Initial implementation of remaining rules for markdownlint parity
521
562
 
522
- [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.132...HEAD
563
+ [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.135...HEAD
564
+ [0.0.135]: https://github.com/rvben/rumdl/compare/v0.0.134...v0.0.135
565
+ [0.0.134]: https://github.com/rvben/rumdl/compare/v0.0.133...v0.0.134
566
+ [0.0.133]: https://github.com/rvben/rumdl/compare/v0.0.132...v0.0.133
523
567
  [0.0.132]: https://github.com/rvben/rumdl/compare/v0.0.131...v0.0.132
524
568
  [0.0.131]: https://github.com/rvben/rumdl/compare/v0.0.130...v0.0.131
525
569
  [0.0.130]: https://github.com/rvben/rumdl/compare/v0.0.129...v0.0.130
@@ -185,9 +185,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
185
185
 
186
186
  [[package]]
187
187
  name = "bitflags"
188
- version = "2.9.3"
188
+ version = "2.9.4"
189
189
  source = "registry+https://github.com/rust-lang/crates.io-index"
190
- checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d"
190
+ checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
191
191
 
192
192
  [[package]]
193
193
  name = "bstr"
@@ -220,10 +220,11 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
220
220
 
221
221
  [[package]]
222
222
  name = "cc"
223
- version = "1.2.34"
223
+ version = "1.2.35"
224
224
  source = "registry+https://github.com/rust-lang/crates.io-index"
225
- checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc"
225
+ checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3"
226
226
  dependencies = [
227
+ "find-msvc-tools",
227
228
  "shlex",
228
229
  ]
229
230
 
@@ -277,9 +278,9 @@ dependencies = [
277
278
 
278
279
  [[package]]
279
280
  name = "clap"
280
- version = "4.5.46"
281
+ version = "4.5.47"
281
282
  source = "registry+https://github.com/rust-lang/crates.io-index"
282
- checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57"
283
+ checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931"
283
284
  dependencies = [
284
285
  "clap_builder",
285
286
  "clap_derive",
@@ -287,9 +288,9 @@ dependencies = [
287
288
 
288
289
  [[package]]
289
290
  name = "clap_builder"
290
- version = "4.5.46"
291
+ version = "4.5.47"
291
292
  source = "registry+https://github.com/rust-lang/crates.io-index"
292
- checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41"
293
+ checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6"
293
294
  dependencies = [
294
295
  "anstream",
295
296
  "anstyle",
@@ -299,9 +300,9 @@ dependencies = [
299
300
 
300
301
  [[package]]
301
302
  name = "clap_derive"
302
- version = "4.5.45"
303
+ version = "4.5.47"
303
304
  source = "registry+https://github.com/rust-lang/crates.io-index"
304
- checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6"
305
+ checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c"
305
306
  dependencies = [
306
307
  "heck",
307
308
  "proc-macro2",
@@ -545,6 +546,12 @@ dependencies = [
545
546
  "windows-sys 0.60.2",
546
547
  ]
547
548
 
549
+ [[package]]
550
+ name = "find-msvc-tools"
551
+ version = "0.1.0"
552
+ source = "registry+https://github.com/rust-lang/crates.io-index"
553
+ checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650"
554
+
548
555
  [[package]]
549
556
  name = "float-cmp"
550
557
  version = "0.10.0"
@@ -933,7 +940,7 @@ version = "0.7.10"
933
940
  source = "registry+https://github.com/rust-lang/crates.io-index"
934
941
  checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b"
935
942
  dependencies = [
936
- "bitflags 2.9.3",
943
+ "bitflags 2.9.4",
937
944
  "cfg-if",
938
945
  "libc",
939
946
  ]
@@ -1051,7 +1058,7 @@ version = "0.1.9"
1051
1058
  source = "registry+https://github.com/rust-lang/crates.io-index"
1052
1059
  checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
1053
1060
  dependencies = [
1054
- "bitflags 2.9.3",
1061
+ "bitflags 2.9.4",
1055
1062
  "libc",
1056
1063
  "redox_syscall",
1057
1064
  ]
@@ -1174,7 +1181,7 @@ version = "6.1.1"
1174
1181
  source = "registry+https://github.com/rust-lang/crates.io-index"
1175
1182
  checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
1176
1183
  dependencies = [
1177
- "bitflags 2.9.3",
1184
+ "bitflags 2.9.4",
1178
1185
  "crossbeam-channel",
1179
1186
  "filetime",
1180
1187
  "fsevent-sys",
@@ -1412,7 +1419,7 @@ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f"
1412
1419
  dependencies = [
1413
1420
  "bit-set",
1414
1421
  "bit-vec",
1415
- "bitflags 2.9.3",
1422
+ "bitflags 2.9.4",
1416
1423
  "lazy_static",
1417
1424
  "num-traits",
1418
1425
  "rand",
@@ -1430,7 +1437,7 @@ version = "0.12.2"
1430
1437
  source = "registry+https://github.com/rust-lang/crates.io-index"
1431
1438
  checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14"
1432
1439
  dependencies = [
1433
- "bitflags 2.9.3",
1440
+ "bitflags 2.9.4",
1434
1441
  "getopts",
1435
1442
  "memchr",
1436
1443
  "pulldown-cmark-escape",
@@ -1591,7 +1598,7 @@ version = "0.5.17"
1591
1598
  source = "registry+https://github.com/rust-lang/crates.io-index"
1592
1599
  checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
1593
1600
  dependencies = [
1594
- "bitflags 2.9.3",
1601
+ "bitflags 2.9.4",
1595
1602
  ]
1596
1603
 
1597
1604
  [[package]]
@@ -1625,7 +1632,7 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
1625
1632
 
1626
1633
  [[package]]
1627
1634
  name = "rumdl"
1628
- version = "0.0.132"
1635
+ version = "0.0.135"
1629
1636
  dependencies = [
1630
1637
  "anyhow",
1631
1638
  "assert_cmd",
@@ -1689,7 +1696,7 @@ version = "1.0.8"
1689
1696
  source = "registry+https://github.com/rust-lang/crates.io-index"
1690
1697
  checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
1691
1698
  dependencies = [
1692
- "bitflags 2.9.3",
1699
+ "bitflags 2.9.4",
1693
1700
  "errno",
1694
1701
  "libc",
1695
1702
  "linux-raw-sys",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.132"
3
+ version = "0.0.135"
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.132
3
+ Version: 0.0.135
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -34,11 +34,8 @@ Project-URL: Repository, https://github.com/rvben/rumdl.git
34
34
  ![rumdl Logo](https://raw.githubusercontent.com/rvben/rumdl/main/assets/logo.png)
35
35
 
36
36
  [![Build Status](https://img.shields.io/github/actions/workflow/status/rvben/rumdl/build.yml?branch=main)](https://github.com/rvben/rumdl/actions)
37
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
38
- [![Crates.io](https://img.shields.io/crates/v/rumdl)](https://crates.io/crates/rumdl)
39
- [![PyPI](https://img.shields.io/pypi/v/rumdl)](https://pypi.org/project/rumdl/)
40
- [![GitHub release (latest by date)](https://img.shields.io/github/v/release/rvben/rumdl)](https://github.com/rvben/rumdl/releases/latest)
41
- [![GitHub stars](https://img.shields.io/github/stars/rvben/rumdl)](https://github.com/rvben/rumdl/stargazers)
37
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/rumdl)](https://crates.io/crates/rumdl)
38
+ [![PyPI](https://img.shields.io/pypi/v/rumdl)](https://pypi.org/project/rumdl/) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/rvben/rumdl)](https://github.com/rvben/rumdl/releases/latest) [![GitHub stars](https://img.shields.io/github/stars/rvben/rumdl)](https://github.com/rvben/rumdl/stargazers)
42
39
 
43
40
  ## A modern Markdown linter and formatter, built for speed with Rust
44
41
 
@@ -65,9 +62,8 @@ rumdl init
65
62
 
66
63
  ## Overview
67
64
 
68
- rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices
69
- in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff)'s approach to Python linting,
70
- rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
65
+ rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff) 's approach to
66
+ Python linting, rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
71
67
 
72
68
  It offers:
73
69
 
@@ -206,7 +202,8 @@ The extension provides:
206
202
  - 📋 Hover tooltips with rule documentation
207
203
  - ⚡ Lightning-fast performance with zero lag
208
204
 
209
- The CLI will automatically detect VS Code, Cursor, or Windsurf and install the appropriate extension. See the [VS Code extension documentation](https://github.com/rvben/rumdl/blob/main/docs/vscode-extension.md) for more details.
205
+ The CLI will automatically detect VS Code, Cursor, or Windsurf and install the appropriate extension. See the
206
+ [VS Code extension documentation](https://github.com/rvben/rumdl/blob/main/docs/vscode-extension.md) for more details.
210
207
 
211
208
  ## Usage
212
209
 
@@ -252,6 +249,9 @@ rumdl check --include "docs/**/*.md" --exclude "docs/temp,docs/drafts" .
252
249
 
253
250
  # Don't respect gitignore files (note: --respect-gitignore defaults to true)
254
251
  rumdl check --respect-gitignore=false .
252
+
253
+ # Force exclude patterns even for explicitly specified files (useful for pre-commit)
254
+ rumdl check excluded.md --force-exclude # Will respect exclude patterns in config
255
255
  ```
256
256
 
257
257
  ### Stdin/Stdout Formatting
@@ -313,6 +313,33 @@ repos:
313
313
 
314
314
  When you run `pre-commit install` or `pre-commit run`, pre-commit will automatically install `rumdl` in an isolated Python environment using pip. You do **not** need to install rumdl manually.
315
315
 
316
+ ### Excluding Files in Pre-commit
317
+
318
+ By default, when pre-commit passes files explicitly to rumdl, the exclude patterns in your `.rumdl.toml` configuration file are ignored. This is intentional behavior - if you explicitly specify a
319
+ file, it gets checked.
320
+
321
+ However, for pre-commit workflows where you want to exclude certain files even when they're passed explicitly, you have two options:
322
+
323
+ 1. **Use `force_exclude` in your configuration file:**
324
+
325
+ ```toml
326
+ # .rumdl.toml
327
+ [global]
328
+ exclude = ["generated/*.md", "vendor/**"]
329
+ force_exclude = true # Enforce excludes even for explicitly provided files
330
+ ```
331
+
332
+ 2. **Use the `--force-exclude` flag in your pre-commit config:**
333
+
334
+ ```yaml
335
+ repos:
336
+ - repo: https://github.com/rvben/rumdl-pre-commit
337
+ rev: v0.0.99
338
+ hooks:
339
+ - id: rumdl
340
+ args: [--force-exclude] # Respect exclude patterns from config
341
+ ```
342
+
316
343
  ## CI/CD Integration
317
344
 
318
345
  ### GitHub Actions
@@ -373,6 +400,7 @@ Lint Markdown files and print warnings/errors (main subcommand)
373
400
  - `--exclude <patterns>`: Exclude specific files or directories (comma-separated glob patterns)
374
401
  - `--include <patterns>`: Include only specific files or directories (comma-separated glob patterns)
375
402
  - `--respect-gitignore`: Respect .gitignore files when scanning directories (does not apply to explicitly provided paths)
403
+ - `--force-exclude`: Enforce exclude patterns even for explicitly specified files (useful for pre-commit hooks)
376
404
  - `-v, --verbose`: Show detailed output
377
405
  - `--profile`: Show profiling information
378
406
  - `--statistics`: Show rule violation statistics summary
@@ -569,9 +597,8 @@ rumdl can be configured in several ways:
569
597
 
570
598
  ### Configuration Discovery
571
599
 
572
- rumdl automatically searches for configuration files by traversing up the directory tree from the current
573
- working directory, similar to tools like `git`, `ruff`, and `eslint`. This means you can run rumdl from any
574
- subdirectory of your project and it will find the configuration file at the project root.
600
+ rumdl automatically searches for configuration files by traversing up the directory tree from the current working directory, similar to tools like `git` , `ruff` , and `eslint` . This means you can
601
+ run rumdl from any subdirectory of your project and it will find the configuration file at the project root.
575
602
 
576
603
  The search follows these rules:
577
604
  - Searches upward for `.rumdl.toml`, `rumdl.toml`, or `pyproject.toml` (with `[tool.rumdl]` section)
@@ -624,13 +651,13 @@ indent = 2
624
651
 
625
652
  rumdl provides seamless compatibility with existing markdownlint configurations:
626
653
 
627
- **Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
654
+ ** Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
628
655
 
629
656
  - `.markdownlint.json` / `.markdownlint.jsonc`
630
657
  - `.markdownlint.yaml` / `.markdownlint.yml`
631
658
  - `markdownlint.json` / `markdownlint.yaml`
632
659
 
633
- **Explicit Import**: Convert markdownlint configs to rumdl format:
660
+ ** Explicit Import**: Convert markdownlint configs to rumdl format:
634
661
 
635
662
  ```bash
636
663
  # Convert to .rumdl.toml
@@ -718,8 +745,8 @@ Both kebab-case (`line-length`, `ignore-gitignore`) and snake_case (`line_length
718
745
 
719
746
  #### Effective Configuration (`rumdl config`)
720
747
 
721
- The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value.
722
- The output is colorized and the `[from ...]` annotation is globally aligned for easy scanning.
748
+ The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value. The output is colorized and
749
+ the `[from ...]` annotation is globally aligned for easy scanning.
723
750
 
724
751
  #### Example output
725
752
 
@@ -736,7 +763,7 @@ The output is colorized and the `[from ...]` annotation is globally aligned for
736
763
  ...
737
764
  ```
738
765
 
739
- - **Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
766
+ - ** Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
740
767
  - Green: CLI
741
768
  - Blue: `.rumdl.toml`
742
769
  - Magenta: `pyproject.toml`
@@ -754,6 +781,7 @@ disable = []
754
781
  exclude = []
755
782
  include = []
756
783
  respect_gitignore = true
784
+ force_exclude = false # Set to true to exclude files even when explicitly specified
757
785
 
758
786
  [MD013]
759
787
  line_length = 80
@@ -5,11 +5,8 @@
5
5
  ![rumdl Logo](https://raw.githubusercontent.com/rvben/rumdl/main/assets/logo.png)
6
6
 
7
7
  [![Build Status](https://img.shields.io/github/actions/workflow/status/rvben/rumdl/build.yml?branch=main)](https://github.com/rvben/rumdl/actions)
8
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
- [![Crates.io](https://img.shields.io/crates/v/rumdl)](https://crates.io/crates/rumdl)
10
- [![PyPI](https://img.shields.io/pypi/v/rumdl)](https://pypi.org/project/rumdl/)
11
- [![GitHub release (latest by date)](https://img.shields.io/github/v/release/rvben/rumdl)](https://github.com/rvben/rumdl/releases/latest)
12
- [![GitHub stars](https://img.shields.io/github/stars/rvben/rumdl)](https://github.com/rvben/rumdl/stargazers)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/rumdl)](https://crates.io/crates/rumdl)
9
+ [![PyPI](https://img.shields.io/pypi/v/rumdl)](https://pypi.org/project/rumdl/) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/rvben/rumdl)](https://github.com/rvben/rumdl/releases/latest) [![GitHub stars](https://img.shields.io/github/stars/rvben/rumdl)](https://github.com/rvben/rumdl/stargazers)
13
10
 
14
11
  ## A modern Markdown linter and formatter, built for speed with Rust
15
12
 
@@ -36,9 +33,8 @@ rumdl init
36
33
 
37
34
  ## Overview
38
35
 
39
- rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices
40
- in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff)'s approach to Python linting,
41
- rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
36
+ rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff) 's approach to
37
+ Python linting, rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
42
38
 
43
39
  It offers:
44
40
 
@@ -177,7 +173,8 @@ The extension provides:
177
173
  - 📋 Hover tooltips with rule documentation
178
174
  - ⚡ Lightning-fast performance with zero lag
179
175
 
180
- The CLI will automatically detect VS Code, Cursor, or Windsurf and install the appropriate extension. See the [VS Code extension documentation](https://github.com/rvben/rumdl/blob/main/docs/vscode-extension.md) for more details.
176
+ The CLI will automatically detect VS Code, Cursor, or Windsurf and install the appropriate extension. See the
177
+ [VS Code extension documentation](https://github.com/rvben/rumdl/blob/main/docs/vscode-extension.md) for more details.
181
178
 
182
179
  ## Usage
183
180
 
@@ -223,6 +220,9 @@ rumdl check --include "docs/**/*.md" --exclude "docs/temp,docs/drafts" .
223
220
 
224
221
  # Don't respect gitignore files (note: --respect-gitignore defaults to true)
225
222
  rumdl check --respect-gitignore=false .
223
+
224
+ # Force exclude patterns even for explicitly specified files (useful for pre-commit)
225
+ rumdl check excluded.md --force-exclude # Will respect exclude patterns in config
226
226
  ```
227
227
 
228
228
  ### Stdin/Stdout Formatting
@@ -284,6 +284,33 @@ repos:
284
284
 
285
285
  When you run `pre-commit install` or `pre-commit run`, pre-commit will automatically install `rumdl` in an isolated Python environment using pip. You do **not** need to install rumdl manually.
286
286
 
287
+ ### Excluding Files in Pre-commit
288
+
289
+ By default, when pre-commit passes files explicitly to rumdl, the exclude patterns in your `.rumdl.toml` configuration file are ignored. This is intentional behavior - if you explicitly specify a
290
+ file, it gets checked.
291
+
292
+ However, for pre-commit workflows where you want to exclude certain files even when they're passed explicitly, you have two options:
293
+
294
+ 1. **Use `force_exclude` in your configuration file:**
295
+
296
+ ```toml
297
+ # .rumdl.toml
298
+ [global]
299
+ exclude = ["generated/*.md", "vendor/**"]
300
+ force_exclude = true # Enforce excludes even for explicitly provided files
301
+ ```
302
+
303
+ 2. **Use the `--force-exclude` flag in your pre-commit config:**
304
+
305
+ ```yaml
306
+ repos:
307
+ - repo: https://github.com/rvben/rumdl-pre-commit
308
+ rev: v0.0.99
309
+ hooks:
310
+ - id: rumdl
311
+ args: [--force-exclude] # Respect exclude patterns from config
312
+ ```
313
+
287
314
  ## CI/CD Integration
288
315
 
289
316
  ### GitHub Actions
@@ -344,6 +371,7 @@ Lint Markdown files and print warnings/errors (main subcommand)
344
371
  - `--exclude <patterns>`: Exclude specific files or directories (comma-separated glob patterns)
345
372
  - `--include <patterns>`: Include only specific files or directories (comma-separated glob patterns)
346
373
  - `--respect-gitignore`: Respect .gitignore files when scanning directories (does not apply to explicitly provided paths)
374
+ - `--force-exclude`: Enforce exclude patterns even for explicitly specified files (useful for pre-commit hooks)
347
375
  - `-v, --verbose`: Show detailed output
348
376
  - `--profile`: Show profiling information
349
377
  - `--statistics`: Show rule violation statistics summary
@@ -540,9 +568,8 @@ rumdl can be configured in several ways:
540
568
 
541
569
  ### Configuration Discovery
542
570
 
543
- rumdl automatically searches for configuration files by traversing up the directory tree from the current
544
- working directory, similar to tools like `git`, `ruff`, and `eslint`. This means you can run rumdl from any
545
- subdirectory of your project and it will find the configuration file at the project root.
571
+ rumdl automatically searches for configuration files by traversing up the directory tree from the current working directory, similar to tools like `git` , `ruff` , and `eslint` . This means you can
572
+ run rumdl from any subdirectory of your project and it will find the configuration file at the project root.
546
573
 
547
574
  The search follows these rules:
548
575
  - Searches upward for `.rumdl.toml`, `rumdl.toml`, or `pyproject.toml` (with `[tool.rumdl]` section)
@@ -595,13 +622,13 @@ indent = 2
595
622
 
596
623
  rumdl provides seamless compatibility with existing markdownlint configurations:
597
624
 
598
- **Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
625
+ ** Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
599
626
 
600
627
  - `.markdownlint.json` / `.markdownlint.jsonc`
601
628
  - `.markdownlint.yaml` / `.markdownlint.yml`
602
629
  - `markdownlint.json` / `markdownlint.yaml`
603
630
 
604
- **Explicit Import**: Convert markdownlint configs to rumdl format:
631
+ ** Explicit Import**: Convert markdownlint configs to rumdl format:
605
632
 
606
633
  ```bash
607
634
  # Convert to .rumdl.toml
@@ -689,8 +716,8 @@ Both kebab-case (`line-length`, `ignore-gitignore`) and snake_case (`line_length
689
716
 
690
717
  #### Effective Configuration (`rumdl config`)
691
718
 
692
- The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value.
693
- The output is colorized and the `[from ...]` annotation is globally aligned for easy scanning.
719
+ The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value. The output is colorized and
720
+ the `[from ...]` annotation is globally aligned for easy scanning.
694
721
 
695
722
  #### Example output
696
723
 
@@ -707,7 +734,7 @@ The output is colorized and the `[from ...]` annotation is globally aligned for
707
734
  ...
708
735
  ```
709
736
 
710
- - **Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
737
+ - ** Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
711
738
  - Green: CLI
712
739
  - Blue: `.rumdl.toml`
713
740
  - Magenta: `pyproject.toml`
@@ -725,6 +752,7 @@ disable = []
725
752
  exclude = []
726
753
  include = []
727
754
  respect_gitignore = true
755
+ force_exclude = false # Set to true to exclude files even when explicitly specified
728
756
 
729
757
  [MD013]
730
758
  line_length = 80
@@ -230,7 +230,7 @@ fn bench_fix_performance(c: &mut Criterion) {
230
230
 
231
231
  // MD005 - List indentation
232
232
  c.bench_function("MD005 fix", |b| {
233
- let rule = MD005ListIndent;
233
+ let rule = MD005ListIndent::default();
234
234
  b.iter(|| rule.fix(black_box(&ctx)))
235
235
  });
236
236
 
@@ -174,6 +174,13 @@ pub struct GlobalConfig {
174
174
  /// When set, adjusts parsing and validation rules for that specific Markdown variant
175
175
  #[serde(default)]
176
176
  pub flavor: MarkdownFlavor,
177
+
178
+ /// Whether to enforce exclude and extend-exclude patterns even for paths that are passed explicitly.
179
+ /// By default (false), rumdl will lint any paths passed in directly, even if they would typically be excluded.
180
+ /// Setting this to true will cause rumdl to respect exclusions unequivocally.
181
+ /// This is useful for pre-commit, which explicitly passes all changed files.
182
+ #[serde(default)]
183
+ pub force_exclude: bool,
177
184
  }
178
185
 
179
186
  fn default_respect_gitignore() -> bool {
@@ -198,6 +205,7 @@ impl Default for GlobalConfig {
198
205
  fixable: Vec::new(),
199
206
  unfixable: Vec::new(),
200
207
  flavor: MarkdownFlavor::default(),
208
+ force_exclude: false,
201
209
  }
202
210
  }
203
211
  }
@@ -1115,6 +1123,7 @@ pub struct SourcedGlobalConfig {
1115
1123
  pub fixable: SourcedValue<Vec<String>>,
1116
1124
  pub unfixable: SourcedValue<Vec<String>>,
1117
1125
  pub flavor: SourcedValue<MarkdownFlavor>,
1126
+ pub force_exclude: SourcedValue<bool>,
1118
1127
  }
1119
1128
 
1120
1129
  impl Default for SourcedGlobalConfig {
@@ -1130,6 +1139,7 @@ impl Default for SourcedGlobalConfig {
1130
1139
  fixable: SourcedValue::new(Vec::new(), ConfigSource::Default),
1131
1140
  unfixable: SourcedValue::new(Vec::new(), ConfigSource::Default),
1132
1141
  flavor: SourcedValue::new(MarkdownFlavor::default(), ConfigSource::Default),
1142
+ force_exclude: SourcedValue::new(false, ConfigSource::Default),
1133
1143
  }
1134
1144
  }
1135
1145
  }
@@ -1228,6 +1238,19 @@ impl SourcedConfig {
1228
1238
  fragment.global.flavor.overrides.first().and_then(|o| o.line),
1229
1239
  );
1230
1240
 
1241
+ // Merge force_exclude
1242
+ self.global.force_exclude.merge_override(
1243
+ fragment.global.force_exclude.value,
1244
+ fragment.global.force_exclude.source,
1245
+ fragment
1246
+ .global
1247
+ .force_exclude
1248
+ .overrides
1249
+ .first()
1250
+ .and_then(|o| o.file.clone()),
1251
+ fragment.global.force_exclude.overrides.first().and_then(|o| o.line),
1252
+ );
1253
+
1231
1254
  // Merge output_format if present
1232
1255
  if let Some(output_format_fragment) = fragment.global.output_format {
1233
1256
  if let Some(ref mut output_format) = self.global.output_format {
@@ -1608,6 +1631,7 @@ impl From<SourcedConfig> for Config {
1608
1631
  fixable: sourced.global.fixable.value,
1609
1632
  unfixable: sourced.global.unfixable.value,
1610
1633
  flavor: sourced.global.flavor.value,
1634
+ force_exclude: sourced.global.force_exclude.value,
1611
1635
  };
1612
1636
  Config { global, rules }
1613
1637
  }
@@ -1886,6 +1910,15 @@ fn parse_pyproject_toml(content: &str, path: &str) -> Result<Option<SourcedConfi
1886
1910
  .push_override(value, source, file.clone(), None);
1887
1911
  }
1888
1912
 
1913
+ if let Some(force_exclude) = table.get("force-exclude").or_else(|| table.get("force_exclude"))
1914
+ && let Ok(value) = bool::deserialize(force_exclude.clone())
1915
+ {
1916
+ fragment
1917
+ .global
1918
+ .force_exclude
1919
+ .push_override(value, source, file.clone(), None);
1920
+ }
1921
+
1889
1922
  if let Some(output_format) = table.get("output-format").or_else(|| table.get("output_format"))
1890
1923
  && let Ok(value) = String::deserialize(output_format.clone())
1891
1924
  {
@@ -1968,6 +2001,8 @@ fn parse_pyproject_toml(content: &str, path: &str) -> Result<Option<SourcedConfi
1968
2001
  "exclude",
1969
2002
  "respect_gitignore",
1970
2003
  "respect-gitignore", // Added kebab-case here too
2004
+ "force_exclude",
2005
+ "force-exclude",
1971
2006
  "line_length",
1972
2007
  "line-length",
1973
2008
  "output_format",
@@ -2167,6 +2202,23 @@ fn parse_rumdl_toml(content: &str, path: &str) -> Result<SourcedConfigFragment,
2167
2202
  );
2168
2203
  }
2169
2204
  }
2205
+ "force_exclude" | "force-exclude" => {
2206
+ // Handle both cases
2207
+ if let Some(toml_edit::Value::Boolean(formatted_bool)) = value_item.as_value() {
2208
+ let val = *formatted_bool.value();
2209
+ fragment
2210
+ .global
2211
+ .force_exclude
2212
+ .push_override(val, source, file.clone(), None);
2213
+ } else {
2214
+ log::warn!(
2215
+ "[WARN] Expected boolean for global key '{}' in {}, found {}",
2216
+ key,
2217
+ path,
2218
+ value_item.type_name()
2219
+ );
2220
+ }
2221
+ }
2170
2222
  "line_length" | "line-length" => {
2171
2223
  // Handle both cases
2172
2224
  if let Some(toml_edit::Value::Integer(formatted_int)) = value_item.as_value() {
@@ -1890,7 +1890,7 @@ impl<'a> LintContext<'a> {
1890
1890
  fn parse_html_tags(content: &str, lines: &[LineInfo], code_blocks: &[(usize, usize)]) -> Vec<HtmlTag> {
1891
1891
  lazy_static! {
1892
1892
  static ref HTML_TAG_REGEX: regex::Regex =
1893
- regex::Regex::new(r"(?i)<(/?)([a-zA-Z][a-zA-Z0-9]*)\b[^>]*(/?)>").unwrap();
1893
+ regex::Regex::new(r"(?i)<(/?)([a-zA-Z][a-zA-Z0-9]*)(?:\s+[^>]*?)?\s*(/?)>").unwrap();
1894
1894
  }
1895
1895
 
1896
1896
  let mut html_tags = Vec::with_capacity(content.matches('<').count());