rumdl 0.0.105__tar.gz → 0.0.107__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 (371) hide show
  1. {rumdl-0.0.105 → rumdl-0.0.107}/CHANGELOG.md +33 -1
  2. {rumdl-0.0.105 → rumdl-0.0.107}/Cargo.lock +11 -11
  3. {rumdl-0.0.105 → rumdl-0.0.107}/Cargo.toml +28 -1
  4. {rumdl-0.0.105 → rumdl-0.0.107}/PKG-INFO +1 -1
  5. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md036.md +16 -13
  6. {rumdl-0.0.105 → rumdl-0.0.107}/src/config.rs +40 -0
  7. {rumdl-0.0.105 → rumdl-0.0.107}/src/lib.rs +11 -2
  8. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md011_no_reversed_links.rs +53 -6
  9. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md029_ordered_list_prefix.rs +125 -147
  10. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md036_no_emphasis_only_first.rs +64 -99
  11. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md046_code_block_style.rs +130 -1
  12. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md052_reference_links_images.rs +77 -0
  13. {rumdl-0.0.105 → rumdl-0.0.107}/src/vscode.rs +31 -6
  14. rumdl-0.0.107/tests/cli_duplication_test.rs +58 -0
  15. {rumdl-0.0.105 → rumdl-0.0.107}/tests/init_tests.rs +27 -50
  16. rumdl-0.0.107/tests/integration_tests.rs +29 -0
  17. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/emphasis_edge_cases_test.rs +2 -5
  18. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md029_test.rs +71 -3
  19. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md036_test.rs +19 -23
  20. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md046_test.rs +123 -0
  21. rumdl-0.0.107/tests/vscode_windows_comprehensive_test.rs +263 -0
  22. rumdl-0.0.107/tests/vscode_windows_test.rs +113 -0
  23. rumdl-0.0.105/src/init.rs +0 -337
  24. rumdl-0.0.105/tests/cli_duplication_test.rs +0 -39
  25. rumdl-0.0.105/tests/integration_tests.rs +0 -18
  26. {rumdl-0.0.105 → rumdl-0.0.107}/.config/nextest.toml +0 -0
  27. {rumdl-0.0.105 → rumdl-0.0.107}/.mise.toml +0 -0
  28. {rumdl-0.0.105 → rumdl-0.0.107}/.pre-commit-config.yaml +0 -0
  29. {rumdl-0.0.105 → rumdl-0.0.107}/.rumdl.toml +0 -0
  30. {rumdl-0.0.105 → rumdl-0.0.107}/.rustfmt.toml +0 -0
  31. {rumdl-0.0.105 → rumdl-0.0.107}/LICENSE +0 -0
  32. {rumdl-0.0.105 → rumdl-0.0.107}/MANIFEST.in +0 -0
  33. {rumdl-0.0.105 → rumdl-0.0.107}/Makefile +0 -0
  34. {rumdl-0.0.105 → rumdl-0.0.107}/README.md +0 -0
  35. {rumdl-0.0.105 → rumdl-0.0.107}/assets/logo.png +0 -0
  36. {rumdl-0.0.105 → rumdl-0.0.107}/benches/fix_performance.rs +0 -0
  37. {rumdl-0.0.105 → rumdl-0.0.107}/benches/range_performance.rs +0 -0
  38. {rumdl-0.0.105 → rumdl-0.0.107}/benches/range_utils_benchmark.rs +0 -0
  39. {rumdl-0.0.105 → rumdl-0.0.107}/benches/rule_performance.rs +0 -0
  40. {rumdl-0.0.105 → rumdl-0.0.107}/benches/simple_fix_bench.rs +0 -0
  41. {rumdl-0.0.105/src → rumdl-0.0.107/benchmark}/bin/bench_lint_context.rs +0 -0
  42. {rumdl-0.0.105/src → rumdl-0.0.107/benchmark}/bin/benchmark.rs +0 -0
  43. {rumdl-0.0.105/src → rumdl-0.0.107/benchmark}/bin/benchmark_rule.rs +0 -0
  44. {rumdl-0.0.105/src → rumdl-0.0.107/benchmark}/bin/file_parallel_benchmark.rs +0 -0
  45. {rumdl-0.0.105/src → rumdl-0.0.107/benchmark}/bin/measure_code_span_performance.rs +0 -0
  46. {rumdl-0.0.105 → rumdl-0.0.107}/docs/RULES.md +0 -0
  47. {rumdl-0.0.105 → rumdl-0.0.107}/docs/global-settings.md +0 -0
  48. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md001.md +0 -0
  49. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md002.md +0 -0
  50. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md003.md +0 -0
  51. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md004.md +0 -0
  52. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md005.md +0 -0
  53. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md006.md +0 -0
  54. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md007.md +0 -0
  55. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md009.md +0 -0
  56. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md010.md +0 -0
  57. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md011.md +0 -0
  58. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md012.md +0 -0
  59. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md013.md +0 -0
  60. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md014.md +0 -0
  61. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md018.md +0 -0
  62. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md019.md +0 -0
  63. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md020.md +0 -0
  64. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md021.md +0 -0
  65. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md022.md +0 -0
  66. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md023.md +0 -0
  67. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md024.md +0 -0
  68. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md025.md +0 -0
  69. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md026.md +0 -0
  70. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md027.md +0 -0
  71. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md028.md +0 -0
  72. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md029.md +0 -0
  73. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md030.md +0 -0
  74. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md031.md +0 -0
  75. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md032.md +0 -0
  76. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md033.md +0 -0
  77. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md034.md +0 -0
  78. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md035.md +0 -0
  79. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md037.md +0 -0
  80. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md038.md +0 -0
  81. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md039.md +0 -0
  82. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md040.md +0 -0
  83. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md041.md +0 -0
  84. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md042.md +0 -0
  85. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md043.md +0 -0
  86. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md044.md +0 -0
  87. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md045.md +0 -0
  88. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md046.md +0 -0
  89. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md047.md +0 -0
  90. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md048.md +0 -0
  91. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md049.md +0 -0
  92. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md050.md +0 -0
  93. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md051.md +0 -0
  94. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md052.md +0 -0
  95. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md053.md +0 -0
  96. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md054.md +0 -0
  97. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md055.md +0 -0
  98. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md056.md +0 -0
  99. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md057.md +0 -0
  100. {rumdl-0.0.105 → rumdl-0.0.107}/docs/md058.md +0 -0
  101. {rumdl-0.0.105 → rumdl-0.0.107}/docs/vscode-extension.md +0 -0
  102. {rumdl-0.0.105 → rumdl-0.0.107}/parity_check.py +0 -0
  103. {rumdl-0.0.105 → rumdl-0.0.107}/pyproject.toml +0 -0
  104. {rumdl-0.0.105 → rumdl-0.0.107}/python/MANIFEST.in +0 -0
  105. {rumdl-0.0.105 → rumdl-0.0.107}/python/PYTHON-README.md +0 -0
  106. {rumdl-0.0.105 → rumdl-0.0.107}/python/rumdl/__init__.py +0 -0
  107. {rumdl-0.0.105 → rumdl-0.0.107}/python/rumdl/__main__.py +0 -0
  108. {rumdl-0.0.105 → rumdl-0.0.107}/python/rumdl/py.typed +0 -0
  109. {rumdl-0.0.105 → rumdl-0.0.107}/rumdl.toml.example +0 -0
  110. {rumdl-0.0.105 → rumdl-0.0.107}/rust-toolchain.toml +0 -0
  111. {rumdl-0.0.105 → rumdl-0.0.107}/scripts/extract-changelog.sh +0 -0
  112. {rumdl-0.0.105 → rumdl-0.0.107}/scripts/prepare-release.sh +0 -0
  113. {rumdl-0.0.105 → rumdl-0.0.107}/scripts/setup-pre-commit.sh +0 -0
  114. {rumdl-0.0.105 → rumdl-0.0.107}/scripts/update-pre-commit-docs.sh +0 -0
  115. {rumdl-0.0.105 → rumdl-0.0.107}/src/exit_codes.rs +0 -0
  116. {rumdl-0.0.105 → rumdl-0.0.107}/src/inline_config.rs +0 -0
  117. {rumdl-0.0.105 → rumdl-0.0.107}/src/lint_context.rs +0 -0
  118. {rumdl-0.0.105 → rumdl-0.0.107}/src/lsp/mod.rs +0 -0
  119. {rumdl-0.0.105 → rumdl-0.0.107}/src/lsp/server.rs +0 -0
  120. {rumdl-0.0.105 → rumdl-0.0.107}/src/lsp/types.rs +0 -0
  121. {rumdl-0.0.105 → rumdl-0.0.107}/src/main.rs +0 -0
  122. {rumdl-0.0.105 → rumdl-0.0.107}/src/markdownlint_config.rs +0 -0
  123. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/azure.rs +0 -0
  124. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/concise.rs +0 -0
  125. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/github.rs +0 -0
  126. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/gitlab.rs +0 -0
  127. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/grouped.rs +0 -0
  128. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/json.rs +0 -0
  129. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/json_lines.rs +0 -0
  130. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/junit.rs +0 -0
  131. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/mod.rs +0 -0
  132. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/pylint.rs +0 -0
  133. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/sarif.rs +0 -0
  134. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/formatters/text.rs +0 -0
  135. {rumdl-0.0.105 → rumdl-0.0.107}/src/output/mod.rs +0 -0
  136. {rumdl-0.0.105 → rumdl-0.0.107}/src/parallel.rs +0 -0
  137. {rumdl-0.0.105 → rumdl-0.0.107}/src/performance.rs +0 -0
  138. {rumdl-0.0.105 → rumdl-0.0.107}/src/profiling.rs +0 -0
  139. {rumdl-0.0.105 → rumdl-0.0.107}/src/python.rs +0 -0
  140. {rumdl-0.0.105 → rumdl-0.0.107}/src/rule.rs +0 -0
  141. {rumdl-0.0.105 → rumdl-0.0.107}/src/rule_config.rs +0 -0
  142. {rumdl-0.0.105 → rumdl-0.0.107}/src/rule_config_serde.rs +0 -0
  143. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/blockquote_utils.rs +0 -0
  144. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/code_block_utils.rs +0 -0
  145. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/code_fence_utils.rs +0 -0
  146. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/emphasis_style.rs +0 -0
  147. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/front_matter_utils.rs +0 -0
  148. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/heading_utils.rs +0 -0
  149. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/list_utils.rs +0 -0
  150. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md001_heading_increment.rs +0 -0
  151. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  152. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md002_first_heading_h1.rs +0 -0
  153. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md003_heading_style/md003_config.rs +0 -0
  154. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md003_heading_style.rs +0 -0
  155. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  156. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md004_unordered_list_style.rs +0 -0
  157. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md005_list_indent.rs +0 -0
  158. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md006_start_bullets.rs +0 -0
  159. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md007_ul_indent/md007_config.rs +0 -0
  160. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md007_ul_indent.rs +0 -0
  161. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  162. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md009_trailing_spaces.rs +0 -0
  163. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  164. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md010_no_hard_tabs.rs +0 -0
  165. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
  166. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md012_no_multiple_blanks.rs +0 -0
  167. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md013_line_length/md013_config.rs +0 -0
  168. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md013_line_length.rs +0 -0
  169. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  170. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md014_commands_show_output.rs +0 -0
  171. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md018_no_missing_space_atx.rs +0 -0
  172. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  173. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  174. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  175. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  176. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md022_blanks_around_headings.rs +0 -0
  177. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md023_heading_start_left.rs +0 -0
  178. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  179. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md024_no_duplicate_heading.rs +0 -0
  180. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md025_single_title/md025_config.rs +0 -0
  181. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md025_single_title.rs +0 -0
  182. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  183. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  184. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  185. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  186. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
  187. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  188. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md030_list_marker_space.rs +0 -0
  189. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md031_blanks_around_fences.rs +0 -0
  190. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md032_blanks_around_lists.rs +0 -0
  191. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  192. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md033_no_inline_html.rs +0 -0
  193. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md034_no_bare_urls.rs +0 -0
  194. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md035_hr_style/md035_config.rs +0 -0
  195. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md035_hr_style.rs +0 -0
  196. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  197. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  198. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md038_no_space_in_code.rs +0 -0
  199. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md039_no_space_in_links.rs +0 -0
  200. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md040_fenced_code_language.rs +0 -0
  201. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md041_first_line_heading.rs +0 -0
  202. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md042_no_empty_links.rs +0 -0
  203. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md043_required_headings.rs +0 -0
  204. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md044_proper_names/md044_config.rs +0 -0
  205. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md044_proper_names.rs +0 -0
  206. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  207. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md045_no_alt_text.rs +0 -0
  208. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  209. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md047_single_trailing_newline.rs +0 -0
  210. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  211. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md048_code_fence_style.rs +0 -0
  212. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  213. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md049_emphasis_style.rs +0 -0
  214. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md050_strong_style/md050_config.rs +0 -0
  215. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md050_strong_style.rs +0 -0
  216. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md051_link_fragments.rs +0 -0
  217. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  218. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  219. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md054_link_image_style.rs +0 -0
  220. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  221. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md055_table_pipe_style.rs +0 -0
  222. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md056_table_column_count.rs +0 -0
  223. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  224. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md057_existing_relative_links.rs +0 -0
  225. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/md058_blanks_around_tables.rs +0 -0
  226. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/mod.rs +0 -0
  227. {rumdl-0.0.105 → rumdl-0.0.107}/src/rules/strong_style.rs +0 -0
  228. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/ast_utils.rs +0 -0
  229. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/code_block_utils.rs +0 -0
  230. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/document_structure.rs +0 -0
  231. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/early_returns.rs +0 -0
  232. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/element_cache.rs +0 -0
  233. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/emphasis_utils.rs +0 -0
  234. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/fix_utils.rs +0 -0
  235. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/markdown_elements.rs +0 -0
  236. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/mod.rs +0 -0
  237. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/range_utils.rs +0 -0
  238. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/regex_cache.rs +0 -0
  239. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/string_interner.rs +0 -0
  240. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/table_utils.rs +0 -0
  241. {rumdl-0.0.105 → rumdl-0.0.107}/src/utils/text_reflow.rs +0 -0
  242. {rumdl-0.0.105 → rumdl-0.0.107}/tests/advanced_integration_tests.rs +0 -0
  243. {rumdl-0.0.105 → rumdl-0.0.107}/tests/character_ranges/additional_tests.rs +0 -0
  244. {rumdl-0.0.105 → rumdl-0.0.107}/tests/character_ranges/basic_tests.rs +0 -0
  245. {rumdl-0.0.105 → rumdl-0.0.107}/tests/character_ranges/comprehensive_tests.rs +0 -0
  246. {rumdl-0.0.105 → rumdl-0.0.107}/tests/character_ranges/extended_tests.rs +0 -0
  247. {rumdl-0.0.105 → rumdl-0.0.107}/tests/character_ranges/mod.rs +0 -0
  248. {rumdl-0.0.105 → rumdl-0.0.107}/tests/character_ranges/unicode_utils.rs +0 -0
  249. {rumdl-0.0.105 → rumdl-0.0.107}/tests/cli_explain_test.rs +0 -0
  250. {rumdl-0.0.105 → rumdl-0.0.107}/tests/cli_flag_precedence_test.rs +0 -0
  251. {rumdl-0.0.105 → rumdl-0.0.107}/tests/cli_integration_tests.rs +0 -0
  252. {rumdl-0.0.105 → rumdl-0.0.107}/tests/cli_lsp_fix_consistency.rs +0 -0
  253. {rumdl-0.0.105 → rumdl-0.0.107}/tests/cli_statistics_test.rs +0 -0
  254. {rumdl-0.0.105 → rumdl-0.0.107}/tests/commonmark_compliance_tests.rs +0 -0
  255. {rumdl-0.0.105 → rumdl-0.0.107}/tests/comprehensive_integration_tests.rs +0 -0
  256. {rumdl-0.0.105 → rumdl-0.0.107}/tests/comprehensive_output_format_tests.rs +0 -0
  257. {rumdl-0.0.105 → rumdl-0.0.107}/tests/config_application_tests.rs +0 -0
  258. {rumdl-0.0.105 → rumdl-0.0.107}/tests/config_file_command_test.rs +0 -0
  259. {rumdl-0.0.105 → rumdl-0.0.107}/tests/config_tests.rs +0 -0
  260. {rumdl-0.0.105 → rumdl-0.0.107}/tests/configuration_inheritance_tests.rs +0 -0
  261. {rumdl-0.0.105 → rumdl-0.0.107}/tests/consistency_regression_tests.rs +0 -0
  262. {rumdl-0.0.105 → rumdl-0.0.107}/tests/cross_platform_compatibility_tests.rs +0 -0
  263. {rumdl-0.0.105 → rumdl-0.0.107}/tests/deeply_nested_lists_performance_test.rs +0 -0
  264. {rumdl-0.0.105 → rumdl-0.0.107}/tests/escaped_brackets_test.rs +0 -0
  265. {rumdl-0.0.105 → rumdl-0.0.107}/tests/final_confidence_assessment.rs +0 -0
  266. {rumdl-0.0.105 → rumdl-0.0.107}/tests/init_command_test.rs +0 -0
  267. {rumdl-0.0.105 → rumdl-0.0.107}/tests/inline_config_blocks_test.rs +0 -0
  268. {rumdl-0.0.105 → rumdl-0.0.107}/tests/inline_config_test.rs +0 -0
  269. {rumdl-0.0.105 → rumdl-0.0.107}/tests/json_output_test.rs +0 -0
  270. {rumdl-0.0.105 → rumdl-0.0.107}/tests/lib.rs +0 -0
  271. {rumdl-0.0.105 → rumdl-0.0.107}/tests/lsp_editor_integration_tests.rs +0 -0
  272. {rumdl-0.0.105 → rumdl-0.0.107}/tests/lsp_integration_tests.rs +0 -0
  273. {rumdl-0.0.105 → rumdl-0.0.107}/tests/lsp_memory_leak_tests.rs +0 -0
  274. {rumdl-0.0.105 → rumdl-0.0.107}/tests/lsp_tests.rs +0 -0
  275. {rumdl-0.0.105 → rumdl-0.0.107}/tests/malformed_markdown_stress_tests.rs +0 -0
  276. {rumdl-0.0.105 → rumdl-0.0.107}/tests/markdownlint_cli_integration.rs +0 -0
  277. {rumdl-0.0.105 → rumdl-0.0.107}/tests/markdownlint_config_test.rs +0 -0
  278. {rumdl-0.0.105 → rumdl-0.0.107}/tests/markdownlintignore_test.rs +0 -0
  279. {rumdl-0.0.105 → rumdl-0.0.107}/tests/md013_reflow_integration_test.rs +0 -0
  280. {rumdl-0.0.105 → rumdl-0.0.107}/tests/nested_code_block_test.rs +0 -0
  281. {rumdl-0.0.105 → rumdl-0.0.107}/tests/output_format_integration_tests.rs +0 -0
  282. {rumdl-0.0.105 → rumdl-0.0.107}/tests/output_format_tests.rs +0 -0
  283. {rumdl-0.0.105 → rumdl-0.0.107}/tests/perf_check.rs +0 -0
  284. {rumdl-0.0.105 → rumdl-0.0.107}/tests/performance_validation_tests.rs +0 -0
  285. {rumdl-0.0.105 → rumdl-0.0.107}/tests/pyproject_config_tests.rs +0 -0
  286. {rumdl-0.0.105 → rumdl-0.0.107}/tests/python_bindings_test.rs +0 -0
  287. {rumdl-0.0.105 → rumdl-0.0.107}/tests/real_world_repository_tests.rs +0 -0
  288. {rumdl-0.0.105 → rumdl-0.0.107}/tests/regression_prevention_tests.rs +0 -0
  289. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/heading_edge_cases_test.rs +0 -0
  290. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/inline_content_edge_cases_test.rs +0 -0
  291. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/link_edge_cases_test.rs +0 -0
  292. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/list_rules_integration_test.rs +0 -0
  293. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md001_test.rs +0 -0
  294. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md001_unicode_test.rs +0 -0
  295. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md002_test.rs +0 -0
  296. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md003_test.rs +0 -0
  297. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md004_test.rs +0 -0
  298. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md005_test.rs +0 -0
  299. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md005_unicode_test.rs +0 -0
  300. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md006_test.rs +0 -0
  301. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md006_unicode_test.rs +0 -0
  302. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md007_test.rs +0 -0
  303. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md009_test.rs +0 -0
  304. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md010_test.rs +0 -0
  305. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md011_test.rs +0 -0
  306. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md012_test.rs +0 -0
  307. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md013_test.rs +0 -0
  308. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md014_test.rs +0 -0
  309. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md018_test.rs +0 -0
  310. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md019_test.rs +0 -0
  311. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md020_test.rs +0 -0
  312. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md021_test.rs +0 -0
  313. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md022_test.rs +0 -0
  314. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md023_extended_test.rs +0 -0
  315. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md023_test.rs +0 -0
  316. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md024_test.rs +0 -0
  317. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md025_test.rs +0 -0
  318. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md026_test.rs +0 -0
  319. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md027_test.rs +0 -0
  320. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md028_test.rs +0 -0
  321. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md029_unicode_test.rs +0 -0
  322. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md030_test.rs +0 -0
  323. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md031_test.rs +0 -0
  324. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md032_test.rs +0 -0
  325. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md033_extended_test.rs +0 -0
  326. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md033_test.rs +0 -0
  327. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md034_ipv6_test.rs +0 -0
  328. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md034_test.rs +0 -0
  329. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md035_test.rs +0 -0
  330. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md037_test.rs +0 -0
  331. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md038_nested_backticks_test.rs +0 -0
  332. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md038_test.rs +0 -0
  333. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md039_test.rs +0 -0
  334. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md040_test.rs +0 -0
  335. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md041_test.rs +0 -0
  336. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md042_test.rs +0 -0
  337. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md043_test.rs +0 -0
  338. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md044_test.rs +0 -0
  339. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md045_test.rs +0 -0
  340. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md047_test.rs +0 -0
  341. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md048_test.rs +0 -0
  342. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md049_test.rs +0 -0
  343. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md050_test.rs +0 -0
  344. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md051_test.rs +0 -0
  345. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md051_unicode_test.rs +0 -0
  346. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md052_test.rs +0 -0
  347. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md053_additional_test.rs +0 -0
  348. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md053_proptest.rs +0 -0
  349. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md053_test.rs +0 -0
  350. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md054_test.rs +0 -0
  351. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md054_unicode_test.rs +0 -0
  352. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md055_test.rs +0 -0
  353. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md056_test.rs +0 -0
  354. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md057_test.rs +0 -0
  355. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/md058_test.rs +0 -0
  356. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules/mod.rs +0 -0
  357. {rumdl-0.0.105 → rumdl-0.0.107}/tests/rules_mod_test.rs +0 -0
  358. {rumdl-0.0.105 → rumdl-0.0.107}/tests/thread_safety_tests.rs +0 -0
  359. {rumdl-0.0.105 → rumdl-0.0.107}/tests/unicode_edge_case_tests.rs +0 -0
  360. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils/blockquote_utils_test.rs +0 -0
  361. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils/code_block_utils_extended_test.rs +0 -0
  362. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils/code_block_utils_test.rs +0 -0
  363. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils/core_utils_test.rs +0 -0
  364. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils/front_matter_utils_test.rs +0 -0
  365. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils/line_index_test.rs +0 -0
  366. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils/mod.rs +0 -0
  367. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils_markdown_edge_cases.rs +0 -0
  368. {rumdl-0.0.105 → rumdl-0.0.107}/tests/utils_tests.rs +0 -0
  369. {rumdl-0.0.105 → rumdl-0.0.107}/tests/vscode_extension_fixes.rs +0 -0
  370. {rumdl-0.0.105 → rumdl-0.0.107}/tests/vscode_test.rs +0 -0
  371. {rumdl-0.0.105 → rumdl-0.0.107}/tests/vscode_tests.rs +0 -0
@@ -7,8 +7,38 @@ 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.106] - 2025-08-05
13
+
14
+ ### Changed
15
+ - Moved benchmark binaries from Python package distribution
16
+ - Benchmark tools are now in `benchmark/bin/` directory
17
+ - Added `build-benchmarks` feature flag to explicitly build benchmarks
18
+ - Python package now only includes the main `rumdl` binary
19
+ - Significantly reduced installed package size
20
+
10
21
  ## [0.0.105] - 2025-08-05
11
22
 
23
+ ## [0.0.105] - 2025-08-05
24
+
25
+ ### Fixed
26
+ - MD029: Fixed list continuation detection to properly handle variable marker widths (fixes #16)
27
+ - List items with double-digit markers (e.g., "10. ") now correctly require 4+ spaces for continuation
28
+ - List items with triple-digit markers (e.g., "100. ") now correctly require 5+ spaces for continuation
29
+ - List items with any number of digits now correctly calculate required continuation indentation
30
+ - MD027: Improved tab handling and added bounds checking for range calculations
31
+ - Installation: Improved update experience for Cursor/Windsurf editors
32
+
33
+ ### Added
34
+ - `--update` flag to check for newer versions and update if available
35
+ - Version checking with update notifications
36
+ - Marketplace-aware installation for VS Code forks
37
+ - Comprehensive tests for MD029 with large number markers (triple and quadruple digits)
38
+
39
+ ### Changed
40
+ - Clarified `--force` flag behavior in help text
41
+
12
42
  ## [0.0.104] - 2025-08-02
13
43
 
14
44
  ### Added
@@ -261,7 +291,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
261
291
 
262
292
  - Initial implementation of remaining rules for markdownlint parity
263
293
 
264
- [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.105...HEAD
294
+ [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.107...HEAD
295
+ [0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
296
+ [0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
265
297
  [0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
266
298
  [0.0.104]: https://github.com/rvben/rumdl/compare/v0.0.103...v0.0.104
267
299
  [0.0.102]: https://github.com/rvben/rumdl/compare/v0.0.101...v0.0.102
@@ -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]]
@@ -1493,7 +1493,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
1493
1493
 
1494
1494
  [[package]]
1495
1495
  name = "rumdl"
1496
- version = "0.0.105"
1496
+ version = "0.0.107"
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.105"
3
+ version = "0.0.107"
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)"
@@ -22,6 +22,32 @@ crate-type = ["cdylib", "rlib"]
22
22
  name = "rumdl"
23
23
  path = "src/main.rs"
24
24
 
25
+ # Benchmark binaries - only built when explicitly requested
26
+ [[bin]]
27
+ name = "benchmark"
28
+ path = "benchmark/bin/benchmark.rs"
29
+ required-features = ["build-benchmarks"]
30
+
31
+ [[bin]]
32
+ name = "bench_lint_context"
33
+ path = "benchmark/bin/bench_lint_context.rs"
34
+ required-features = ["build-benchmarks"]
35
+
36
+ [[bin]]
37
+ name = "benchmark_rule"
38
+ path = "benchmark/bin/benchmark_rule.rs"
39
+ required-features = ["build-benchmarks"]
40
+
41
+ [[bin]]
42
+ name = "file_parallel_benchmark"
43
+ path = "benchmark/bin/file_parallel_benchmark.rs"
44
+ required-features = ["build-benchmarks"]
45
+
46
+ [[bin]]
47
+ name = "measure_code_span_performance"
48
+ path = "benchmark/bin/measure_code_span_performance.rs"
49
+ required-features = ["build-benchmarks"]
50
+
25
51
  [[bench]]
26
52
  name = "rule_performance"
27
53
  harness = false
@@ -93,6 +119,7 @@ parallel = ["rayon"]
93
119
  profiling = []
94
120
  python = ["pyo3"]
95
121
  structure_preprocessing = []
122
+ build-benchmarks = []
96
123
 
97
124
  [dev-dependencies]
98
125
  assert_cmd = "2.0.17"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.105
3
+ Version: 0.0.107
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
 
@@ -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
  }