rumdl 0.0.106__tar.gz → 0.0.108__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 (372) hide show
  1. {rumdl-0.0.106 → rumdl-0.0.108}/.config/nextest.toml +21 -1
  2. {rumdl-0.0.106 → rumdl-0.0.108}/.pre-commit-config.yaml +38 -11
  3. {rumdl-0.0.106 → rumdl-0.0.108}/CHANGELOG.md +12 -1
  4. {rumdl-0.0.106 → rumdl-0.0.108}/Cargo.lock +15 -15
  5. {rumdl-0.0.106 → rumdl-0.0.108}/Cargo.toml +1 -1
  6. {rumdl-0.0.106 → rumdl-0.0.108}/Makefile +11 -1
  7. {rumdl-0.0.106 → rumdl-0.0.108}/PKG-INFO +1 -1
  8. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md036.md +16 -13
  9. rumdl-0.0.108/src/bin/debug_frontmatter.rs +42 -0
  10. {rumdl-0.0.106 → rumdl-0.0.108}/src/config.rs +40 -0
  11. {rumdl-0.0.106 → rumdl-0.0.108}/src/lib.rs +11 -2
  12. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md011_no_reversed_links.rs +53 -6
  13. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md029_ordered_list_prefix.rs +125 -147
  14. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md036_no_emphasis_only_first.rs +64 -99
  15. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md037_spaces_around_emphasis.rs +100 -1
  16. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md044_proper_names.rs +107 -0
  17. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md046_code_block_style.rs +130 -1
  18. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md049_emphasis_style.rs +74 -0
  19. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md050_strong_style.rs +83 -6
  20. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md052_reference_links_images.rs +155 -0
  21. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md058_blanks_around_tables.rs +30 -0
  22. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/table_utils.rs +36 -11
  23. {rumdl-0.0.106 → rumdl-0.0.108}/src/vscode.rs +31 -6
  24. rumdl-0.0.108/tests/cli_duplication_test.rs +58 -0
  25. {rumdl-0.0.106 → rumdl-0.0.108}/tests/init_tests.rs +27 -50
  26. rumdl-0.0.108/tests/integration_tests.rs +29 -0
  27. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/emphasis_edge_cases_test.rs +9 -7
  28. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/inline_content_edge_cases_test.rs +4 -2
  29. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md029_test.rs +71 -3
  30. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md036_test.rs +19 -23
  31. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md044_test.rs +2 -1
  32. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md046_test.rs +123 -0
  33. rumdl-0.0.108/tests/vscode_windows_comprehensive_test.rs +263 -0
  34. rumdl-0.0.108/tests/vscode_windows_test.rs +113 -0
  35. rumdl-0.0.106/src/init.rs +0 -337
  36. rumdl-0.0.106/tests/cli_duplication_test.rs +0 -39
  37. rumdl-0.0.106/tests/integration_tests.rs +0 -18
  38. {rumdl-0.0.106 → rumdl-0.0.108}/.mise.toml +0 -0
  39. {rumdl-0.0.106 → rumdl-0.0.108}/.rumdl.toml +0 -0
  40. {rumdl-0.0.106 → rumdl-0.0.108}/.rustfmt.toml +0 -0
  41. {rumdl-0.0.106 → rumdl-0.0.108}/LICENSE +0 -0
  42. {rumdl-0.0.106 → rumdl-0.0.108}/MANIFEST.in +0 -0
  43. {rumdl-0.0.106 → rumdl-0.0.108}/README.md +0 -0
  44. {rumdl-0.0.106 → rumdl-0.0.108}/assets/logo.png +0 -0
  45. {rumdl-0.0.106 → rumdl-0.0.108}/benches/fix_performance.rs +0 -0
  46. {rumdl-0.0.106 → rumdl-0.0.108}/benches/range_performance.rs +0 -0
  47. {rumdl-0.0.106 → rumdl-0.0.108}/benches/range_utils_benchmark.rs +0 -0
  48. {rumdl-0.0.106 → rumdl-0.0.108}/benches/rule_performance.rs +0 -0
  49. {rumdl-0.0.106 → rumdl-0.0.108}/benches/simple_fix_bench.rs +0 -0
  50. {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/bench_lint_context.rs +0 -0
  51. {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/benchmark.rs +0 -0
  52. {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/benchmark_rule.rs +0 -0
  53. {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/file_parallel_benchmark.rs +0 -0
  54. {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/measure_code_span_performance.rs +0 -0
  55. {rumdl-0.0.106 → rumdl-0.0.108}/docs/RULES.md +0 -0
  56. {rumdl-0.0.106 → rumdl-0.0.108}/docs/global-settings.md +0 -0
  57. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md001.md +0 -0
  58. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md002.md +0 -0
  59. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md003.md +0 -0
  60. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md004.md +0 -0
  61. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md005.md +0 -0
  62. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md006.md +0 -0
  63. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md007.md +0 -0
  64. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md009.md +0 -0
  65. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md010.md +0 -0
  66. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md011.md +0 -0
  67. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md012.md +0 -0
  68. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md013.md +0 -0
  69. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md014.md +0 -0
  70. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md018.md +0 -0
  71. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md019.md +0 -0
  72. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md020.md +0 -0
  73. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md021.md +0 -0
  74. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md022.md +0 -0
  75. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md023.md +0 -0
  76. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md024.md +0 -0
  77. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md025.md +0 -0
  78. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md026.md +0 -0
  79. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md027.md +0 -0
  80. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md028.md +0 -0
  81. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md029.md +0 -0
  82. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md030.md +0 -0
  83. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md031.md +0 -0
  84. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md032.md +0 -0
  85. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md033.md +0 -0
  86. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md034.md +0 -0
  87. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md035.md +0 -0
  88. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md037.md +0 -0
  89. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md038.md +0 -0
  90. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md039.md +0 -0
  91. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md040.md +0 -0
  92. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md041.md +0 -0
  93. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md042.md +0 -0
  94. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md043.md +0 -0
  95. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md044.md +0 -0
  96. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md045.md +0 -0
  97. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md046.md +0 -0
  98. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md047.md +0 -0
  99. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md048.md +0 -0
  100. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md049.md +0 -0
  101. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md050.md +0 -0
  102. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md051.md +0 -0
  103. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md052.md +0 -0
  104. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md053.md +0 -0
  105. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md054.md +0 -0
  106. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md055.md +0 -0
  107. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md056.md +0 -0
  108. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md057.md +0 -0
  109. {rumdl-0.0.106 → rumdl-0.0.108}/docs/md058.md +0 -0
  110. {rumdl-0.0.106 → rumdl-0.0.108}/docs/vscode-extension.md +0 -0
  111. {rumdl-0.0.106 → rumdl-0.0.108}/parity_check.py +0 -0
  112. {rumdl-0.0.106 → rumdl-0.0.108}/pyproject.toml +0 -0
  113. {rumdl-0.0.106 → rumdl-0.0.108}/python/MANIFEST.in +0 -0
  114. {rumdl-0.0.106 → rumdl-0.0.108}/python/PYTHON-README.md +0 -0
  115. {rumdl-0.0.106 → rumdl-0.0.108}/python/rumdl/__init__.py +0 -0
  116. {rumdl-0.0.106 → rumdl-0.0.108}/python/rumdl/__main__.py +0 -0
  117. {rumdl-0.0.106 → rumdl-0.0.108}/python/rumdl/py.typed +0 -0
  118. {rumdl-0.0.106 → rumdl-0.0.108}/rumdl.toml.example +0 -0
  119. {rumdl-0.0.106 → rumdl-0.0.108}/rust-toolchain.toml +0 -0
  120. {rumdl-0.0.106 → rumdl-0.0.108}/scripts/extract-changelog.sh +0 -0
  121. {rumdl-0.0.106 → rumdl-0.0.108}/scripts/prepare-release.sh +0 -0
  122. {rumdl-0.0.106 → rumdl-0.0.108}/scripts/setup-pre-commit.sh +0 -0
  123. {rumdl-0.0.106 → rumdl-0.0.108}/scripts/update-pre-commit-docs.sh +0 -0
  124. {rumdl-0.0.106 → rumdl-0.0.108}/src/exit_codes.rs +0 -0
  125. {rumdl-0.0.106 → rumdl-0.0.108}/src/inline_config.rs +0 -0
  126. {rumdl-0.0.106 → rumdl-0.0.108}/src/lint_context.rs +0 -0
  127. {rumdl-0.0.106 → rumdl-0.0.108}/src/lsp/mod.rs +0 -0
  128. {rumdl-0.0.106 → rumdl-0.0.108}/src/lsp/server.rs +0 -0
  129. {rumdl-0.0.106 → rumdl-0.0.108}/src/lsp/types.rs +0 -0
  130. {rumdl-0.0.106 → rumdl-0.0.108}/src/main.rs +0 -0
  131. {rumdl-0.0.106 → rumdl-0.0.108}/src/markdownlint_config.rs +0 -0
  132. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/azure.rs +0 -0
  133. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/concise.rs +0 -0
  134. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/github.rs +0 -0
  135. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/gitlab.rs +0 -0
  136. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/grouped.rs +0 -0
  137. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/json.rs +0 -0
  138. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/json_lines.rs +0 -0
  139. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/junit.rs +0 -0
  140. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/mod.rs +0 -0
  141. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/pylint.rs +0 -0
  142. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/sarif.rs +0 -0
  143. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/text.rs +0 -0
  144. {rumdl-0.0.106 → rumdl-0.0.108}/src/output/mod.rs +0 -0
  145. {rumdl-0.0.106 → rumdl-0.0.108}/src/parallel.rs +0 -0
  146. {rumdl-0.0.106 → rumdl-0.0.108}/src/performance.rs +0 -0
  147. {rumdl-0.0.106 → rumdl-0.0.108}/src/profiling.rs +0 -0
  148. {rumdl-0.0.106 → rumdl-0.0.108}/src/python.rs +0 -0
  149. {rumdl-0.0.106 → rumdl-0.0.108}/src/rule.rs +0 -0
  150. {rumdl-0.0.106 → rumdl-0.0.108}/src/rule_config.rs +0 -0
  151. {rumdl-0.0.106 → rumdl-0.0.108}/src/rule_config_serde.rs +0 -0
  152. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/blockquote_utils.rs +0 -0
  153. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/code_block_utils.rs +0 -0
  154. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/code_fence_utils.rs +0 -0
  155. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/emphasis_style.rs +0 -0
  156. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/front_matter_utils.rs +0 -0
  157. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/heading_utils.rs +0 -0
  158. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/list_utils.rs +0 -0
  159. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md001_heading_increment.rs +0 -0
  160. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  161. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md002_first_heading_h1.rs +0 -0
  162. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md003_heading_style/md003_config.rs +0 -0
  163. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md003_heading_style.rs +0 -0
  164. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  165. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md004_unordered_list_style.rs +0 -0
  166. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md005_list_indent.rs +0 -0
  167. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md006_start_bullets.rs +0 -0
  168. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md007_ul_indent/md007_config.rs +0 -0
  169. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md007_ul_indent.rs +0 -0
  170. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  171. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md009_trailing_spaces.rs +0 -0
  172. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  173. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md010_no_hard_tabs.rs +0 -0
  174. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
  175. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md012_no_multiple_blanks.rs +0 -0
  176. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md013_line_length/md013_config.rs +0 -0
  177. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md013_line_length.rs +0 -0
  178. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  179. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md014_commands_show_output.rs +0 -0
  180. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md018_no_missing_space_atx.rs +0 -0
  181. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  182. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  183. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  184. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  185. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md022_blanks_around_headings.rs +0 -0
  186. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md023_heading_start_left.rs +0 -0
  187. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  188. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md024_no_duplicate_heading.rs +0 -0
  189. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md025_single_title/md025_config.rs +0 -0
  190. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md025_single_title.rs +0 -0
  191. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  192. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  193. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  194. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  195. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
  196. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  197. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md030_list_marker_space.rs +0 -0
  198. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md031_blanks_around_fences.rs +0 -0
  199. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md032_blanks_around_lists.rs +0 -0
  200. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  201. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md033_no_inline_html.rs +0 -0
  202. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md034_no_bare_urls.rs +0 -0
  203. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md035_hr_style/md035_config.rs +0 -0
  204. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md035_hr_style.rs +0 -0
  205. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  206. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md038_no_space_in_code.rs +0 -0
  207. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md039_no_space_in_links.rs +0 -0
  208. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md040_fenced_code_language.rs +0 -0
  209. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md041_first_line_heading.rs +0 -0
  210. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md042_no_empty_links.rs +0 -0
  211. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md043_required_headings.rs +0 -0
  212. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md044_proper_names/md044_config.rs +0 -0
  213. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  214. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md045_no_alt_text.rs +0 -0
  215. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  216. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md047_single_trailing_newline.rs +0 -0
  217. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  218. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md048_code_fence_style.rs +0 -0
  219. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  220. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md050_strong_style/md050_config.rs +0 -0
  221. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md051_link_fragments.rs +0 -0
  222. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  223. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  224. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md054_link_image_style.rs +0 -0
  225. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  226. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md055_table_pipe_style.rs +0 -0
  227. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md056_table_column_count.rs +0 -0
  228. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  229. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md057_existing_relative_links.rs +0 -0
  230. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/mod.rs +0 -0
  231. {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/strong_style.rs +0 -0
  232. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/ast_utils.rs +0 -0
  233. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/code_block_utils.rs +0 -0
  234. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/document_structure.rs +0 -0
  235. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/early_returns.rs +0 -0
  236. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/element_cache.rs +0 -0
  237. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/emphasis_utils.rs +0 -0
  238. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/fix_utils.rs +0 -0
  239. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/markdown_elements.rs +0 -0
  240. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/mod.rs +0 -0
  241. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/range_utils.rs +0 -0
  242. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/regex_cache.rs +0 -0
  243. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/string_interner.rs +0 -0
  244. {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/text_reflow.rs +0 -0
  245. {rumdl-0.0.106 → rumdl-0.0.108}/tests/advanced_integration_tests.rs +0 -0
  246. {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/additional_tests.rs +0 -0
  247. {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/basic_tests.rs +0 -0
  248. {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/comprehensive_tests.rs +0 -0
  249. {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/extended_tests.rs +0 -0
  250. {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/mod.rs +0 -0
  251. {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/unicode_utils.rs +0 -0
  252. {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_explain_test.rs +0 -0
  253. {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_flag_precedence_test.rs +0 -0
  254. {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_integration_tests.rs +0 -0
  255. {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_lsp_fix_consistency.rs +0 -0
  256. {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_statistics_test.rs +0 -0
  257. {rumdl-0.0.106 → rumdl-0.0.108}/tests/commonmark_compliance_tests.rs +0 -0
  258. {rumdl-0.0.106 → rumdl-0.0.108}/tests/comprehensive_integration_tests.rs +0 -0
  259. {rumdl-0.0.106 → rumdl-0.0.108}/tests/comprehensive_output_format_tests.rs +0 -0
  260. {rumdl-0.0.106 → rumdl-0.0.108}/tests/config_application_tests.rs +0 -0
  261. {rumdl-0.0.106 → rumdl-0.0.108}/tests/config_file_command_test.rs +0 -0
  262. {rumdl-0.0.106 → rumdl-0.0.108}/tests/config_tests.rs +0 -0
  263. {rumdl-0.0.106 → rumdl-0.0.108}/tests/configuration_inheritance_tests.rs +0 -0
  264. {rumdl-0.0.106 → rumdl-0.0.108}/tests/consistency_regression_tests.rs +0 -0
  265. {rumdl-0.0.106 → rumdl-0.0.108}/tests/cross_platform_compatibility_tests.rs +0 -0
  266. {rumdl-0.0.106 → rumdl-0.0.108}/tests/deeply_nested_lists_performance_test.rs +0 -0
  267. {rumdl-0.0.106 → rumdl-0.0.108}/tests/escaped_brackets_test.rs +0 -0
  268. {rumdl-0.0.106 → rumdl-0.0.108}/tests/final_confidence_assessment.rs +0 -0
  269. {rumdl-0.0.106 → rumdl-0.0.108}/tests/init_command_test.rs +0 -0
  270. {rumdl-0.0.106 → rumdl-0.0.108}/tests/inline_config_blocks_test.rs +0 -0
  271. {rumdl-0.0.106 → rumdl-0.0.108}/tests/inline_config_test.rs +0 -0
  272. {rumdl-0.0.106 → rumdl-0.0.108}/tests/json_output_test.rs +0 -0
  273. {rumdl-0.0.106 → rumdl-0.0.108}/tests/lib.rs +0 -0
  274. {rumdl-0.0.106 → rumdl-0.0.108}/tests/lsp_editor_integration_tests.rs +0 -0
  275. {rumdl-0.0.106 → rumdl-0.0.108}/tests/lsp_integration_tests.rs +0 -0
  276. {rumdl-0.0.106 → rumdl-0.0.108}/tests/lsp_memory_leak_tests.rs +0 -0
  277. {rumdl-0.0.106 → rumdl-0.0.108}/tests/lsp_tests.rs +0 -0
  278. {rumdl-0.0.106 → rumdl-0.0.108}/tests/malformed_markdown_stress_tests.rs +0 -0
  279. {rumdl-0.0.106 → rumdl-0.0.108}/tests/markdownlint_cli_integration.rs +0 -0
  280. {rumdl-0.0.106 → rumdl-0.0.108}/tests/markdownlint_config_test.rs +0 -0
  281. {rumdl-0.0.106 → rumdl-0.0.108}/tests/markdownlintignore_test.rs +0 -0
  282. {rumdl-0.0.106 → rumdl-0.0.108}/tests/md013_reflow_integration_test.rs +0 -0
  283. {rumdl-0.0.106 → rumdl-0.0.108}/tests/nested_code_block_test.rs +0 -0
  284. {rumdl-0.0.106 → rumdl-0.0.108}/tests/output_format_integration_tests.rs +0 -0
  285. {rumdl-0.0.106 → rumdl-0.0.108}/tests/output_format_tests.rs +0 -0
  286. {rumdl-0.0.106 → rumdl-0.0.108}/tests/perf_check.rs +0 -0
  287. {rumdl-0.0.106 → rumdl-0.0.108}/tests/performance_validation_tests.rs +0 -0
  288. {rumdl-0.0.106 → rumdl-0.0.108}/tests/pyproject_config_tests.rs +0 -0
  289. {rumdl-0.0.106 → rumdl-0.0.108}/tests/python_bindings_test.rs +0 -0
  290. {rumdl-0.0.106 → rumdl-0.0.108}/tests/real_world_repository_tests.rs +0 -0
  291. {rumdl-0.0.106 → rumdl-0.0.108}/tests/regression_prevention_tests.rs +0 -0
  292. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/heading_edge_cases_test.rs +0 -0
  293. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/link_edge_cases_test.rs +0 -0
  294. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/list_rules_integration_test.rs +0 -0
  295. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md001_test.rs +0 -0
  296. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md001_unicode_test.rs +0 -0
  297. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md002_test.rs +0 -0
  298. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md003_test.rs +0 -0
  299. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md004_test.rs +0 -0
  300. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md005_test.rs +0 -0
  301. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md005_unicode_test.rs +0 -0
  302. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md006_test.rs +0 -0
  303. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md006_unicode_test.rs +0 -0
  304. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md007_test.rs +0 -0
  305. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md009_test.rs +0 -0
  306. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md010_test.rs +0 -0
  307. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md011_test.rs +0 -0
  308. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md012_test.rs +0 -0
  309. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md013_test.rs +0 -0
  310. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md014_test.rs +0 -0
  311. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md018_test.rs +0 -0
  312. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md019_test.rs +0 -0
  313. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md020_test.rs +0 -0
  314. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md021_test.rs +0 -0
  315. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md022_test.rs +0 -0
  316. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md023_extended_test.rs +0 -0
  317. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md023_test.rs +0 -0
  318. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md024_test.rs +0 -0
  319. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md025_test.rs +0 -0
  320. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md026_test.rs +0 -0
  321. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md027_test.rs +0 -0
  322. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md028_test.rs +0 -0
  323. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md029_unicode_test.rs +0 -0
  324. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md030_test.rs +0 -0
  325. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md031_test.rs +0 -0
  326. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md032_test.rs +0 -0
  327. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md033_extended_test.rs +0 -0
  328. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md033_test.rs +0 -0
  329. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md034_ipv6_test.rs +0 -0
  330. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md034_test.rs +0 -0
  331. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md035_test.rs +0 -0
  332. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md037_test.rs +0 -0
  333. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md038_nested_backticks_test.rs +0 -0
  334. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md038_test.rs +0 -0
  335. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md039_test.rs +0 -0
  336. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md040_test.rs +0 -0
  337. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md041_test.rs +0 -0
  338. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md042_test.rs +0 -0
  339. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md043_test.rs +0 -0
  340. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md045_test.rs +0 -0
  341. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md047_test.rs +0 -0
  342. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md048_test.rs +0 -0
  343. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md049_test.rs +0 -0
  344. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md050_test.rs +0 -0
  345. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md051_test.rs +0 -0
  346. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md051_unicode_test.rs +0 -0
  347. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md052_test.rs +0 -0
  348. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md053_additional_test.rs +0 -0
  349. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md053_proptest.rs +0 -0
  350. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md053_test.rs +0 -0
  351. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md054_test.rs +0 -0
  352. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md054_unicode_test.rs +0 -0
  353. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md055_test.rs +0 -0
  354. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md056_test.rs +0 -0
  355. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md057_test.rs +0 -0
  356. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md058_test.rs +0 -0
  357. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/mod.rs +0 -0
  358. {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules_mod_test.rs +0 -0
  359. {rumdl-0.0.106 → rumdl-0.0.108}/tests/thread_safety_tests.rs +0 -0
  360. {rumdl-0.0.106 → rumdl-0.0.108}/tests/unicode_edge_case_tests.rs +0 -0
  361. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/blockquote_utils_test.rs +0 -0
  362. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/code_block_utils_extended_test.rs +0 -0
  363. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/code_block_utils_test.rs +0 -0
  364. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/core_utils_test.rs +0 -0
  365. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/front_matter_utils_test.rs +0 -0
  366. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/line_index_test.rs +0 -0
  367. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/mod.rs +0 -0
  368. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils_markdown_edge_cases.rs +0 -0
  369. {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils_tests.rs +0 -0
  370. {rumdl-0.0.106 → rumdl-0.0.108}/tests/vscode_extension_fixes.rs +0 -0
  371. {rumdl-0.0.106 → rumdl-0.0.108}/tests/vscode_test.rs +0 -0
  372. {rumdl-0.0.106 → rumdl-0.0.108}/tests/vscode_tests.rs +0 -0
@@ -43,4 +43,24 @@ default-filter = 'not test(/memory/) and not test(/stress/) and not test(/large/
43
43
  test-threads = "num-cpus"
44
44
 
45
45
  # Less verbose output
46
- status-level = "fail"
46
+ status-level = "fail"
47
+
48
+ # Ultra-fast profile for pre-commit hooks
49
+ [profile.pre-commit]
50
+
51
+ # Only run unit tests in lib, skip all integration tests and binaries
52
+ default-filter = 'package(rumdl) and kind(lib) and not test(/slow|stress|large|integration|comprehensive|cli|config|advanced|commonmark|consistency|performance|benchmark|parity/)'
53
+
54
+ # Maximum parallelism for speed
55
+ test-threads = "num-cpus"
56
+
57
+ # Minimal output for speed
58
+ status-level = "fail"
59
+ failure-output = "immediate"
60
+ success-output = "never"
61
+
62
+ # No retries to save time
63
+ retries = 0
64
+
65
+ # Fail fast on first failure
66
+ fail-fast = true
@@ -1,6 +1,10 @@
1
1
  # Pre-commit hooks for rumdl
2
- # Install with: pre-commit install
3
- # Run manually: pre-commit run --all-files
2
+ # Install with:
3
+ # pre-commit install # Install commit hooks
4
+ # pre-commit install --hook-type pre-push # Install push hooks
5
+ # Run manually:
6
+ # pre-commit run --all-files # Run commit hooks
7
+ # pre-commit run --hook-stage push --all-files # Run push hooks
4
8
 
5
9
  repos:
6
10
  # Rust formatting and linting
@@ -15,26 +19,19 @@ repos:
15
19
 
16
20
  - id: cargo-clippy
17
21
  name: cargo clippy
18
- entry: make lint
22
+ entry: make lint-fast
19
23
  language: system
20
24
  types: [rust]
21
25
  pass_filenames: false
22
26
 
23
27
  - id: cargo-test-quick
24
28
  name: cargo test (quick)
25
- entry: make test-quick
29
+ entry: make test-pre-commit
26
30
  language: system
27
31
  types: [rust]
28
32
  pass_filenames: false
29
33
  stages: [pre-commit]
30
34
 
31
- - id: cargo-check
32
- name: cargo check
33
- entry: cargo check --all-targets --all-features
34
- language: system
35
- types: [rust]
36
- pass_filenames: false
37
-
38
35
  # General file quality checks
39
36
  - repo: https://github.com/pre-commit/pre-commit-hooks
40
37
  rev: v4.6.0
@@ -57,3 +54,33 @@ repos:
57
54
  hooks:
58
55
  - id: rumdl
59
56
  exclude: ^(test_tmp|benchmark/test-data|docs/temp|CHANGELOG\.md)
57
+
58
+ # Pre-push hooks for comprehensive validation
59
+ - repo: local
60
+ hooks:
61
+ - id: cargo-test-full
62
+ name: cargo test (full suite)
63
+ entry: make test-push
64
+ language: system
65
+ types: [rust]
66
+ pass_filenames: false
67
+ stages: [push]
68
+ verbose: true
69
+
70
+ - id: cargo-lint-full
71
+ name: cargo clippy (all targets)
72
+ entry: make lint
73
+ language: system
74
+ types: [rust]
75
+ pass_filenames: false
76
+ stages: [push]
77
+ verbose: true
78
+
79
+ - id: cargo-doc-check
80
+ name: cargo doc (check)
81
+ entry: cargo doc --no-deps --all-features
82
+ language: system
83
+ types: [rust]
84
+ pass_filenames: false
85
+ stages: [push]
86
+ verbose: true
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.0.107] - 2025-08-06
11
+
12
+ ## [0.0.107] - 2025-08-06
13
+
14
+ ### Fixed
15
+ - MD036: Remove automatic fix to prevent document corruption when bold/italic text is used as image captions, labels, or warnings (#23)
16
+ - MD011: No longer flags patterns like `()[1]` inside inline code as reversed links (#19)
17
+ - MD052: No longer flags reference patterns inside HTML comments as undefined references (#20)
18
+
10
19
  ## [0.0.106] - 2025-08-05
11
20
 
12
21
  ### Changed
@@ -289,7 +298,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
289
298
 
290
299
  - Initial implementation of remaining rules for markdownlint parity
291
300
 
292
- [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.105...HEAD
301
+ [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.107...HEAD
302
+ [0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
303
+ [0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
293
304
  [0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
294
305
  [0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
295
306
  [0.0.104]: https://github.com/rvben/rumdl/compare/v0.0.103...v0.0.104
@@ -49,9 +49,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
49
49
 
50
50
  [[package]]
51
51
  name = "anstream"
52
- version = "0.6.19"
52
+ version = "0.6.20"
53
53
  source = "registry+https://github.com/rust-lang/crates.io-index"
54
- checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933"
54
+ checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192"
55
55
  dependencies = [
56
56
  "anstyle",
57
57
  "anstyle-parse",
@@ -79,22 +79,22 @@ dependencies = [
79
79
 
80
80
  [[package]]
81
81
  name = "anstyle-query"
82
- version = "1.1.3"
82
+ version = "1.1.4"
83
83
  source = "registry+https://github.com/rust-lang/crates.io-index"
84
- checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9"
84
+ checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2"
85
85
  dependencies = [
86
- "windows-sys 0.59.0",
86
+ "windows-sys 0.60.2",
87
87
  ]
88
88
 
89
89
  [[package]]
90
90
  name = "anstyle-wincon"
91
- version = "3.0.9"
91
+ version = "3.0.10"
92
92
  source = "registry+https://github.com/rust-lang/crates.io-index"
93
- checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882"
93
+ checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a"
94
94
  dependencies = [
95
95
  "anstyle",
96
96
  "once_cell_polyfill",
97
- "windows-sys 0.59.0",
97
+ "windows-sys 0.60.2",
98
98
  ]
99
99
 
100
100
  [[package]]
@@ -277,9 +277,9 @@ dependencies = [
277
277
 
278
278
  [[package]]
279
279
  name = "clap"
280
- version = "4.5.42"
280
+ version = "4.5.43"
281
281
  source = "registry+https://github.com/rust-lang/crates.io-index"
282
- checksum = "ed87a9d530bb41a67537289bafcac159cb3ee28460e0a4571123d2a778a6a882"
282
+ checksum = "50fd97c9dc2399518aa331917ac6f274280ec5eb34e555dd291899745c48ec6f"
283
283
  dependencies = [
284
284
  "clap_builder",
285
285
  "clap_derive",
@@ -287,9 +287,9 @@ dependencies = [
287
287
 
288
288
  [[package]]
289
289
  name = "clap_builder"
290
- version = "4.5.42"
290
+ version = "4.5.43"
291
291
  source = "registry+https://github.com/rust-lang/crates.io-index"
292
- checksum = "64f4f3f3c77c94aff3c7e9aac9a2ca1974a5adf392a8bb751e827d6d127ab966"
292
+ checksum = "c35b5830294e1fa0462034af85cc95225a4cb07092c088c55bda3147cfcd8f65"
293
293
  dependencies = [
294
294
  "anstream",
295
295
  "anstyle",
@@ -1493,7 +1493,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
1493
1493
 
1494
1494
  [[package]]
1495
1495
  name = "rumdl"
1496
- version = "0.0.106"
1496
+ version = "0.0.108"
1497
1497
  dependencies = [
1498
1498
  "anyhow",
1499
1499
  "assert_cmd",
@@ -2527,9 +2527,9 @@ dependencies = [
2527
2527
 
2528
2528
  [[package]]
2529
2529
  name = "zerovec"
2530
- version = "0.11.3"
2530
+ version = "0.11.4"
2531
2531
  source = "registry+https://github.com/rust-lang/crates.io-index"
2532
- checksum = "bdbb9122ea75b11bf96e7492afb723e8a7fbe12c67417aa95e7e3d18144d37cd"
2532
+ checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
2533
2533
  dependencies = [
2534
2534
  "yoke",
2535
2535
  "zerofrom",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.106"
3
+ version = "0.0.108"
4
4
  edition = "2024"
5
5
  rust-version = "1.88.0"
6
6
  description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
@@ -69,6 +69,13 @@ test-nextest:
69
69
  test-quick:
70
70
  cargo nextest run --profile quick
71
71
 
72
+ test-pre-commit:
73
+ cargo nextest run --profile pre-commit
74
+
75
+ test-push:
76
+ @echo "Running full test suite (this may take a few minutes)..."
77
+ cargo nextest run
78
+
72
79
  test-ci:
73
80
  cargo nextest run --profile ci
74
81
 
@@ -81,7 +88,10 @@ fmt:
81
88
  cargo fix --allow-dirty --allow-staged
82
89
 
83
90
  lint:
84
- cargo clippy --all-targets --all-features -- -D warnings
91
+ CARGO_INCREMENTAL=1 cargo clippy --all-targets --all-features -- -D warnings
92
+
93
+ lint-fast:
94
+ CARGO_INCREMENTAL=1 cargo clippy --workspace --lib --bins -- -D warnings
85
95
 
86
96
  check:
87
97
  cargo check --all-targets --all-features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.106
3
+ Version: 0.0.108
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -1,8 +1,10 @@
1
1
  # MD036 - Use real headings, not just bold text
2
2
 
3
+ > **Note:** This rule does not provide automatic fixes because it cannot reliably determine user intent. Bold text on its own line has many legitimate uses (image captions, labels, warnings, etc.).
4
+
3
5
  ## What this rule does
4
6
 
5
- Detects when bold or italic text is used as a standalone heading and converts it to proper heading syntax.
7
+ Detects when bold or italic text is used as a standalone heading.
6
8
 
7
9
  ## Why this matters
8
10
 
@@ -43,9 +45,9 @@ Using emphasis as headings:
43
45
  **Configuration:**
44
46
  ```
45
47
 
46
- ### 🔧 Fixed
48
+ ### 🔧 Manual Fix Required
47
49
 
48
- Converted to proper headings:
50
+ These should be manually converted to proper headings:
49
51
 
50
52
  ```markdown
51
53
  ## This looks like a heading
@@ -57,28 +59,29 @@ Converted to proper headings:
57
59
  ## Configuration
58
60
  ```
59
61
 
62
+ **Note:** rumdl will detect these issues but won't automatically fix them. You need to manually decide if the emphasized text should be a heading.
63
+
60
64
  <!-- rumdl-enable MD036 -->
61
65
 
62
66
  ## Configuration
63
67
 
64
- ```yaml
65
- MD036:
66
- punctuation: ".,;:!?" # Characters to remove from heading ends
68
+ ```toml
69
+ # .rumdl.toml
70
+ [MD036]
71
+ punctuation = ".,;:!?" # Configure punctuation checking
67
72
  ```
68
73
 
69
74
  ### Options
70
75
 
71
- - `punctuation`: String of punctuation marks to remove when converting (default: `".,;:!?"`)
72
- - Set to `""` to keep all punctuation
76
+ - `punctuation`: String of punctuation marks that, when found at the end of emphasized text, prevent it from being flagged (default: `".,;:!?"`)
77
+ - Set to `""` to flag all emphasized lines regardless of punctuation
73
78
  - Customize to remove only specific marks
74
79
 
75
80
  ## Automatic fixes
76
81
 
77
- This rule will:
78
- - Convert standalone bold/italic lines to proper headings
79
- - Remove trailing punctuation based on your configuration
80
- - Choose appropriate heading level (## for bold, # for italic)
81
- - Preserve common labels like "Table of Contents" as-is
82
+ This rule does **not** provide automatic fixes. Converting bold or italic text to headings is too risky as it can corrupt documents. For example, bold text is often used for image captions, labels, or other legitimate emphasis that should not be converted to headings.
83
+
84
+ Users should manually review each warning and decide whether the emphasized text should be converted to a heading.
82
85
 
83
86
  ## Learn more
84
87
 
@@ -0,0 +1,42 @@
1
+ use rumdl::rules::front_matter_utils::FrontMatterUtils;
2
+ use std::env;
3
+ use std::fs;
4
+
5
+ fn main() {
6
+ let args: Vec<String> = env::args().collect();
7
+ let content = if args.len() > 1 {
8
+ fs::read_to_string(&args[1]).expect("Failed to read file")
9
+ } else {
10
+ r#"+++
11
+ title = "My Post"
12
+ tags = ["example", "test"]
13
+ +++
14
+
15
+ # Content
16
+
17
+ [missing] reference should be flagged."#
18
+ .to_string()
19
+ };
20
+
21
+ println!("Content:");
22
+ for (i, line) in content.lines().enumerate() {
23
+ println!("Line {}: {}", i + 1, line);
24
+ }
25
+ println!();
26
+
27
+ let line_count = content.lines().count();
28
+
29
+ // Test with 0-based indexing (what the function actually uses)
30
+ println!("Testing is_in_front_matter with 0-based indexing:");
31
+ for i in 0..line_count {
32
+ let in_frontmatter = FrontMatterUtils::is_in_front_matter(&content, i);
33
+ println!("Line {} (0-based={}): in_frontmatter={}", i + 1, i, in_frontmatter);
34
+ }
35
+
36
+ // Test also with 1-based indexing (what we pass from MD052)
37
+ println!("\nTesting is_in_front_matter with 1-based indexing:");
38
+ for i in 1..=line_count {
39
+ let in_frontmatter = FrontMatterUtils::is_in_front_matter(&content, i);
40
+ println!("Line {i}: in_frontmatter={in_frontmatter}");
41
+ }
42
+ }
@@ -862,6 +862,46 @@ local_time = 07:32:00
862
862
  // Note: local_date and local_time might not be parsed by the current implementation
863
863
  }
864
864
  }
865
+
866
+ #[test]
867
+ fn test_default_config_passes_validation() {
868
+ use crate::rules;
869
+
870
+ let temp_dir = tempdir().unwrap();
871
+ let config_path = temp_dir.path().join(".rumdl.toml");
872
+ let config_path_str = config_path.to_str().unwrap();
873
+
874
+ // Create the default config using the same function that `rumdl init` uses
875
+ create_default_config(config_path_str).unwrap();
876
+
877
+ // Load it back as a SourcedConfig
878
+ let sourced =
879
+ SourcedConfig::load(Some(config_path_str), None).expect("Default config should load successfully");
880
+
881
+ // Create the rule registry
882
+ let all_rules = rules::all_rules(&Config::default());
883
+ let registry = RuleRegistry::from_rules(&all_rules);
884
+
885
+ // Validate the config
886
+ let warnings = validate_config_sourced(&sourced, &registry);
887
+
888
+ // The default config should have no warnings
889
+ if !warnings.is_empty() {
890
+ for warning in &warnings {
891
+ eprintln!("Config validation warning: {}", warning.message);
892
+ if let Some(rule) = &warning.rule {
893
+ eprintln!(" Rule: {rule}");
894
+ }
895
+ if let Some(key) = &warning.key {
896
+ eprintln!(" Key: {key}");
897
+ }
898
+ }
899
+ }
900
+ assert!(
901
+ warnings.is_empty(),
902
+ "Default config from rumdl init should pass validation without warnings"
903
+ );
904
+ }
865
905
  }
866
906
 
867
907
  #[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -1,6 +1,5 @@
1
1
  pub mod config;
2
2
  pub mod exit_codes;
3
- pub mod init;
4
3
  pub mod inline_config;
5
4
  pub mod lint_context;
6
5
  pub mod lsp;
@@ -190,8 +189,18 @@ pub fn lint(content: &str, rules: &[Box<dyn Rule>], _verbose: bool) -> LintResul
190
189
  let filtered_warnings: Vec<_> = rule_warnings
191
190
  .into_iter()
192
191
  .filter(|warning| {
192
+ // Use the warning's rule_name if available, otherwise use the rule's name
193
+ let rule_name_to_check = warning.rule_name.unwrap_or(rule.name());
194
+
195
+ // Extract the base rule name for sub-rules like "MD029-style" -> "MD029"
196
+ let base_rule_name = if let Some(dash_pos) = rule_name_to_check.find('-') {
197
+ &rule_name_to_check[..dash_pos]
198
+ } else {
199
+ rule_name_to_check
200
+ };
201
+
193
202
  !inline_config.is_rule_disabled(
194
- rule.name(),
203
+ base_rule_name,
195
204
  warning.line, // Already 1-indexed
196
205
  )
197
206
  })
@@ -204,18 +204,18 @@ impl Rule for MD011NoReversedLinks {
204
204
  let mut byte_pos = 0;
205
205
 
206
206
  for (line_num, line) in content.lines().enumerate() {
207
- // Skip if this line is in a code block
208
- if ctx.is_in_code_block_or_span(byte_pos) {
209
- byte_pos += line.len() + 1;
210
- continue;
211
- }
212
-
213
207
  // Part 1: Check for existing perfectly formed reversed links
214
208
  for cap in REVERSED_LINK_CHECK_REGEX.captures_iter(line) {
215
209
  let match_obj = cap.get(0).unwrap();
216
210
  let match_start = match_obj.start();
217
211
  let match_end = match_obj.end();
218
212
 
213
+ // Check if this specific match is within a code block or inline code span
214
+ let match_byte_pos = byte_pos + match_start;
215
+ if ctx.is_in_code_block_or_span(match_byte_pos) {
216
+ continue;
217
+ }
218
+
219
219
  // Check if the match contains escaped brackets or parentheses
220
220
  let match_text = match_obj.as_str();
221
221
 
@@ -277,6 +277,12 @@ impl Rule for MD011NoReversedLinks {
277
277
  // Part 2: Check for malformed link attempts where user intent is clear
278
278
  let malformed_attempts = self.detect_malformed_link_attempts(line);
279
279
  for (start, len, url, text) in malformed_attempts {
280
+ // Check if this specific match is within a code block or inline code span
281
+ let match_byte_pos = byte_pos + start;
282
+ if ctx.is_in_code_block_or_span(match_byte_pos) {
283
+ continue;
284
+ }
285
+
280
286
  // Calculate precise character range for the malformed syntax
281
287
  let (start_line, start_col, end_line, end_col) = calculate_match_range(line_num + 1, line, start, len);
282
288
 
@@ -593,4 +599,45 @@ But this (https://example.com)[reversed link] should be flagged."#;
593
599
  let result = rule.check(&ctx).unwrap();
594
600
  assert_eq!(result.len(), 1, "Should still flag URLs with nested parentheses");
595
601
  }
602
+
603
+ #[test]
604
+ fn test_inline_code_patterns() {
605
+ // Test for issue #19 - MD011 should not flag patterns inside inline code
606
+ let rule = MD011NoReversedLinks;
607
+
608
+ // Test the exact case from issue #19
609
+ let content = "I find `inspect.stack()[1].frame` a lot easier to understand (or at least guess about) at a glance than `inspect.stack()[1][0]`.";
610
+ let ctx = LintContext::new(content);
611
+ let result = rule.check(&ctx).unwrap();
612
+ assert_eq!(result.len(), 0, "Should not flag ()[1] patterns inside inline code");
613
+
614
+ // Test other patterns that might look like reversed links in code
615
+ let content = "Use `array()[0]` or `func()[1]` to access elements.";
616
+ let ctx = LintContext::new(content);
617
+ let result = rule.check(&ctx).unwrap();
618
+ assert_eq!(result.len(), 0, "Should not flag array access patterns in inline code");
619
+
620
+ // Test that actual reversed links outside code are still caught
621
+ let content = "Check out (https://example.com)[this link] and use `array()[1]`.";
622
+ let ctx = LintContext::new(content);
623
+ let result = rule.check(&ctx).unwrap();
624
+ assert_eq!(result.len(), 1, "Should flag actual reversed link but not code pattern");
625
+ assert!(result[0].message.contains("Reversed link syntax"));
626
+
627
+ // Test mixed scenario with code blocks
628
+ let content = r#"
629
+ Here's some code: `func()[1]` and `other()[2]`.
630
+
631
+ But this is wrong: (https://example.com)[Click here]
632
+
633
+ ```python
634
+ # This should not be flagged
635
+ result = inspect.stack()[1]
636
+ ```
637
+ "#;
638
+ let ctx = LintContext::new(content);
639
+ let result = rule.check(&ctx).unwrap();
640
+ assert_eq!(result.len(), 1, "Should only flag the actual reversed link");
641
+ assert_eq!(result[0].line, 4, "Should flag the reversed link on line 4");
642
+ }
596
643
  }