rumdl 0.0.99__tar.gz → 0.0.100__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 (364) hide show
  1. {rumdl-0.0.99 → rumdl-0.0.100}/CHANGELOG.md +4 -1
  2. {rumdl-0.0.99 → rumdl-0.0.100}/Cargo.lock +7 -7
  3. {rumdl-0.0.99 → rumdl-0.0.100}/Cargo.toml +1 -1
  4. {rumdl-0.0.99 → rumdl-0.0.100}/Makefile +12 -6
  5. {rumdl-0.0.99 → rumdl-0.0.100}/PKG-INFO +2 -2
  6. {rumdl-0.0.99 → rumdl-0.0.100}/README.md +1 -1
  7. {rumdl-0.0.99 → rumdl-0.0.100}/docs/global-settings.md +1 -1
  8. rumdl-0.0.100/scripts/update-pre-commit-docs.sh +35 -0
  9. {rumdl-0.0.99 → rumdl-0.0.100}/src/lint_context.rs +119 -41
  10. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md032_blanks_around_lists.rs +62 -73
  11. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md045_no_alt_text.rs +108 -11
  12. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/document_structure.rs +147 -107
  13. rumdl-0.0.100/tests/deeply_nested_lists_performance_test.rs +455 -0
  14. rumdl-0.0.100/tests/escaped_brackets_test.rs +89 -0
  15. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/inline_content_edge_cases_test.rs +2 -2
  16. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md045_test.rs +27 -12
  17. {rumdl-0.0.99 → rumdl-0.0.100}/.config/nextest.toml +0 -0
  18. {rumdl-0.0.99 → rumdl-0.0.100}/.mise.toml +0 -0
  19. {rumdl-0.0.99 → rumdl-0.0.100}/.pre-commit-config.yaml +0 -0
  20. {rumdl-0.0.99 → rumdl-0.0.100}/.rumdl.toml +0 -0
  21. {rumdl-0.0.99 → rumdl-0.0.100}/.rustfmt.toml +0 -0
  22. {rumdl-0.0.99 → rumdl-0.0.100}/LICENSE +0 -0
  23. {rumdl-0.0.99 → rumdl-0.0.100}/MANIFEST.in +0 -0
  24. {rumdl-0.0.99 → rumdl-0.0.100}/assets/logo.png +0 -0
  25. {rumdl-0.0.99 → rumdl-0.0.100}/benches/fix_performance.rs +0 -0
  26. {rumdl-0.0.99 → rumdl-0.0.100}/benches/range_performance.rs +0 -0
  27. {rumdl-0.0.99 → rumdl-0.0.100}/benches/range_utils_benchmark.rs +0 -0
  28. {rumdl-0.0.99 → rumdl-0.0.100}/benches/rule_performance.rs +0 -0
  29. {rumdl-0.0.99 → rumdl-0.0.100}/benches/simple_fix_bench.rs +0 -0
  30. {rumdl-0.0.99 → rumdl-0.0.100}/docs/RULES.md +0 -0
  31. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md001.md +0 -0
  32. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md002.md +0 -0
  33. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md003.md +0 -0
  34. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md004.md +0 -0
  35. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md005.md +0 -0
  36. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md006.md +0 -0
  37. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md007.md +0 -0
  38. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md009.md +0 -0
  39. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md010.md +0 -0
  40. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md011.md +0 -0
  41. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md012.md +0 -0
  42. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md013.md +0 -0
  43. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md014.md +0 -0
  44. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md018.md +0 -0
  45. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md019.md +0 -0
  46. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md020.md +0 -0
  47. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md021.md +0 -0
  48. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md022.md +0 -0
  49. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md023.md +0 -0
  50. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md024.md +0 -0
  51. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md025.md +0 -0
  52. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md026.md +0 -0
  53. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md027.md +0 -0
  54. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md028.md +0 -0
  55. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md029.md +0 -0
  56. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md030.md +0 -0
  57. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md031.md +0 -0
  58. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md032.md +0 -0
  59. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md033.md +0 -0
  60. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md034.md +0 -0
  61. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md035.md +0 -0
  62. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md036.md +0 -0
  63. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md037.md +0 -0
  64. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md038.md +0 -0
  65. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md039.md +0 -0
  66. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md040.md +0 -0
  67. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md041.md +0 -0
  68. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md042.md +0 -0
  69. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md043.md +0 -0
  70. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md044.md +0 -0
  71. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md045.md +0 -0
  72. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md046.md +0 -0
  73. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md047.md +0 -0
  74. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md048.md +0 -0
  75. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md049.md +0 -0
  76. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md050.md +0 -0
  77. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md051.md +0 -0
  78. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md052.md +0 -0
  79. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md053.md +0 -0
  80. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md054.md +0 -0
  81. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md055.md +0 -0
  82. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md056.md +0 -0
  83. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md057.md +0 -0
  84. {rumdl-0.0.99 → rumdl-0.0.100}/docs/md058.md +0 -0
  85. {rumdl-0.0.99 → rumdl-0.0.100}/docs/vscode-extension.md +0 -0
  86. {rumdl-0.0.99 → rumdl-0.0.100}/parity_check.py +0 -0
  87. {rumdl-0.0.99 → rumdl-0.0.100}/pyproject.toml +0 -0
  88. {rumdl-0.0.99 → rumdl-0.0.100}/python/MANIFEST.in +0 -0
  89. {rumdl-0.0.99 → rumdl-0.0.100}/python/PYTHON-README.md +0 -0
  90. {rumdl-0.0.99 → rumdl-0.0.100}/python/rumdl/__init__.py +0 -0
  91. {rumdl-0.0.99 → rumdl-0.0.100}/python/rumdl/__main__.py +0 -0
  92. {rumdl-0.0.99 → rumdl-0.0.100}/python/rumdl/py.typed +0 -0
  93. {rumdl-0.0.99 → rumdl-0.0.100}/rumdl.toml.example +0 -0
  94. {rumdl-0.0.99 → rumdl-0.0.100}/rust-toolchain.toml +0 -0
  95. {rumdl-0.0.99 → rumdl-0.0.100}/scripts/extract-changelog.sh +0 -0
  96. {rumdl-0.0.99 → rumdl-0.0.100}/scripts/prepare-release.sh +0 -0
  97. {rumdl-0.0.99 → rumdl-0.0.100}/scripts/setup-pre-commit.sh +0 -0
  98. {rumdl-0.0.99 → rumdl-0.0.100}/src/bin/benchmark.rs +0 -0
  99. {rumdl-0.0.99 → rumdl-0.0.100}/src/bin/benchmark_rule.rs +0 -0
  100. {rumdl-0.0.99 → rumdl-0.0.100}/src/bin/file_parallel_benchmark.rs +0 -0
  101. {rumdl-0.0.99 → rumdl-0.0.100}/src/bin/measure_code_span_performance.rs +0 -0
  102. {rumdl-0.0.99 → rumdl-0.0.100}/src/config.rs +0 -0
  103. {rumdl-0.0.99 → rumdl-0.0.100}/src/exit_codes.rs +0 -0
  104. {rumdl-0.0.99 → rumdl-0.0.100}/src/init.rs +0 -0
  105. {rumdl-0.0.99 → rumdl-0.0.100}/src/inline_config.rs +0 -0
  106. {rumdl-0.0.99 → rumdl-0.0.100}/src/lib.rs +0 -0
  107. {rumdl-0.0.99 → rumdl-0.0.100}/src/lsp/mod.rs +0 -0
  108. {rumdl-0.0.99 → rumdl-0.0.100}/src/lsp/server.rs +0 -0
  109. {rumdl-0.0.99 → rumdl-0.0.100}/src/lsp/types.rs +0 -0
  110. {rumdl-0.0.99 → rumdl-0.0.100}/src/main.rs +0 -0
  111. {rumdl-0.0.99 → rumdl-0.0.100}/src/markdownlint_config.rs +0 -0
  112. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/azure.rs +0 -0
  113. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/concise.rs +0 -0
  114. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/github.rs +0 -0
  115. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/gitlab.rs +0 -0
  116. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/grouped.rs +0 -0
  117. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/json.rs +0 -0
  118. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/json_lines.rs +0 -0
  119. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/junit.rs +0 -0
  120. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/mod.rs +0 -0
  121. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/pylint.rs +0 -0
  122. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/sarif.rs +0 -0
  123. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/formatters/text.rs +0 -0
  124. {rumdl-0.0.99 → rumdl-0.0.100}/src/output/mod.rs +0 -0
  125. {rumdl-0.0.99 → rumdl-0.0.100}/src/parallel.rs +0 -0
  126. {rumdl-0.0.99 → rumdl-0.0.100}/src/performance.rs +0 -0
  127. {rumdl-0.0.99 → rumdl-0.0.100}/src/profiling.rs +0 -0
  128. {rumdl-0.0.99 → rumdl-0.0.100}/src/python.rs +0 -0
  129. {rumdl-0.0.99 → rumdl-0.0.100}/src/rule.rs +0 -0
  130. {rumdl-0.0.99 → rumdl-0.0.100}/src/rule_config.rs +0 -0
  131. {rumdl-0.0.99 → rumdl-0.0.100}/src/rule_config_serde.rs +0 -0
  132. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/blockquote_utils.rs +0 -0
  133. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/code_block_utils.rs +0 -0
  134. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/code_fence_utils.rs +0 -0
  135. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/emphasis_style.rs +0 -0
  136. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/front_matter_utils.rs +0 -0
  137. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/heading_utils.rs +0 -0
  138. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/list_utils.rs +0 -0
  139. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md001_heading_increment.rs +0 -0
  140. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  141. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md002_first_heading_h1.rs +0 -0
  142. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md003_heading_style/md003_config.rs +0 -0
  143. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md003_heading_style.rs +0 -0
  144. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  145. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md004_unordered_list_style.rs +0 -0
  146. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md005_list_indent.rs +0 -0
  147. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md006_start_bullets.rs +0 -0
  148. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md007_ul_indent/md007_config.rs +0 -0
  149. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md007_ul_indent.rs +0 -0
  150. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  151. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md009_trailing_spaces.rs +0 -0
  152. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  153. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md010_no_hard_tabs.rs +0 -0
  154. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md011_no_reversed_links.rs +0 -0
  155. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
  156. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md012_no_multiple_blanks.rs +0 -0
  157. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md013_line_length/md013_config.rs +0 -0
  158. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md013_line_length.rs +0 -0
  159. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  160. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md014_commands_show_output.rs +0 -0
  161. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md018_no_missing_space_atx.rs +0 -0
  162. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  163. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  164. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  165. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  166. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md022_blanks_around_headings.rs +0 -0
  167. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md023_heading_start_left.rs +0 -0
  168. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  169. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md024_no_duplicate_heading.rs +0 -0
  170. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md025_single_title/md025_config.rs +0 -0
  171. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md025_single_title.rs +0 -0
  172. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  173. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  174. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  175. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  176. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md029_ordered_list_prefix.rs +0 -0
  177. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  178. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md030_list_marker_space.rs +0 -0
  179. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md031_blanks_around_fences.rs +0 -0
  180. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  181. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md033_no_inline_html.rs +0 -0
  182. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md034_no_bare_urls.rs +0 -0
  183. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md035_hr_style/md035_config.rs +0 -0
  184. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md035_hr_style.rs +0 -0
  185. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  186. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  187. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  188. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md038_no_space_in_code.rs +0 -0
  189. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md039_no_space_in_links.rs +0 -0
  190. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md040_fenced_code_language.rs +0 -0
  191. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md041_first_line_heading.rs +0 -0
  192. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md042_no_empty_links.rs +0 -0
  193. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md043_required_headings.rs +0 -0
  194. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md044_proper_names/md044_config.rs +0 -0
  195. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md044_proper_names.rs +0 -0
  196. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  197. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  198. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md046_code_block_style.rs +0 -0
  199. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md047_single_trailing_newline.rs +0 -0
  200. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  201. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md048_code_fence_style.rs +0 -0
  202. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  203. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md049_emphasis_style.rs +0 -0
  204. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md050_strong_style/md050_config.rs +0 -0
  205. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md050_strong_style.rs +0 -0
  206. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md051_link_fragments.rs +0 -0
  207. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md052_reference_links_images.rs +0 -0
  208. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  209. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  210. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md054_link_image_style.rs +0 -0
  211. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  212. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md055_table_pipe_style.rs +0 -0
  213. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md056_table_column_count.rs +0 -0
  214. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  215. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md057_existing_relative_links.rs +0 -0
  216. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/md058_blanks_around_tables.rs +0 -0
  217. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/mod.rs +0 -0
  218. {rumdl-0.0.99 → rumdl-0.0.100}/src/rules/strong_style.rs +0 -0
  219. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/ast_utils.rs +0 -0
  220. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/code_block_utils.rs +0 -0
  221. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/early_returns.rs +0 -0
  222. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/element_cache.rs +0 -0
  223. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/emphasis_utils.rs +0 -0
  224. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/fix_utils.rs +0 -0
  225. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/markdown_elements.rs +0 -0
  226. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/mod.rs +0 -0
  227. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/range_utils.rs +0 -0
  228. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/regex_cache.rs +0 -0
  229. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/string_interner.rs +0 -0
  230. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/table_utils.rs +0 -0
  231. {rumdl-0.0.99 → rumdl-0.0.100}/src/utils/text_reflow.rs +0 -0
  232. {rumdl-0.0.99 → rumdl-0.0.100}/src/vscode.rs +0 -0
  233. {rumdl-0.0.99 → rumdl-0.0.100}/tests/advanced_integration_tests.rs +0 -0
  234. {rumdl-0.0.99 → rumdl-0.0.100}/tests/character_ranges/additional_tests.rs +0 -0
  235. {rumdl-0.0.99 → rumdl-0.0.100}/tests/character_ranges/basic_tests.rs +0 -0
  236. {rumdl-0.0.99 → rumdl-0.0.100}/tests/character_ranges/comprehensive_tests.rs +0 -0
  237. {rumdl-0.0.99 → rumdl-0.0.100}/tests/character_ranges/extended_tests.rs +0 -0
  238. {rumdl-0.0.99 → rumdl-0.0.100}/tests/character_ranges/mod.rs +0 -0
  239. {rumdl-0.0.99 → rumdl-0.0.100}/tests/character_ranges/unicode_utils.rs +0 -0
  240. {rumdl-0.0.99 → rumdl-0.0.100}/tests/cli_duplication_test.rs +0 -0
  241. {rumdl-0.0.99 → rumdl-0.0.100}/tests/cli_explain_test.rs +0 -0
  242. {rumdl-0.0.99 → rumdl-0.0.100}/tests/cli_flag_precedence_test.rs +0 -0
  243. {rumdl-0.0.99 → rumdl-0.0.100}/tests/cli_integration_tests.rs +0 -0
  244. {rumdl-0.0.99 → rumdl-0.0.100}/tests/cli_lsp_fix_consistency.rs +0 -0
  245. {rumdl-0.0.99 → rumdl-0.0.100}/tests/cli_statistics_test.rs +0 -0
  246. {rumdl-0.0.99 → rumdl-0.0.100}/tests/commonmark_compliance_tests.rs +0 -0
  247. {rumdl-0.0.99 → rumdl-0.0.100}/tests/comprehensive_integration_tests.rs +0 -0
  248. {rumdl-0.0.99 → rumdl-0.0.100}/tests/comprehensive_output_format_tests.rs +0 -0
  249. {rumdl-0.0.99 → rumdl-0.0.100}/tests/config_application_tests.rs +0 -0
  250. {rumdl-0.0.99 → rumdl-0.0.100}/tests/config_file_command_test.rs +0 -0
  251. {rumdl-0.0.99 → rumdl-0.0.100}/tests/config_tests.rs +0 -0
  252. {rumdl-0.0.99 → rumdl-0.0.100}/tests/configuration_inheritance_tests.rs +0 -0
  253. {rumdl-0.0.99 → rumdl-0.0.100}/tests/consistency_regression_tests.rs +0 -0
  254. {rumdl-0.0.99 → rumdl-0.0.100}/tests/cross_platform_compatibility_tests.rs +0 -0
  255. {rumdl-0.0.99 → rumdl-0.0.100}/tests/final_confidence_assessment.rs +0 -0
  256. {rumdl-0.0.99 → rumdl-0.0.100}/tests/init_command_test.rs +0 -0
  257. {rumdl-0.0.99 → rumdl-0.0.100}/tests/init_tests.rs +0 -0
  258. {rumdl-0.0.99 → rumdl-0.0.100}/tests/inline_config_test.rs +0 -0
  259. {rumdl-0.0.99 → rumdl-0.0.100}/tests/integration_tests.rs +0 -0
  260. {rumdl-0.0.99 → rumdl-0.0.100}/tests/json_output_test.rs +0 -0
  261. {rumdl-0.0.99 → rumdl-0.0.100}/tests/lib.rs +0 -0
  262. {rumdl-0.0.99 → rumdl-0.0.100}/tests/lsp_editor_integration_tests.rs +0 -0
  263. {rumdl-0.0.99 → rumdl-0.0.100}/tests/lsp_integration_tests.rs +0 -0
  264. {rumdl-0.0.99 → rumdl-0.0.100}/tests/lsp_memory_leak_tests.rs +0 -0
  265. {rumdl-0.0.99 → rumdl-0.0.100}/tests/lsp_tests.rs +0 -0
  266. {rumdl-0.0.99 → rumdl-0.0.100}/tests/malformed_markdown_stress_tests.rs +0 -0
  267. {rumdl-0.0.99 → rumdl-0.0.100}/tests/markdownlint_cli_integration.rs +0 -0
  268. {rumdl-0.0.99 → rumdl-0.0.100}/tests/markdownlint_config_test.rs +0 -0
  269. {rumdl-0.0.99 → rumdl-0.0.100}/tests/markdownlintignore_test.rs +0 -0
  270. {rumdl-0.0.99 → rumdl-0.0.100}/tests/md013_reflow_integration_test.rs +0 -0
  271. {rumdl-0.0.99 → rumdl-0.0.100}/tests/nested_code_block_test.rs +0 -0
  272. {rumdl-0.0.99 → rumdl-0.0.100}/tests/output_format_integration_tests.rs +0 -0
  273. {rumdl-0.0.99 → rumdl-0.0.100}/tests/output_format_tests.rs +0 -0
  274. {rumdl-0.0.99 → rumdl-0.0.100}/tests/perf_check.rs +0 -0
  275. {rumdl-0.0.99 → rumdl-0.0.100}/tests/performance_validation_tests.rs +0 -0
  276. {rumdl-0.0.99 → rumdl-0.0.100}/tests/pyproject_config_tests.rs +0 -0
  277. {rumdl-0.0.99 → rumdl-0.0.100}/tests/python_bindings_test.rs +0 -0
  278. {rumdl-0.0.99 → rumdl-0.0.100}/tests/real_world_repository_tests.rs +0 -0
  279. {rumdl-0.0.99 → rumdl-0.0.100}/tests/regression_prevention_tests.rs +0 -0
  280. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/emphasis_edge_cases_test.rs +0 -0
  281. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/heading_edge_cases_test.rs +0 -0
  282. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/link_edge_cases_test.rs +0 -0
  283. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/list_rules_integration_test.rs +0 -0
  284. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md001_test.rs +0 -0
  285. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md001_unicode_test.rs +0 -0
  286. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md002_test.rs +0 -0
  287. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md003_test.rs +0 -0
  288. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md004_test.rs +0 -0
  289. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md005_test.rs +0 -0
  290. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md005_unicode_test.rs +0 -0
  291. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md006_test.rs +0 -0
  292. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md006_unicode_test.rs +0 -0
  293. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md007_test.rs +0 -0
  294. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md009_test.rs +0 -0
  295. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md010_test.rs +0 -0
  296. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md011_test.rs +0 -0
  297. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md012_test.rs +0 -0
  298. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md013_test.rs +0 -0
  299. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md014_test.rs +0 -0
  300. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md018_test.rs +0 -0
  301. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md019_test.rs +0 -0
  302. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md020_test.rs +0 -0
  303. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md021_test.rs +0 -0
  304. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md022_test.rs +0 -0
  305. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md023_extended_test.rs +0 -0
  306. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md023_test.rs +0 -0
  307. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md024_test.rs +0 -0
  308. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md025_test.rs +0 -0
  309. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md026_test.rs +0 -0
  310. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md027_test.rs +0 -0
  311. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md028_test.rs +0 -0
  312. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md029_test.rs +0 -0
  313. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md029_unicode_test.rs +0 -0
  314. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md030_test.rs +0 -0
  315. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md031_test.rs +0 -0
  316. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md032_test.rs +0 -0
  317. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md033_extended_test.rs +0 -0
  318. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md033_test.rs +0 -0
  319. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md034_ipv6_test.rs +0 -0
  320. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md034_test.rs +0 -0
  321. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md035_test.rs +0 -0
  322. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md036_test.rs +0 -0
  323. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md037_test.rs +0 -0
  324. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md038_nested_backticks_test.rs +0 -0
  325. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md038_test.rs +0 -0
  326. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md039_test.rs +0 -0
  327. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md040_test.rs +0 -0
  328. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md041_test.rs +0 -0
  329. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md042_test.rs +0 -0
  330. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md043_test.rs +0 -0
  331. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md044_test.rs +0 -0
  332. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md046_test.rs +0 -0
  333. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md047_test.rs +0 -0
  334. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md048_test.rs +0 -0
  335. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md049_test.rs +0 -0
  336. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md050_test.rs +0 -0
  337. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md051_test.rs +0 -0
  338. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md051_unicode_test.rs +0 -0
  339. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md052_test.rs +0 -0
  340. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md053_additional_test.rs +0 -0
  341. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md053_proptest.rs +0 -0
  342. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md053_test.rs +0 -0
  343. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md054_test.rs +0 -0
  344. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md054_unicode_test.rs +0 -0
  345. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md055_test.rs +0 -0
  346. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md056_test.rs +0 -0
  347. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md057_test.rs +0 -0
  348. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/md058_test.rs +0 -0
  349. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules/mod.rs +0 -0
  350. {rumdl-0.0.99 → rumdl-0.0.100}/tests/rules_mod_test.rs +0 -0
  351. {rumdl-0.0.99 → rumdl-0.0.100}/tests/thread_safety_tests.rs +0 -0
  352. {rumdl-0.0.99 → rumdl-0.0.100}/tests/unicode_edge_case_tests.rs +0 -0
  353. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils/blockquote_utils_test.rs +0 -0
  354. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils/code_block_utils_extended_test.rs +0 -0
  355. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils/code_block_utils_test.rs +0 -0
  356. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils/core_utils_test.rs +0 -0
  357. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils/front_matter_utils_test.rs +0 -0
  358. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils/line_index_test.rs +0 -0
  359. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils/mod.rs +0 -0
  360. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils_markdown_edge_cases.rs +0 -0
  361. {rumdl-0.0.99 → rumdl-0.0.100}/tests/utils_tests.rs +0 -0
  362. {rumdl-0.0.99 → rumdl-0.0.100}/tests/vscode_extension_fixes.rs +0 -0
  363. {rumdl-0.0.99 → rumdl-0.0.100}/tests/vscode_test.rs +0 -0
  364. {rumdl-0.0.99 → rumdl-0.0.100}/tests/vscode_tests.rs +0 -0
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.0.100] - 2025-07-22
11
+
10
12
  ## [0.0.99] - 2025-07-22
11
13
 
12
14
  ### Fixed
@@ -223,7 +225,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
223
225
 
224
226
  - Initial implementation of remaining rules for markdownlint parity
225
227
 
226
- [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.99...HEAD
228
+ [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.100...HEAD
229
+ [0.0.100]: https://github.com/rvben/rumdl/compare/v0.0.99...v0.0.100
227
230
  [0.0.99]: https://github.com/rvben/rumdl/compare/v0.0.98...v0.0.99
228
231
  [0.0.98]: https://github.com/rvben/rumdl/compare/v0.0.97...v0.0.98
229
232
  [0.0.97]: https://github.com/rvben/rumdl/compare/v0.0.96...v0.0.97
@@ -859,9 +859,9 @@ checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
859
859
 
860
860
  [[package]]
861
861
  name = "io-uring"
862
- version = "0.7.8"
862
+ version = "0.7.9"
863
863
  source = "registry+https://github.com/rust-lang/crates.io-index"
864
- checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013"
864
+ checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
865
865
  dependencies = [
866
866
  "bitflags 2.9.1",
867
867
  "cfg-if",
@@ -1397,9 +1397,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
1397
1397
 
1398
1398
  [[package]]
1399
1399
  name = "rand"
1400
- version = "0.9.1"
1400
+ version = "0.9.2"
1401
1401
  source = "registry+https://github.com/rust-lang/crates.io-index"
1402
- checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
1402
+ checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
1403
1403
  dependencies = [
1404
1404
  "rand_chacha",
1405
1405
  "rand_core",
@@ -1455,9 +1455,9 @@ dependencies = [
1455
1455
 
1456
1456
  [[package]]
1457
1457
  name = "redox_syscall"
1458
- version = "0.5.13"
1458
+ version = "0.5.15"
1459
1459
  source = "registry+https://github.com/rust-lang/crates.io-index"
1460
- checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6"
1460
+ checksum = "7e8af0dde094006011e6a740d4879319439489813bd0bcdc7d821beaeeff48ec"
1461
1461
  dependencies = [
1462
1462
  "bitflags 2.9.1",
1463
1463
  ]
@@ -1493,7 +1493,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
1493
1493
 
1494
1494
  [[package]]
1495
1495
  name = "rumdl"
1496
- version = "0.0.99"
1496
+ version = "0.0.100"
1497
1497
  dependencies = [
1498
1498
  "anyhow",
1499
1499
  "assert_cmd",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.99"
3
+ version = "0.0.100"
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)"
@@ -124,6 +124,12 @@ update-readme-version:
124
124
  @rm -f README.md.bak
125
125
  @echo "README.md updated to rev $(NEW_TAG)"
126
126
 
127
+ update-all-docs-version:
128
+ @echo "Updating all documentation to use $(NEW_TAG)..."
129
+ @perl -i.bak -E 's/rev: v[0-9]+\.[0-9]+\.[0-9]+/rev: $(NEW_TAG)/g' README.md docs/global-settings.md ../rumdl-pre-commit/README.md 2>/dev/null || true
130
+ @rm -f README.md.bak docs/global-settings.md.bak ../rumdl-pre-commit/README.md.bak 2>/dev/null || true
131
+ @echo "All documentation updated to rev $(NEW_TAG)"
132
+
127
133
  update-changelog:
128
134
  @echo "Updating CHANGELOG.md for $(NEW_TAG)..."
129
135
  @if [ -f CHANGELOG.md ]; then \
@@ -145,9 +151,9 @@ version-major:
145
151
  $(eval VERSION_NO_V := $(NEW_MAJOR).0.0)
146
152
  @echo "Current: $(CURRENT) -> New: $(NEW_TAG)"
147
153
  @$(MAKE) update-cargo-version VERSION_NO_V=$(VERSION_NO_V)
148
- @$(MAKE) update-readme-version NEW_TAG=$(NEW_TAG)
154
+ @$(MAKE) update-all-docs-version NEW_TAG=$(NEW_TAG)
149
155
  @$(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
156
+ @git add Cargo.toml Cargo.lock README.md docs/global-settings.md CHANGELOG.md
151
157
  @git commit -m "Bump version to $(NEW_TAG)"
152
158
  @git tag -a $(NEW_TAG) -m "Release $(NEW_TAG)"
153
159
  @echo "Version $(NEW_TAG) created and committed. Run 'git push && git push origin $(NEW_TAG)' to trigger release workflow."
@@ -162,9 +168,9 @@ version-minor:
162
168
  $(eval VERSION_NO_V := $(MAJOR).$(NEW_MINOR).0)
163
169
  @echo "Current: $(CURRENT) -> New: $(NEW_TAG)"
164
170
  @$(MAKE) update-cargo-version VERSION_NO_V=$(VERSION_NO_V)
165
- @$(MAKE) update-readme-version NEW_TAG=$(NEW_TAG)
171
+ @$(MAKE) update-all-docs-version NEW_TAG=$(NEW_TAG)
166
172
  @$(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
173
+ @git add Cargo.toml Cargo.lock README.md docs/global-settings.md CHANGELOG.md
168
174
  @git commit -m "Bump version to $(NEW_TAG)"
169
175
  @git tag -a $(NEW_TAG) -m "Release $(NEW_TAG)"
170
176
  @echo "Version $(NEW_TAG) created and committed. Run 'git push && git push origin $(NEW_TAG)' to trigger release workflow."
@@ -180,9 +186,9 @@ version-patch:
180
186
  $(eval VERSION_NO_V := $(MAJOR).$(MINOR).$(NEW_PATCH))
181
187
  @echo "Current: $(CURRENT) -> New: $(NEW_TAG)"
182
188
  @$(MAKE) update-cargo-version VERSION_NO_V=$(VERSION_NO_V)
183
- @$(MAKE) update-readme-version NEW_TAG=$(NEW_TAG)
189
+ @$(MAKE) update-all-docs-version NEW_TAG=$(NEW_TAG)
184
190
  @$(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
191
+ @git add Cargo.toml Cargo.lock README.md docs/global-settings.md CHANGELOG.md
186
192
  @git commit -m "Bump version to $(NEW_TAG)"
187
193
  @git tag -a $(NEW_TAG) -m "Release $(NEW_TAG)"
188
194
  @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.99
3
+ Version: 0.0.100
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -242,7 +242,7 @@ Add the following to your `.pre-commit-config.yaml`:
242
242
  ```yaml
243
243
  repos:
244
244
  - repo: https://github.com/rvben/rumdl-pre-commit
245
- rev: v0.0.45 # Use the latest release tag
245
+ rev: v0.0.99 # Use the latest release tag
246
246
  hooks:
247
247
  - id: rumdl
248
248
  # To only check (default):
@@ -211,7 +211,7 @@ Add the following to your `.pre-commit-config.yaml`:
211
211
  ```yaml
212
212
  repos:
213
213
  - repo: https://github.com/rvben/rumdl-pre-commit
214
- rev: v0.0.45 # Use the latest release tag
214
+ rev: v0.0.99 # Use the latest release tag
215
215
  hooks:
216
216
  - id: rumdl
217
217
  # To only check (default):
@@ -492,7 +492,7 @@ find . -name "*.md" -o -name "*.markdown" | head -10
492
492
 
493
493
  ```yaml
494
494
  - repo: https://github.com/rvben/rumdl-pre-commit
495
- rev: v0.0.45
495
+ rev: v0.0.99
496
496
  hooks:
497
497
  - id: rumdl
498
498
  args: [--config=.rumdl.toml]
@@ -0,0 +1,35 @@
1
+ #!/bin/bash
2
+ # Script to update rumdl-pre-commit version references in documentation
3
+
4
+ set -e
5
+
6
+ # Get the latest release version
7
+ LATEST_VERSION=$(gh release list --repo rvben/rumdl --limit 1 | awk '{print $1}')
8
+
9
+ if [ -z "$LATEST_VERSION" ]; then
10
+ echo "Error: Could not determine latest version"
11
+ exit 1
12
+ fi
13
+
14
+ echo "Latest rumdl version: $LATEST_VERSION"
15
+
16
+ # Update version in all documentation files
17
+ FILES=(
18
+ "README.md"
19
+ "docs/global-settings.md"
20
+ "../rumdl-pre-commit/README.md"
21
+ )
22
+
23
+ for file in "${FILES[@]}"; do
24
+ if [ -f "$file" ]; then
25
+ echo "Updating $file..."
26
+ # Update rev: vX.X.X patterns
27
+ sed -i.bak -E "s/rev: v[0-9]+\.[0-9]+\.[0-9]+/rev: $LATEST_VERSION/g" "$file"
28
+ # Clean up backup files
29
+ rm -f "${file}.bak"
30
+ else
31
+ echo "Warning: $file not found"
32
+ fi
33
+ done
34
+
35
+ echo "Documentation updated to use $LATEST_VERSION"
@@ -1263,52 +1263,130 @@ fn merge_adjacent_list_blocks(list_blocks: &mut Vec<ListBlock>, lines: &[LineInf
1263
1263
  return;
1264
1264
  }
1265
1265
 
1266
- let mut merged = Vec::new();
1267
- let mut current = list_blocks[0].clone();
1268
-
1269
- for next in list_blocks.iter().skip(1) {
1270
- // Check if blocks should be merged
1271
- // For MD032 purposes, consecutive unordered lists with different markers
1272
- // should be treated as one list block only if truly consecutive
1273
- let consecutive = next.start_line == current.end_line + 1;
1274
- let only_blank_between = next.start_line == current.end_line + 2;
1275
-
1276
- // For ordered lists, we need to be more careful about merging
1277
- let should_merge_condition = if current.is_ordered && next.is_ordered {
1278
- // Only merge ordered lists if there's meaningful content between them
1279
- // (like code blocks, continuation paragraphs) not just blank lines
1280
- consecutive || has_meaningful_content_between(&current, next, lines)
1281
- } else {
1282
- // For unordered lists, use original logic
1283
- consecutive || (only_blank_between && current.marker == next.marker)
1284
- };
1285
-
1286
- let should_merge = next.is_ordered == current.is_ordered
1287
- && next.blockquote_prefix == current.blockquote_prefix
1288
- && next.nesting_level == current.nesting_level
1289
- && should_merge_condition;
1290
-
1291
- if should_merge {
1292
- // Merge blocks
1293
- current.end_line = next.end_line;
1294
- current.item_lines.extend_from_slice(&next.item_lines);
1295
-
1296
- // Update marker consistency
1297
- if !current.is_ordered && current.marker.is_some() && next.marker.is_some() && current.marker != next.marker
1298
- {
1299
- current.marker = None; // Mixed markers
1266
+ let mut merger = ListBlockMerger::new(lines);
1267
+ *list_blocks = merger.merge(list_blocks);
1268
+ }
1269
+
1270
+ /// Helper struct to manage the complex logic of merging list blocks
1271
+ struct ListBlockMerger<'a> {
1272
+ lines: &'a [LineInfo],
1273
+ }
1274
+
1275
+ impl<'a> ListBlockMerger<'a> {
1276
+ fn new(lines: &'a [LineInfo]) -> Self {
1277
+ Self { lines }
1278
+ }
1279
+
1280
+ fn merge(&mut self, list_blocks: &[ListBlock]) -> Vec<ListBlock> {
1281
+ let mut merged = Vec::with_capacity(list_blocks.len());
1282
+ let mut current = list_blocks[0].clone();
1283
+
1284
+ for next in list_blocks.iter().skip(1) {
1285
+ if self.should_merge_blocks(&current, next) {
1286
+ current = self.merge_two_blocks(current, next);
1287
+ } else {
1288
+ merged.push(current);
1289
+ current = next.clone();
1300
1290
  }
1301
- } else {
1302
- // Save current and start new
1303
- merged.push(current);
1304
- current = next.clone();
1305
1291
  }
1292
+
1293
+ merged.push(current);
1294
+ merged
1295
+ }
1296
+
1297
+ /// Determine if two adjacent list blocks should be merged
1298
+ fn should_merge_blocks(&self, current: &ListBlock, next: &ListBlock) -> bool {
1299
+ // Basic compatibility checks
1300
+ if !self.blocks_are_compatible(current, next) {
1301
+ return false;
1302
+ }
1303
+
1304
+ // Check spacing and content between blocks
1305
+ let spacing = self.analyze_spacing_between(current, next);
1306
+ match spacing {
1307
+ BlockSpacing::Consecutive => true,
1308
+ BlockSpacing::SingleBlank => self.can_merge_with_blank_between(current, next),
1309
+ BlockSpacing::MultipleBlanks | BlockSpacing::ContentBetween => {
1310
+ self.can_merge_with_content_between(current, next)
1311
+ }
1312
+ }
1313
+ }
1314
+
1315
+ /// Check if blocks have compatible structure for merging
1316
+ fn blocks_are_compatible(&self, current: &ListBlock, next: &ListBlock) -> bool {
1317
+ current.is_ordered == next.is_ordered
1318
+ && current.blockquote_prefix == next.blockquote_prefix
1319
+ && current.nesting_level == next.nesting_level
1306
1320
  }
1307
1321
 
1308
- // Don't forget the last block
1309
- merged.push(current);
1322
+ /// Analyze the spacing between two list blocks
1323
+ fn analyze_spacing_between(&self, current: &ListBlock, next: &ListBlock) -> BlockSpacing {
1324
+ let gap = next.start_line - current.end_line;
1325
+
1326
+ match gap {
1327
+ 1 => BlockSpacing::Consecutive,
1328
+ 2 => BlockSpacing::SingleBlank,
1329
+ _ if gap > 2 => {
1330
+ if self.has_only_blank_lines_between(current, next) {
1331
+ BlockSpacing::MultipleBlanks
1332
+ } else {
1333
+ BlockSpacing::ContentBetween
1334
+ }
1335
+ }
1336
+ _ => BlockSpacing::Consecutive, // gap == 0, overlapping (shouldn't happen)
1337
+ }
1338
+ }
1339
+
1340
+ /// Check if unordered lists can be merged with a single blank line between
1341
+ fn can_merge_with_blank_between(&self, current: &ListBlock, next: &ListBlock) -> bool {
1342
+ // Only merge unordered lists with same marker across single blank
1343
+ !current.is_ordered && current.marker == next.marker
1344
+ }
1345
+
1346
+ /// Check if ordered lists can be merged when there's content between them
1347
+ fn can_merge_with_content_between(&self, current: &ListBlock, next: &ListBlock) -> bool {
1348
+ // Only consider merging ordered lists with meaningful content between
1349
+ current.is_ordered && next.is_ordered && has_meaningful_content_between(current, next, self.lines)
1350
+ }
1351
+
1352
+ /// Check if there are only blank lines between blocks
1353
+ fn has_only_blank_lines_between(&self, current: &ListBlock, next: &ListBlock) -> bool {
1354
+ for line_num in (current.end_line + 1)..next.start_line {
1355
+ if let Some(line_info) = self.lines.get(line_num - 1) {
1356
+ if !line_info.content.trim().is_empty() {
1357
+ return false;
1358
+ }
1359
+ }
1360
+ }
1361
+ true
1362
+ }
1363
+
1364
+ /// Merge two compatible list blocks into one
1365
+ fn merge_two_blocks(&self, mut current: ListBlock, next: &ListBlock) -> ListBlock {
1366
+ current.end_line = next.end_line;
1367
+ current.item_lines.extend_from_slice(&next.item_lines);
1368
+
1369
+ // Handle marker consistency for unordered lists
1370
+ if !current.is_ordered && self.markers_differ(&current, next) {
1371
+ current.marker = None; // Mixed markers
1372
+ }
1373
+
1374
+ current
1375
+ }
1376
+
1377
+ /// Check if two blocks have different markers
1378
+ fn markers_differ(&self, current: &ListBlock, next: &ListBlock) -> bool {
1379
+ current.marker.is_some() && next.marker.is_some() && current.marker != next.marker
1380
+ }
1381
+ }
1310
1382
 
1311
- *list_blocks = merged;
1383
+ /// Types of spacing between list blocks
1384
+ #[derive(Debug, PartialEq)]
1385
+ enum BlockSpacing {
1386
+ Consecutive, // No gap between blocks
1387
+ SingleBlank, // One blank line between blocks
1388
+ MultipleBlanks, // Multiple blank lines but no content
1389
+ ContentBetween, // Content exists between blocks
1312
1390
  }
1313
1391
 
1314
1392
  /// Check if there's meaningful content (not just blank lines) between two list blocks
@@ -369,33 +369,10 @@ impl Rule for MD032BlanksAroundLists {
369
369
  }
370
370
 
371
371
  fn check(&self, ctx: &crate::lint_context::LintContext) -> LintResult {
372
- let content = ctx.content;
373
-
374
- // Early return for empty content
375
- if content.is_empty() {
376
- return Ok(Vec::new());
377
- }
378
-
379
- // Quick check for list markers
380
- if !content.contains('-')
381
- && !content.contains('*')
382
- && !content.contains('+')
383
- && !content.chars().any(|c| c.is_numeric())
384
- {
385
- return Ok(Vec::new());
386
- }
387
-
388
- let structure = document_structure_from_str(content);
389
- let lines: Vec<&str> = content.lines().collect();
390
- let line_index = LineIndex::new(content.to_string());
391
-
392
- let list_blocks = self.convert_list_blocks(ctx);
393
-
394
- if list_blocks.is_empty() {
395
- return Ok(Vec::new());
396
- }
397
-
398
- self.perform_checks(ctx, &structure, &lines, &list_blocks, &line_index)
372
+ // Delegate to optimized check_with_structure by creating a temporary DocumentStructure
373
+ // This fallback path should rarely be used since the main lint engine calls check_with_structure
374
+ let structure = document_structure_from_str(ctx.content);
375
+ self.check_with_structure(ctx, &structure)
399
376
  }
400
377
 
401
378
  /// Optimized check using pre-computed document structure
@@ -423,7 +400,64 @@ impl Rule for MD032BlanksAroundLists {
423
400
  }
424
401
 
425
402
  fn fix(&self, ctx: &crate::lint_context::LintContext) -> Result<String, LintError> {
403
+ // Delegate to helper method with temporary DocumentStructure
426
404
  let structure = document_structure_from_str(ctx.content);
405
+ self.fix_with_structure(ctx, &structure)
406
+ }
407
+
408
+ fn should_skip(&self, ctx: &crate::lint_context::LintContext) -> bool {
409
+ ctx.content.is_empty() || ctx.list_blocks.is_empty()
410
+ }
411
+
412
+ fn category(&self) -> RuleCategory {
413
+ RuleCategory::List
414
+ }
415
+
416
+ fn as_any(&self) -> &dyn std::any::Any {
417
+ self
418
+ }
419
+
420
+ fn default_config_section(&self) -> Option<(String, toml::Value)> {
421
+ let mut map = toml::map::Map::new();
422
+ map.insert(
423
+ "allow_after_headings".to_string(),
424
+ toml::Value::Boolean(self.allow_after_headings),
425
+ );
426
+ map.insert(
427
+ "allow_after_colons".to_string(),
428
+ toml::Value::Boolean(self.allow_after_colons),
429
+ );
430
+ Some((self.name().to_string(), toml::Value::Table(map)))
431
+ }
432
+
433
+ fn from_config(config: &crate::config::Config) -> Box<dyn Rule>
434
+ where
435
+ Self: Sized,
436
+ {
437
+ let allow_after_headings =
438
+ crate::config::get_rule_config_value::<bool>(config, "MD032", "allow_after_headings").unwrap_or(true); // Default to true for better UX
439
+
440
+ let allow_after_colons =
441
+ crate::config::get_rule_config_value::<bool>(config, "MD032", "allow_after_colons").unwrap_or(true);
442
+
443
+ Box::new(MD032BlanksAroundLists {
444
+ allow_after_headings,
445
+ allow_after_colons,
446
+ })
447
+ }
448
+
449
+ fn as_maybe_document_structure(&self) -> Option<&dyn crate::rule::MaybeDocumentStructure> {
450
+ Some(self)
451
+ }
452
+ }
453
+
454
+ impl MD032BlanksAroundLists {
455
+ /// Helper method for fixing with a pre-computed DocumentStructure
456
+ fn fix_with_structure(
457
+ &self,
458
+ ctx: &crate::lint_context::LintContext,
459
+ structure: &DocumentStructure,
460
+ ) -> Result<String, LintError> {
427
461
  let lines: Vec<&str> = ctx.content.lines().collect();
428
462
  let num_lines = lines.len();
429
463
  if num_lines == 0 {
@@ -452,7 +486,7 @@ impl Rule for MD032BlanksAroundLists {
452
486
  let should_require = self.should_require_blank_line_before(
453
487
  lines[prev_line_actual_idx_0],
454
488
  ctx,
455
- &structure,
489
+ structure,
456
490
  prev_line_actual_idx_1,
457
491
  );
458
492
  if !is_prev_excluded
@@ -510,51 +544,6 @@ impl Rule for MD032BlanksAroundLists {
510
544
  }
511
545
  Ok(result)
512
546
  }
513
-
514
- fn should_skip(&self, ctx: &crate::lint_context::LintContext) -> bool {
515
- ctx.content.is_empty() || ctx.list_blocks.is_empty()
516
- }
517
-
518
- fn category(&self) -> RuleCategory {
519
- RuleCategory::List
520
- }
521
-
522
- fn as_any(&self) -> &dyn std::any::Any {
523
- self
524
- }
525
-
526
- fn default_config_section(&self) -> Option<(String, toml::Value)> {
527
- let mut map = toml::map::Map::new();
528
- map.insert(
529
- "allow_after_headings".to_string(),
530
- toml::Value::Boolean(self.allow_after_headings),
531
- );
532
- map.insert(
533
- "allow_after_colons".to_string(),
534
- toml::Value::Boolean(self.allow_after_colons),
535
- );
536
- Some((self.name().to_string(), toml::Value::Table(map)))
537
- }
538
-
539
- fn from_config(config: &crate::config::Config) -> Box<dyn Rule>
540
- where
541
- Self: Sized,
542
- {
543
- let allow_after_headings =
544
- crate::config::get_rule_config_value::<bool>(config, "MD032", "allow_after_headings").unwrap_or(true); // Default to true for better UX
545
-
546
- let allow_after_colons =
547
- crate::config::get_rule_config_value::<bool>(config, "MD032", "allow_after_colons").unwrap_or(true);
548
-
549
- Box::new(MD032BlanksAroundLists {
550
- allow_after_headings,
551
- allow_after_colons,
552
- })
553
- }
554
-
555
- fn as_maybe_document_structure(&self) -> Option<&dyn crate::rule::MaybeDocumentStructure> {
556
- Some(self)
557
- }
558
547
  }
559
548
 
560
549
  impl DocumentStructureExtensions for MD032BlanksAroundLists {