rumdl 0.0.83__tar.gz → 0.0.85__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 (328) hide show
  1. rumdl-0.0.85/.config/nextest.toml +46 -0
  2. rumdl-0.0.85/.mise.toml +107 -0
  3. rumdl-0.0.85/CHANGELOG.md +67 -0
  4. {rumdl-0.0.83 → rumdl-0.0.85}/Cargo.lock +34 -64
  5. {rumdl-0.0.83 → rumdl-0.0.85}/Cargo.toml +2 -1
  6. {rumdl-0.0.83 → rumdl-0.0.85}/Makefile +85 -5
  7. {rumdl-0.0.83 → rumdl-0.0.85}/PKG-INFO +1 -1
  8. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md051.md +4 -1
  9. rumdl-0.0.85/rust-toolchain.toml +10 -0
  10. rumdl-0.0.85/scripts/extract-changelog.sh +17 -0
  11. rumdl-0.0.85/scripts/prepare-release.sh +68 -0
  12. {rumdl-0.0.83 → rumdl-0.0.85}/src/lib.rs +5 -1
  13. rumdl-0.0.85/src/lint_context.rs +1705 -0
  14. rumdl-0.0.85/src/rule_config.rs +45 -0
  15. rumdl-0.0.85/src/rule_config_serde.rs +86 -0
  16. rumdl-0.0.85/src/rules/md001_heading_increment.rs +223 -0
  17. rumdl-0.0.85/src/rules/md002_first_heading_h1/md002_config.rs +27 -0
  18. rumdl-0.0.85/src/rules/md002_first_heading_h1.rs +294 -0
  19. rumdl-0.0.85/src/rules/md003_heading_style/md003_config.rs +44 -0
  20. rumdl-0.0.85/src/rules/md003_heading_style.rs +363 -0
  21. rumdl-0.0.85/src/rules/md004_unordered_list_style/md004_config.rs +76 -0
  22. rumdl-0.0.85/src/rules/md004_unordered_list_style.rs +338 -0
  23. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md005_list_indent.rs +21 -90
  24. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md006_start_bullets.rs +104 -8
  25. rumdl-0.0.85/src/rules/md007_ul_indent/md007_config.rs +27 -0
  26. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md007_ul_indent.rs +33 -14
  27. rumdl-0.0.85/src/rules/md009_trailing_spaces/md009_config.rs +32 -0
  28. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md009_trailing_spaces.rs +46 -46
  29. rumdl-0.0.85/src/rules/md010_no_hard_tabs/md010_config.rs +36 -0
  30. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md010_no_hard_tabs.rs +37 -29
  31. rumdl-0.0.85/src/rules/md012_no_multiple_blanks/md012_config.rs +27 -0
  32. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md012_no_multiple_blanks.rs +39 -21
  33. rumdl-0.0.85/src/rules/md013_line_length/md013_config.rs +59 -0
  34. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md013_line_length.rs +48 -66
  35. rumdl-0.0.85/src/rules/md014_commands_show_output/md014_config.rs +27 -0
  36. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md014_commands_show_output.rs +31 -14
  37. rumdl-0.0.85/src/rules/md018_no_missing_space_atx.rs +377 -0
  38. rumdl-0.0.85/src/rules/md019_no_multiple_space_atx.rs +202 -0
  39. rumdl-0.0.85/src/rules/md020_no_missing_space_closed_atx.rs +255 -0
  40. rumdl-0.0.85/src/rules/md021_no_multiple_space_closed_atx.rs +239 -0
  41. rumdl-0.0.85/src/rules/md022_blanks_around_headings/md022_config.rs +45 -0
  42. rumdl-0.0.85/src/rules/md022_blanks_around_headings.rs +830 -0
  43. rumdl-0.0.85/src/rules/md023_heading_start_left.rs +245 -0
  44. rumdl-0.0.85/src/rules/md024_no_duplicate_heading/md024_config.rs +28 -0
  45. rumdl-0.0.85/src/rules/md024_no_duplicate_heading.rs +172 -0
  46. rumdl-0.0.85/src/rules/md025_single_title/md025_config.rs +49 -0
  47. rumdl-0.0.85/src/rules/md025_single_title.rs +618 -0
  48. rumdl-0.0.85/src/rules/md026_no_trailing_punctuation/md026_config.rs +24 -0
  49. rumdl-0.0.85/src/rules/md026_no_trailing_punctuation.rs +412 -0
  50. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md027_multiple_spaces_blockquote.rs +55 -55
  51. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md028_no_blanks_blockquote.rs +50 -45
  52. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md029_ordered_list_prefix.rs +1 -0
  53. rumdl-0.0.85/src/rules/md030_list_marker_space/md030_config.rs +42 -0
  54. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md030_list_marker_space.rs +113 -114
  55. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md032_blanks_around_lists.rs +140 -220
  56. rumdl-0.0.85/src/rules/md033_no_inline_html/md033_config.rs +28 -0
  57. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md033_no_inline_html.rs +25 -26
  58. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md034_no_bare_urls.rs +11 -21
  59. rumdl-0.0.85/src/rules/md035_hr_style/md035_config.rs +28 -0
  60. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md035_hr_style.rs +17 -8
  61. rumdl-0.0.85/src/rules/md036_no_emphasis_only_first/md036_config.rs +29 -0
  62. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md036_no_emphasis_only_first.rs +23 -8
  63. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md038_no_space_in_code.rs +45 -144
  64. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md039_no_space_in_links.rs +165 -111
  65. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md041_first_line_heading.rs +99 -39
  66. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md042_no_empty_links.rs +62 -40
  67. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md043_required_headings.rs +60 -265
  68. rumdl-0.0.85/src/rules/md044_proper_names/md044_config.rs +28 -0
  69. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md044_proper_names.rs +104 -81
  70. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md045_no_alt_text.rs +26 -51
  71. rumdl-0.0.85/src/rules/md046_code_block_style/md046_config.rs +46 -0
  72. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md046_code_block_style.rs +23 -22
  73. rumdl-0.0.85/src/rules/md048_code_fence_style/md048_config.rs +46 -0
  74. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md048_code_fence_style.rs +22 -21
  75. rumdl-0.0.85/src/rules/md049_emphasis_style/md049_config.rs +41 -0
  76. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md049_emphasis_style.rs +20 -19
  77. rumdl-0.0.85/src/rules/md050_strong_style/md050_config.rs +46 -0
  78. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md050_strong_style.rs +23 -22
  79. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md051_link_fragments.rs +162 -132
  80. rumdl-0.0.85/src/rules/md052_reference_links_images.rs +300 -0
  81. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md053_link_image_reference_definitions.rs +15 -20
  82. rumdl-0.0.85/src/rules/md054_link_image_style/md054_config.rs +40 -0
  83. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md054_link_image_style.rs +34 -67
  84. rumdl-0.0.85/src/rules/md055_table_pipe_style/md055_config.rs +55 -0
  85. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md055_table_pipe_style.rs +23 -33
  86. rumdl-0.0.85/src/rules/md057_existing_relative_links/md057_config.rs +25 -0
  87. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md057_existing_relative_links.rs +22 -24
  88. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/ast_utils.rs +3 -4
  89. {rumdl-0.0.83 → rumdl-0.0.85}/tests/advanced_integration_tests.rs +1 -1
  90. {rumdl-0.0.83 → rumdl-0.0.85}/tests/character_ranges/additional_tests.rs +3 -3
  91. {rumdl-0.0.83 → rumdl-0.0.85}/tests/character_ranges/mod.rs +1 -1
  92. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md002_test.rs +2 -23
  93. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md023_extended_test.rs +9 -7
  94. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md030_test.rs +6 -3
  95. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md042_test.rs +40 -6
  96. rumdl-0.0.85/tests/rules/md051_test.rs +1128 -0
  97. {rumdl-0.0.83 → rumdl-0.0.85}/tests/vscode_extension_fixes.rs +3 -2
  98. rumdl-0.0.83/src/lint_context.rs +0 -200
  99. rumdl-0.0.83/src/rules/md001_heading_increment.rs +0 -309
  100. rumdl-0.0.83/src/rules/md002_first_heading_h1.rs +0 -407
  101. rumdl-0.0.83/src/rules/md003_heading_style.rs +0 -539
  102. rumdl-0.0.83/src/rules/md004_unordered_list_style.rs +0 -388
  103. rumdl-0.0.83/src/rules/md018_no_missing_space_atx.rs +0 -479
  104. rumdl-0.0.83/src/rules/md019_no_multiple_space_atx.rs +0 -232
  105. rumdl-0.0.83/src/rules/md020_no_missing_space_closed_atx.rs +0 -298
  106. rumdl-0.0.83/src/rules/md021_no_multiple_space_closed_atx.rs +0 -259
  107. rumdl-0.0.83/src/rules/md022_blanks_around_headings.rs +0 -1291
  108. rumdl-0.0.83/src/rules/md023_heading_start_left.rs +0 -459
  109. rumdl-0.0.83/src/rules/md024_no_duplicate_heading.rs +0 -201
  110. rumdl-0.0.83/src/rules/md025_single_title.rs +0 -620
  111. rumdl-0.0.83/src/rules/md026_no_trailing_punctuation.rs +0 -616
  112. rumdl-0.0.83/src/rules/md052_reference_links_images.rs +0 -363
  113. rumdl-0.0.83/tests/rules/md051_test.rs +0 -562
  114. {rumdl-0.0.83 → rumdl-0.0.85}/.rumdl.toml +0 -0
  115. {rumdl-0.0.83 → rumdl-0.0.85}/MANIFEST.in +0 -0
  116. {rumdl-0.0.83 → rumdl-0.0.85}/README.md +0 -0
  117. {rumdl-0.0.83 → rumdl-0.0.85}/assets/logo.png +0 -0
  118. {rumdl-0.0.83 → rumdl-0.0.85}/benches/fix_performance.rs +0 -0
  119. {rumdl-0.0.83 → rumdl-0.0.85}/benches/range_performance.rs +0 -0
  120. {rumdl-0.0.83 → rumdl-0.0.85}/benches/range_utils_benchmark.rs +0 -0
  121. {rumdl-0.0.83 → rumdl-0.0.85}/benches/rule_performance.rs +0 -0
  122. {rumdl-0.0.83 → rumdl-0.0.85}/benches/simple_fix_bench.rs +0 -0
  123. {rumdl-0.0.83 → rumdl-0.0.85}/docs/RULES.md +0 -0
  124. {rumdl-0.0.83 → rumdl-0.0.85}/docs/global-settings.md +0 -0
  125. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md001.md +0 -0
  126. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md002.md +0 -0
  127. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md003.md +0 -0
  128. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md004.md +0 -0
  129. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md005.md +0 -0
  130. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md006.md +0 -0
  131. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md007.md +0 -0
  132. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md009.md +0 -0
  133. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md010.md +0 -0
  134. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md011.md +0 -0
  135. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md012.md +0 -0
  136. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md013.md +0 -0
  137. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md014.md +0 -0
  138. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md018.md +0 -0
  139. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md019.md +0 -0
  140. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md020.md +0 -0
  141. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md021.md +0 -0
  142. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md022.md +0 -0
  143. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md023.md +0 -0
  144. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md024.md +0 -0
  145. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md025.md +0 -0
  146. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md026.md +0 -0
  147. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md027.md +0 -0
  148. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md028.md +0 -0
  149. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md029.md +0 -0
  150. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md030.md +0 -0
  151. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md031.md +0 -0
  152. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md032.md +0 -0
  153. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md033.md +0 -0
  154. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md034.md +0 -0
  155. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md035.md +0 -0
  156. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md036.md +0 -0
  157. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md037.md +0 -0
  158. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md038.md +0 -0
  159. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md039.md +0 -0
  160. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md040.md +0 -0
  161. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md041.md +0 -0
  162. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md042.md +0 -0
  163. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md043.md +0 -0
  164. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md044.md +0 -0
  165. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md045.md +0 -0
  166. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md046.md +0 -0
  167. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md047.md +0 -0
  168. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md048.md +0 -0
  169. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md049.md +0 -0
  170. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md050.md +0 -0
  171. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md052.md +0 -0
  172. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md053.md +0 -0
  173. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md054.md +0 -0
  174. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md055.md +0 -0
  175. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md056.md +0 -0
  176. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md057.md +0 -0
  177. {rumdl-0.0.83 → rumdl-0.0.85}/docs/md058.md +0 -0
  178. {rumdl-0.0.83 → rumdl-0.0.85}/issues/plan-rule-parity-with-markdownlint.md +0 -0
  179. {rumdl-0.0.83 → rumdl-0.0.85}/parity_check.py +0 -0
  180. {rumdl-0.0.83 → rumdl-0.0.85}/pyproject.toml +0 -0
  181. {rumdl-0.0.83 → rumdl-0.0.85}/python/MANIFEST.in +0 -0
  182. {rumdl-0.0.83 → rumdl-0.0.85}/python/PYTHON-README.md +0 -0
  183. {rumdl-0.0.83 → rumdl-0.0.85}/python/rumdl/__init__.py +0 -0
  184. {rumdl-0.0.83 → rumdl-0.0.85}/python/rumdl/__main__.py +0 -0
  185. {rumdl-0.0.83 → rumdl-0.0.85}/python/rumdl/py.typed +0 -0
  186. {rumdl-0.0.83 → rumdl-0.0.85}/rumdl.toml.example +0 -0
  187. {rumdl-0.0.83 → rumdl-0.0.85}/src/config.rs +0 -0
  188. {rumdl-0.0.83 → rumdl-0.0.85}/src/init.rs +0 -0
  189. {rumdl-0.0.83 → rumdl-0.0.85}/src/lsp/mod.rs +0 -0
  190. {rumdl-0.0.83 → rumdl-0.0.85}/src/lsp/server.rs +0 -0
  191. {rumdl-0.0.83 → rumdl-0.0.85}/src/lsp/types.rs +0 -0
  192. {rumdl-0.0.83 → rumdl-0.0.85}/src/main.rs +0 -0
  193. {rumdl-0.0.83 → rumdl-0.0.85}/src/markdownlint_config.rs +0 -0
  194. {rumdl-0.0.83 → rumdl-0.0.85}/src/parallel.rs +0 -0
  195. {rumdl-0.0.83 → rumdl-0.0.85}/src/performance.rs +0 -0
  196. {rumdl-0.0.83 → rumdl-0.0.85}/src/profiling.rs +0 -0
  197. {rumdl-0.0.83 → rumdl-0.0.85}/src/python.rs +0 -0
  198. {rumdl-0.0.83 → rumdl-0.0.85}/src/rule.rs +0 -0
  199. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/blockquote_utils.rs +0 -0
  200. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/code_block_utils.rs +0 -0
  201. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/code_fence_utils.rs +0 -0
  202. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/emphasis_style.rs +0 -0
  203. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/front_matter_utils.rs +0 -0
  204. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/heading_utils.rs +0 -0
  205. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/list_utils.rs +0 -0
  206. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md011_no_reversed_links.rs +0 -0
  207. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md031_blanks_around_fences.rs +0 -0
  208. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  209. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md040_fenced_code_language.rs +0 -0
  210. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md047_single_trailing_newline.rs +0 -0
  211. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md056_table_column_count.rs +0 -0
  212. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/md058_blanks_around_tables.rs +0 -0
  213. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/mod.rs +0 -0
  214. {rumdl-0.0.83 → rumdl-0.0.85}/src/rules/strong_style.rs +0 -0
  215. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/code_block_utils.rs +0 -0
  216. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/document_structure.rs +0 -0
  217. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/early_returns.rs +0 -0
  218. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/element_cache.rs +0 -0
  219. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/fix_utils.rs +0 -0
  220. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/markdown_elements.rs +0 -0
  221. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/mod.rs +0 -0
  222. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/range_utils.rs +0 -0
  223. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/regex_cache.rs +0 -0
  224. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/string_interner.rs +0 -0
  225. {rumdl-0.0.83 → rumdl-0.0.85}/src/utils/table_utils.rs +0 -0
  226. {rumdl-0.0.83 → rumdl-0.0.85}/tests/character_ranges/basic_tests.rs +0 -0
  227. {rumdl-0.0.83 → rumdl-0.0.85}/tests/character_ranges/comprehensive_tests.rs +0 -0
  228. {rumdl-0.0.83 → rumdl-0.0.85}/tests/character_ranges/extended_tests.rs +0 -0
  229. {rumdl-0.0.83 → rumdl-0.0.85}/tests/character_ranges/unicode_utils.rs +0 -0
  230. {rumdl-0.0.83 → rumdl-0.0.85}/tests/cli_duplication_test.rs +0 -0
  231. {rumdl-0.0.83 → rumdl-0.0.85}/tests/cli_integration_tests.rs +0 -0
  232. {rumdl-0.0.83 → rumdl-0.0.85}/tests/cli_lsp_fix_consistency.rs +0 -0
  233. {rumdl-0.0.83 → rumdl-0.0.85}/tests/commonmark_compliance_tests.rs +0 -0
  234. {rumdl-0.0.83 → rumdl-0.0.85}/tests/comprehensive_integration_tests.rs +0 -0
  235. {rumdl-0.0.83 → rumdl-0.0.85}/tests/config_application_tests.rs +0 -0
  236. {rumdl-0.0.83 → rumdl-0.0.85}/tests/config_file_command_test.rs +0 -0
  237. {rumdl-0.0.83 → rumdl-0.0.85}/tests/config_tests.rs +0 -0
  238. {rumdl-0.0.83 → rumdl-0.0.85}/tests/configuration_inheritance_tests.rs +0 -0
  239. {rumdl-0.0.83 → rumdl-0.0.85}/tests/consistency_regression_tests.rs +0 -0
  240. {rumdl-0.0.83 → rumdl-0.0.85}/tests/cross_platform_compatibility_tests.rs +0 -0
  241. {rumdl-0.0.83 → rumdl-0.0.85}/tests/final_confidence_assessment.rs +0 -0
  242. {rumdl-0.0.83 → rumdl-0.0.85}/tests/init_command_test.rs +0 -0
  243. {rumdl-0.0.83 → rumdl-0.0.85}/tests/init_tests.rs +0 -0
  244. {rumdl-0.0.83 → rumdl-0.0.85}/tests/integration_tests.rs +0 -0
  245. {rumdl-0.0.83 → rumdl-0.0.85}/tests/json_output_test.rs +0 -0
  246. {rumdl-0.0.83 → rumdl-0.0.85}/tests/lib.rs +0 -0
  247. {rumdl-0.0.83 → rumdl-0.0.85}/tests/lsp_editor_integration_tests.rs +0 -0
  248. {rumdl-0.0.83 → rumdl-0.0.85}/tests/lsp_integration_tests.rs +0 -0
  249. {rumdl-0.0.83 → rumdl-0.0.85}/tests/lsp_memory_leak_tests.rs +0 -0
  250. {rumdl-0.0.83 → rumdl-0.0.85}/tests/lsp_tests.rs +0 -0
  251. {rumdl-0.0.83 → rumdl-0.0.85}/tests/malformed_markdown_stress_tests.rs +0 -0
  252. {rumdl-0.0.83 → rumdl-0.0.85}/tests/markdownlint_cli_integration.rs +0 -0
  253. {rumdl-0.0.83 → rumdl-0.0.85}/tests/markdownlint_config_test.rs +0 -0
  254. {rumdl-0.0.83 → rumdl-0.0.85}/tests/md030_edge_cases.md +0 -0
  255. {rumdl-0.0.83 → rumdl-0.0.85}/tests/output_format_tests.rs +0 -0
  256. {rumdl-0.0.83 → rumdl-0.0.85}/tests/perf_check.rs +0 -0
  257. {rumdl-0.0.83 → rumdl-0.0.85}/tests/performance_validation_tests.rs +0 -0
  258. {rumdl-0.0.83 → rumdl-0.0.85}/tests/pyproject_config_tests.rs +0 -0
  259. {rumdl-0.0.83 → rumdl-0.0.85}/tests/real_world_repository_tests.rs +0 -0
  260. {rumdl-0.0.83 → rumdl-0.0.85}/tests/regression_prevention_tests.rs +0 -0
  261. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md001_test.rs +0 -0
  262. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md001_unicode_test.rs +0 -0
  263. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md003_test.rs +0 -0
  264. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md004_test.rs +0 -0
  265. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md005_test.rs +0 -0
  266. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md006_test.rs +0 -0
  267. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md006_unicode_test.rs +0 -0
  268. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md007_test.rs +0 -0
  269. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md009_test.rs +0 -0
  270. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md010_test.rs +0 -0
  271. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md011_test.rs +0 -0
  272. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md012_test.rs +0 -0
  273. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md013_test.rs +0 -0
  274. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md014_test.rs +0 -0
  275. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md018_test.rs +0 -0
  276. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md019_test.rs +0 -0
  277. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md020_test.rs +0 -0
  278. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md021_test.rs +0 -0
  279. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md022_test.rs +0 -0
  280. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md023_test.rs +0 -0
  281. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md024_test.rs +0 -0
  282. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md025_test.rs +0 -0
  283. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md026_test.rs +0 -0
  284. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md027_test.rs +0 -0
  285. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md028_test.rs +0 -0
  286. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md029_test.rs +0 -0
  287. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md031_test.rs +0 -0
  288. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md032_test.rs +0 -0
  289. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md033_extended_test.rs +0 -0
  290. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md033_test.rs +0 -0
  291. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md034_test.rs +0 -0
  292. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md035_test.rs +0 -0
  293. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md036_test.rs +0 -0
  294. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md037_test.rs +0 -0
  295. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md038_test.rs +0 -0
  296. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md039_test.rs +0 -0
  297. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md040_test.rs +0 -0
  298. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md041_test.rs +0 -0
  299. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md043_test.rs +0 -0
  300. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md044_test.rs +0 -0
  301. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md045_test.rs +0 -0
  302. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md046_test.rs +0 -0
  303. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md047_test.rs +0 -0
  304. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md048_test.rs +0 -0
  305. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md049_test.rs +0 -0
  306. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md050_test.rs +0 -0
  307. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md052_test.rs +0 -0
  308. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md053_additional_test.rs +0 -0
  309. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md053_proptest.rs +0 -0
  310. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md053_test.rs +0 -0
  311. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md054_test.rs +0 -0
  312. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md054_unicode_test.rs +0 -0
  313. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md055_test.rs +0 -0
  314. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md056_test.rs +0 -0
  315. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md057_test.rs +0 -0
  316. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/md058_test.rs +0 -0
  317. {rumdl-0.0.83 → rumdl-0.0.85}/tests/rules/mod.rs +0 -0
  318. {rumdl-0.0.83 → rumdl-0.0.85}/tests/thread_safety_tests.rs +0 -0
  319. {rumdl-0.0.83 → rumdl-0.0.85}/tests/unicode_edge_case_tests.rs +0 -0
  320. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils/blockquote_utils_test.rs +0 -0
  321. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils/code_block_utils_extended_test.rs +0 -0
  322. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils/code_block_utils_test.rs +0 -0
  323. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils/core_utils_test.rs +0 -0
  324. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils/front_matter_utils_test.rs +0 -0
  325. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils/line_index_test.rs +0 -0
  326. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils/mod.rs +0 -0
  327. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils_markdown_edge_cases.rs +0 -0
  328. {rumdl-0.0.83 → rumdl-0.0.85}/tests/utils_tests.rs +0 -0
@@ -0,0 +1,46 @@
1
+ # Nextest configuration
2
+ # https://nexte.st/book/configuration
3
+
4
+ [profile.default]
5
+ # Detect flaky tests and retry them
6
+ retries = { backoff = "exponential", count = 2, delay = "1s", max-delay = "10s" }
7
+
8
+ # Run tests with 2x the number of CPUs
9
+ test-threads = "num-cpus"
10
+
11
+ # Fail fast on first failure in CI
12
+ fail-fast = false
13
+
14
+ # Show failed tests immediately
15
+ failure-output = "immediate"
16
+
17
+ # Show successful tests at the end
18
+ success-output = "final"
19
+
20
+ # Status output level
21
+ status-level = "pass"
22
+
23
+ [profile.ci]
24
+
25
+ # More conservative in CI
26
+ test-threads = "num-cpus"
27
+
28
+ # Always show all output in CI
29
+ failure-output = "immediate"
30
+ success-output = "immediate"
31
+ status-level = "all"
32
+
33
+ # No retries in CI to catch flaky tests
34
+ retries = 0
35
+
36
+ # Quick profile for development
37
+ [profile.quick]
38
+
39
+ # Skip slow tests
40
+ default-filter = 'not test(/memory/) and not test(/stress/) and not test(/large/)'
41
+
42
+ # Even more parallel execution locally
43
+ test-threads = "num-cpus"
44
+
45
+ # Less verbose output
46
+ status-level = "fail"
@@ -0,0 +1,107 @@
1
+ # mise configuration for rumdl development environment
2
+ # This file manages development tools and their versions
3
+
4
+ [env]
5
+ # Environment variables for the project
6
+ RUST_BACKTRACE = "1"
7
+
8
+ [tools]
9
+ # Rust toolchain - version matches rust-toolchain.toml
10
+ rust = "1.87.0"
11
+
12
+ # Python for maturin/python bindings
13
+ python = "3.12"
14
+
15
+ # UV - Fast Python package and tool manager
16
+ uv = "latest"
17
+
18
+ # Development tools installed via cargo
19
+ "cargo:cargo-nextest" = "latest"
20
+ "cargo:cargo-watch" = "latest"
21
+ "cargo:maturin" = "latest"
22
+ "cargo:cargo-binstall" = "latest"
23
+
24
+ # Zig for cross-compilation (used by maturin)
25
+ zig = "0.13"
26
+
27
+ # Optional: Additional useful Rust development tools
28
+ # Uncomment to enable
29
+ # "cargo:cargo-edit" = "latest" # For cargo add/rm/upgrade commands
30
+ # "cargo:cargo-outdated" = "latest" # Check for outdated dependencies
31
+ # "cargo:cargo-audit" = "latest" # Security audit dependencies
32
+ # "cargo:cargo-deny" = "latest" # Lint dependencies
33
+
34
+ # Note: Python packages like maturin, cffi, and twine are installed
35
+ # separately. maturin is already installed via cargo above.
36
+
37
+ [settings]
38
+ # Use cargo-binstall when available for faster installations
39
+ cargo_binstall = true
40
+
41
+ # Experimental features
42
+ experimental = true
43
+
44
+ # Enable idiomatic version files (like rust-toolchain.toml)
45
+ idiomatic_version_file_enable_tools = ["rust"]
46
+
47
+ # Configure rust/cargo homes if you want isolation from system rust
48
+ # rust_cache_dir = "./.mise/rust"
49
+ # cargo_home = "./.mise/cargo"
50
+
51
+ [tasks.setup]
52
+ description = "Set up the complete development environment"
53
+ run = """
54
+ echo "Setting up rumdl development environment..."
55
+ echo "Installing Rust toolchain and tools..."
56
+ mise install
57
+ echo "Installing Python tools with uv..."
58
+ uv tool install twine
59
+ echo "Development environment setup complete!"
60
+ echo ""
61
+ echo "Installed tools:"
62
+ mise list
63
+ echo ""
64
+ echo "Python tools:"
65
+ uv tool list
66
+ """
67
+
68
+ [tasks.verify]
69
+ description = "Verify all tools are installed correctly"
70
+ run = """
71
+ echo "Verifying development environment..."
72
+ echo "Rust version: $(rustc --version)"
73
+ echo "Cargo version: $(cargo --version)"
74
+ echo "Python version: $(python --version)"
75
+ echo "cargo-nextest version: $(cargo nextest --version)"
76
+ echo "maturin version: $(maturin --version)"
77
+ echo ""
78
+ echo "Running quick test to verify setup..."
79
+ make test-quick
80
+ """
81
+
82
+ [tasks.ci]
83
+ description = "Run CI checks"
84
+ run = """
85
+ echo "Running CI checks..."
86
+ make fmt
87
+ make lint
88
+ make test-quick
89
+ """
90
+
91
+ # CI environment variables (set these in CI workflow)
92
+ # Example for GitHub Actions:
93
+ # env:
94
+ # RUST_BACKTRACE: "full"
95
+ # CARGO_INCREMENTAL: "0"
96
+ # CARGO_NET_RETRY: "10"
97
+ # RUSTFLAGS: "-D warnings"
98
+
99
+ # Platform-specific tool versions (optional)
100
+ # [tools.linux]
101
+ # rust = "1.87.0"
102
+ #
103
+ # [tools.macos]
104
+ # rust = "1.87.0"
105
+ #
106
+ # [tools.windows]
107
+ # rust = "1.87.0"
@@ -0,0 +1,67 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.0.85] - 2025-06-11
11
+
12
+ ## [0.0.84] - 2025-06-10
13
+
14
+ ## [0.0.84] - 2025-06-10
15
+
16
+ ## [0.0.84] - 2025-06-10
17
+
18
+ ### Added
19
+ - Type-safe serde-based configuration system for all 24 configurable rules
20
+ - Dedicated config modules for each rule with compile-time validation
21
+ - Full IDE support with autocomplete for configuration options
22
+ - Centralized utilities for common parsing patterns
23
+
24
+ ### Changed
25
+ - **BREAKING**: Internal configuration structure refactored (external API unchanged)
26
+ - Migrated all rules from manual TOML parsing to serde deserialization
27
+ - Improved performance through centralized parsing for:
28
+ - Link and URL detection
29
+ - Code span identification
30
+ - List item processing
31
+ - Block element detection
32
+ - Pre-computed line information for better performance
33
+ - ~40% reduction in configuration boilerplate code
34
+
35
+ ### Fixed
36
+ - MD030: Correct handling of tab characters in list items
37
+
38
+ ### Performance
39
+ - Significant performance improvements across multiple rules through:
40
+ - Centralized regex compilation and caching
41
+ - Reduced redundant parsing operations
42
+ - More efficient text processing algorithms
43
+ - Optimized pattern matching for MD044
44
+
45
+ ## [0.0.83] - 2025-06-07
46
+
47
+ ### Fixed
48
+ - Various bug fixes and performance improvements
49
+
50
+ ## [0.0.82] - 2025-06-06
51
+
52
+ ### Fixed
53
+ - Various bug fixes and stability improvements
54
+
55
+ ## [0.0.81] - 2025-06-04
56
+
57
+ ### Added
58
+ - Initial implementation of remaining rules for markdownlint parity
59
+
60
+ [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.85...HEAD
61
+ [0.0.85]: https://github.com/rvben/rumdl/compare/v0.0.84...v0.0.85
62
+ [0.0.84]: https://github.com/rvben/rumdl/compare/v0.0.83...v0.0.84
63
+ [0.0.84]: https://github.com/rvben/rumdl/compare/v0.0.83...v0.0.84
64
+ [0.0.84]: https://github.com/rvben/rumdl/compare/v0.0.83...v0.0.84
65
+ [0.0.83]: https://github.com/rvben/rumdl/compare/v0.0.82...v0.0.83
66
+ [0.0.82]: https://github.com/rvben/rumdl/compare/v0.0.81...v0.0.82
67
+ [0.0.81]: https://github.com/rvben/rumdl/releases/tag/v0.0.81
@@ -13,9 +13,9 @@ dependencies = [
13
13
 
14
14
  [[package]]
15
15
  name = "adler2"
16
- version = "2.0.0"
16
+ version = "2.0.1"
17
17
  source = "registry+https://github.com/rust-lang/crates.io-index"
18
- checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
18
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
19
19
 
20
20
  [[package]]
21
21
  name = "aho-corasick"
@@ -253,9 +253,9 @@ dependencies = [
253
253
 
254
254
  [[package]]
255
255
  name = "cfg-if"
256
- version = "1.0.0"
256
+ version = "1.0.1"
257
257
  source = "registry+https://github.com/rust-lang/crates.io-index"
258
- checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
258
+ checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
259
259
 
260
260
  [[package]]
261
261
  name = "chrono"
@@ -301,9 +301,9 @@ dependencies = [
301
301
 
302
302
  [[package]]
303
303
  name = "clap"
304
- version = "4.5.39"
304
+ version = "4.5.40"
305
305
  source = "registry+https://github.com/rust-lang/crates.io-index"
306
- checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f"
306
+ checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f"
307
307
  dependencies = [
308
308
  "clap_builder",
309
309
  "clap_derive",
@@ -311,9 +311,9 @@ dependencies = [
311
311
 
312
312
  [[package]]
313
313
  name = "clap_builder"
314
- version = "4.5.39"
314
+ version = "4.5.40"
315
315
  source = "registry+https://github.com/rust-lang/crates.io-index"
316
- checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51"
316
+ checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e"
317
317
  dependencies = [
318
318
  "anstream",
319
319
  "anstyle",
@@ -323,9 +323,9 @@ dependencies = [
323
323
 
324
324
  [[package]]
325
325
  name = "clap_derive"
326
- version = "4.5.32"
326
+ version = "4.5.40"
327
327
  source = "registry+https://github.com/rust-lang/crates.io-index"
328
- checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
328
+ checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce"
329
329
  dependencies = [
330
330
  "heck",
331
331
  "proc-macro2",
@@ -335,9 +335,9 @@ dependencies = [
335
335
 
336
336
  [[package]]
337
337
  name = "clap_lex"
338
- version = "0.7.4"
338
+ version = "0.7.5"
339
339
  source = "registry+https://github.com/rust-lang/crates.io-index"
340
- checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
340
+ checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"
341
341
 
342
342
  [[package]]
343
343
  name = "colorchoice"
@@ -1231,9 +1231,9 @@ dependencies = [
1231
1231
 
1232
1232
  [[package]]
1233
1233
  name = "miniz_oxide"
1234
- version = "0.8.8"
1234
+ version = "0.8.9"
1235
1235
  source = "registry+https://github.com/rust-lang/crates.io-index"
1236
- checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
1236
+ checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
1237
1237
  dependencies = [
1238
1238
  "adler2",
1239
1239
  ]
@@ -1541,17 +1541,17 @@ dependencies = [
1541
1541
 
1542
1542
  [[package]]
1543
1543
  name = "proptest"
1544
- version = "1.6.0"
1544
+ version = "1.7.0"
1545
1545
  source = "registry+https://github.com/rust-lang/crates.io-index"
1546
- checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50"
1546
+ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f"
1547
1547
  dependencies = [
1548
1548
  "bit-set",
1549
1549
  "bit-vec",
1550
1550
  "bitflags 2.9.1",
1551
1551
  "lazy_static",
1552
1552
  "num-traits",
1553
- "rand 0.8.5",
1554
- "rand_chacha 0.3.1",
1553
+ "rand",
1554
+ "rand_chacha",
1555
1555
  "rand_xorshift",
1556
1556
  "regex-syntax",
1557
1557
  "rusty-fork",
@@ -1643,35 +1643,14 @@ version = "5.2.0"
1643
1643
  source = "registry+https://github.com/rust-lang/crates.io-index"
1644
1644
  checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
1645
1645
 
1646
- [[package]]
1647
- name = "rand"
1648
- version = "0.8.5"
1649
- source = "registry+https://github.com/rust-lang/crates.io-index"
1650
- checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
1651
- dependencies = [
1652
- "libc",
1653
- "rand_chacha 0.3.1",
1654
- "rand_core 0.6.4",
1655
- ]
1656
-
1657
1646
  [[package]]
1658
1647
  name = "rand"
1659
1648
  version = "0.9.1"
1660
1649
  source = "registry+https://github.com/rust-lang/crates.io-index"
1661
1650
  checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
1662
1651
  dependencies = [
1663
- "rand_chacha 0.9.0",
1664
- "rand_core 0.9.3",
1665
- ]
1666
-
1667
- [[package]]
1668
- name = "rand_chacha"
1669
- version = "0.3.1"
1670
- source = "registry+https://github.com/rust-lang/crates.io-index"
1671
- checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
1672
- dependencies = [
1673
- "ppv-lite86",
1674
- "rand_core 0.6.4",
1652
+ "rand_chacha",
1653
+ "rand_core",
1675
1654
  ]
1676
1655
 
1677
1656
  [[package]]
@@ -1681,16 +1660,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1681
1660
  checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
1682
1661
  dependencies = [
1683
1662
  "ppv-lite86",
1684
- "rand_core 0.9.3",
1685
- ]
1686
-
1687
- [[package]]
1688
- name = "rand_core"
1689
- version = "0.6.4"
1690
- source = "registry+https://github.com/rust-lang/crates.io-index"
1691
- checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
1692
- dependencies = [
1693
- "getrandom 0.2.16",
1663
+ "rand_core",
1694
1664
  ]
1695
1665
 
1696
1666
  [[package]]
@@ -1704,11 +1674,11 @@ dependencies = [
1704
1674
 
1705
1675
  [[package]]
1706
1676
  name = "rand_xorshift"
1707
- version = "0.3.0"
1677
+ version = "0.4.0"
1708
1678
  source = "registry+https://github.com/rust-lang/crates.io-index"
1709
- checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
1679
+ checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a"
1710
1680
  dependencies = [
1711
- "rand_core 0.6.4",
1681
+ "rand_core",
1712
1682
  ]
1713
1683
 
1714
1684
  [[package]]
@@ -1783,7 +1753,7 @@ dependencies = [
1783
1753
 
1784
1754
  [[package]]
1785
1755
  name = "rumdl"
1786
- version = "0.0.83"
1756
+ version = "0.0.85"
1787
1757
  dependencies = [
1788
1758
  "anyhow",
1789
1759
  "assert_cmd",
@@ -1812,7 +1782,7 @@ dependencies = [
1812
1782
  "pretty_assertions",
1813
1783
  "proptest",
1814
1784
  "pyo3",
1815
- "rand 0.9.1",
1785
+ "rand",
1816
1786
  "rayon",
1817
1787
  "regex",
1818
1788
  "seahash",
@@ -1851,9 +1821,9 @@ dependencies = [
1851
1821
 
1852
1822
  [[package]]
1853
1823
  name = "rustc-demangle"
1854
- version = "0.1.24"
1824
+ version = "0.1.25"
1855
1825
  source = "registry+https://github.com/rust-lang/crates.io-index"
1856
- checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
1826
+ checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
1857
1827
 
1858
1828
  [[package]]
1859
1829
  name = "rustix"
@@ -2049,9 +2019,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
2049
2019
 
2050
2020
  [[package]]
2051
2021
  name = "syn"
2052
- version = "2.0.101"
2022
+ version = "2.0.102"
2053
2023
  source = "registry+https://github.com/rust-lang/crates.io-index"
2054
- checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
2024
+ checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462"
2055
2025
  dependencies = [
2056
2026
  "proc-macro2",
2057
2027
  "quote",
@@ -2427,9 +2397,9 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
2427
2397
 
2428
2398
  [[package]]
2429
2399
  name = "unicode-width"
2430
- version = "0.2.0"
2400
+ version = "0.2.1"
2431
2401
  source = "registry+https://github.com/rust-lang/crates.io-index"
2432
- checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
2402
+ checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c"
2433
2403
 
2434
2404
  [[package]]
2435
2405
  name = "unindent"
@@ -2761,9 +2731,9 @@ checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
2761
2731
 
2762
2732
  [[package]]
2763
2733
  name = "yaml-rust2"
2764
- version = "0.10.2"
2734
+ version = "0.10.3"
2765
2735
  source = "registry+https://github.com/rust-lang/crates.io-index"
2766
- checksum = "18b783b2c2789414f8bb84ca3318fc9c2d7e7be1c22907d37839a58dedb369d3"
2736
+ checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7"
2767
2737
  dependencies = [
2768
2738
  "arraydeque",
2769
2739
  "encoding_rs",
@@ -1,7 +1,8 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.83"
3
+ version = "0.0.85"
4
4
  edition = "2021"
5
+ rust-version = "1.87.0"
5
6
  description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
6
7
  authors = ["Ruben J. Jongejan <ruben.jongejan@gmail.com>"]
7
8
  license = "MIT"
@@ -1,4 +1,61 @@
1
- .PHONY: build test clean fmt check doc version-major version-minor version-patch build-python build-wheel dev-install
1
+ .PHONY: build test clean fmt check doc version-major version-minor version-patch build-python build-wheel dev-install setup-mise dev-setup dev-verify
2
+
3
+ # Development environment setup
4
+ setup-mise:
5
+ @echo "Checking if mise is installed..."
6
+ @command -v mise >/dev/null 2>&1 || { \
7
+ echo "mise is not installed. Installing mise..."; \
8
+ curl https://mise.run | sh; \
9
+ echo 'eval "$$(~/.local/bin/mise activate bash)"' >> ~/.bashrc; \
10
+ echo 'eval "$$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc; \
11
+ echo ""; \
12
+ echo "mise installed! Please run:"; \
13
+ echo " source ~/.bashrc # or source ~/.zshrc"; \
14
+ echo "Then run 'make dev-setup' to continue"; \
15
+ exit 1; \
16
+ }
17
+ @echo "mise is installed at: $$(which mise)"
18
+
19
+ dev-setup: setup-mise
20
+ @echo "Installing development environment with mise..."
21
+ mise install
22
+ @echo ""
23
+ @echo "Development environment setup complete!"
24
+ @echo "Run 'make dev-verify' to verify the installation"
25
+
26
+ dev-verify:
27
+ @echo "Verifying development environment..."
28
+ @echo "===================="
29
+ @echo "Rust version: $$(rustc --version)"
30
+ @echo "Cargo version: $$(cargo --version)"
31
+ @echo "Python version: $$(python --version)"
32
+ @echo "cargo-nextest: $$(cargo nextest --version 2>/dev/null || echo 'not installed')"
33
+ @echo "maturin: $$(maturin --version 2>/dev/null || echo 'not installed')"
34
+ @echo "cargo-binstall: $$(cargo binstall --version 2>/dev/null || echo 'not installed')"
35
+ @echo "===================="
36
+
37
+ # CI-specific setup (uses mise if available, falls back to direct installation)
38
+ ci-setup:
39
+ @if command -v mise >/dev/null 2>&1; then \
40
+ echo "Using mise for CI setup..."; \
41
+ mise install; \
42
+ else \
43
+ echo "mise not found, using direct installation..."; \
44
+ if ! command -v cargo-nextest >/dev/null 2>&1; then \
45
+ echo "Installing cargo-nextest..."; \
46
+ curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C $${CARGO_HOME:-~/.cargo}/bin; \
47
+ fi; \
48
+ if ! command -v cargo-binstall >/dev/null 2>&1; then \
49
+ echo "Installing cargo-binstall..."; \
50
+ curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash; \
51
+ fi; \
52
+ fi
53
+
54
+ # Install mise in CI environment
55
+ ci-install-mise:
56
+ @echo "Installing mise for CI..."
57
+ @curl https://mise.run | MISE_INSTALL_PATH=/usr/local/bin/mise sh
58
+ @echo "mise installed at: $$(which mise)"
2
59
 
3
60
  build:
4
61
  cargo build --release
@@ -6,6 +63,15 @@ build:
6
63
  test:
7
64
  cargo test
8
65
 
66
+ test-nextest:
67
+ cargo nextest run
68
+
69
+ test-quick:
70
+ cargo nextest run --profile quick
71
+
72
+ test-ci:
73
+ cargo nextest run --profile ci
74
+
9
75
  clean:
10
76
  cargo clean
11
77
 
@@ -20,7 +86,6 @@ lint:
20
86
  check:
21
87
  cargo check --all-targets --all-features
22
88
 
23
-
24
89
  doc:
25
90
  cargo doc --no-deps
26
91
 
@@ -59,6 +124,18 @@ update-readme-version:
59
124
  @rm -f README.md.bak
60
125
  @echo "README.md updated to rev $(NEW_TAG)"
61
126
 
127
+ update-changelog:
128
+ @echo "Updating CHANGELOG.md for $(NEW_TAG)..."
129
+ @if [ -f CHANGELOG.md ]; then \
130
+ DATE=$$(date +%Y-%m-%d); \
131
+ perl -i.bak -pe 's/## \[Unreleased\]/## [Unreleased]\n\n## [$(VERSION_NO_V)] - '"$$DATE"'/' CHANGELOG.md; \
132
+ perl -i.bak -0777 -pe 's/(\[Unreleased\]: .*\/compare\/)v[0-9]+\.[0-9]+\.[0-9]+(\.\.\.HEAD)/$$1$(NEW_TAG)$$2\n[$(VERSION_NO_V)]: https:\/\/github.com\/rvben\/rumdl\/compare\/$(CURRENT)...$(NEW_TAG)/' CHANGELOG.md; \
133
+ rm -f CHANGELOG.md.bak; \
134
+ echo "CHANGELOG.md updated for version $(NEW_TAG)"; \
135
+ else \
136
+ echo "Warning: CHANGELOG.md not found"; \
137
+ fi
138
+
62
139
  version-major:
63
140
  @echo "Creating new major version tag..."
64
141
  $(eval CURRENT := $(shell git describe --tags --abbrev=0 2>/dev/null || echo v0.0.0))
@@ -69,7 +146,8 @@ version-major:
69
146
  @echo "Current: $(CURRENT) -> New: $(NEW_TAG)"
70
147
  @$(MAKE) update-cargo-version VERSION_NO_V=$(VERSION_NO_V)
71
148
  @$(MAKE) update-readme-version NEW_TAG=$(NEW_TAG)
72
- @git add Cargo.toml Cargo.lock README.md
149
+ @$(MAKE) update-changelog NEW_TAG=$(NEW_TAG) VERSION_NO_V=$(VERSION_NO_V) CURRENT=$(CURRENT)
150
+ @git add Cargo.toml Cargo.lock README.md CHANGELOG.md
73
151
  @git commit -m "Bump version to $(NEW_TAG)"
74
152
  @git tag -a $(NEW_TAG) -m "Release $(NEW_TAG)"
75
153
  @echo "Version $(NEW_TAG) created and committed. Run 'git push && git push origin $(NEW_TAG)' to trigger release workflow."
@@ -85,7 +163,8 @@ version-minor:
85
163
  @echo "Current: $(CURRENT) -> New: $(NEW_TAG)"
86
164
  @$(MAKE) update-cargo-version VERSION_NO_V=$(VERSION_NO_V)
87
165
  @$(MAKE) update-readme-version NEW_TAG=$(NEW_TAG)
88
- @git add Cargo.toml Cargo.lock README.md
166
+ @$(MAKE) update-changelog NEW_TAG=$(NEW_TAG) VERSION_NO_V=$(VERSION_NO_V) CURRENT=$(CURRENT)
167
+ @git add Cargo.toml Cargo.lock README.md CHANGELOG.md
89
168
  @git commit -m "Bump version to $(NEW_TAG)"
90
169
  @git tag -a $(NEW_TAG) -m "Release $(NEW_TAG)"
91
170
  @echo "Version $(NEW_TAG) created and committed. Run 'git push && git push origin $(NEW_TAG)' to trigger release workflow."
@@ -102,7 +181,8 @@ version-patch:
102
181
  @echo "Current: $(CURRENT) -> New: $(NEW_TAG)"
103
182
  @$(MAKE) update-cargo-version VERSION_NO_V=$(VERSION_NO_V)
104
183
  @$(MAKE) update-readme-version NEW_TAG=$(NEW_TAG)
105
- @git add Cargo.toml Cargo.lock README.md
184
+ @$(MAKE) update-changelog NEW_TAG=$(NEW_TAG) VERSION_NO_V=$(VERSION_NO_V) CURRENT=$(CURRENT)
185
+ @git add Cargo.toml Cargo.lock README.md CHANGELOG.md
106
186
  @git commit -m "Bump version to $(NEW_TAG)"
107
187
  @git tag -a $(NEW_TAG) -m "Release $(NEW_TAG)"
108
188
  @echo "Version $(NEW_TAG) created and committed. Run 'git push && git push origin $(NEW_TAG)' to trigger release workflow."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.83
3
+ Version: 0.0.85
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## What this rule does
4
4
 
5
- Ensures that links to sections within the same document (like `#introduction`) point to actual headings that exist.
5
+ Ensures that links to sections within the same document (like `#introduction`) point to actual headings that exist. Cross-file fragment links (like `file.md#heading`) are not validated by this rule.
6
6
 
7
7
  ## Why this matters
8
8
 
@@ -26,6 +26,9 @@ Jump to [Getting Started](#getting-started) to begin.
26
26
  # Working with **bold** and *italic*
27
27
 
28
28
  Link to [formatted heading](#working-with-bold-and-italic)
29
+
30
+ <!-- Cross-file links are ignored by MD051 -->
31
+ See [external documentation](README.md#setup) for setup instructions.
29
32
  ```
30
33
 
31
34
  ### ❌ Incorrect
@@ -0,0 +1,10 @@
1
+ [toolchain]
2
+ channel = "1.87.0"
3
+ components = ["rustfmt", "clippy"]
4
+ targets = [
5
+ "x86_64-unknown-linux-gnu",
6
+ "aarch64-unknown-linux-gnu",
7
+ "x86_64-pc-windows-msvc",
8
+ "x86_64-apple-darwin",
9
+ "aarch64-apple-darwin"
10
+ ]
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+
3
+ # Extract release notes for a specific version from CHANGELOG.md
4
+
5
+ VERSION=${1:-$(git describe --tags --abbrev=0 | sed 's/^v//')}
6
+
7
+ if [ ! -f CHANGELOG.md ]; then
8
+ echo "CHANGELOG.md not found"
9
+ exit 1
10
+ fi
11
+
12
+ # Extract the section for this version
13
+ awk -v version="$VERSION" '
14
+ /^## \['"$VERSION"'\]/ { found = 1; next }
15
+ found && /^## \[/ { exit }
16
+ found { print }
17
+ ' CHANGELOG.md