rumdl 0.0.109__tar.gz → 0.0.110__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 (373) hide show
  1. {rumdl-0.0.109 → rumdl-0.0.110}/.mise.toml +2 -1
  2. {rumdl-0.0.109 → rumdl-0.0.110}/CHANGELOG.md +3 -0
  3. {rumdl-0.0.109 → rumdl-0.0.110}/Cargo.lock +3 -3
  4. {rumdl-0.0.109 → rumdl-0.0.110}/Cargo.toml +1 -1
  5. {rumdl-0.0.109 → rumdl-0.0.110}/Makefile +17 -1
  6. {rumdl-0.0.109 → rumdl-0.0.110}/PKG-INFO +1 -1
  7. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md032_blanks_around_lists.rs +38 -2
  8. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md032_test.rs +52 -1
  9. {rumdl-0.0.109 → rumdl-0.0.110}/.config/nextest.toml +0 -0
  10. {rumdl-0.0.109 → rumdl-0.0.110}/.pre-commit-config.yaml +0 -0
  11. {rumdl-0.0.109 → rumdl-0.0.110}/.rumdl.toml +0 -0
  12. {rumdl-0.0.109 → rumdl-0.0.110}/.rustfmt.toml +0 -0
  13. {rumdl-0.0.109 → rumdl-0.0.110}/LICENSE +0 -0
  14. {rumdl-0.0.109 → rumdl-0.0.110}/MANIFEST.in +0 -0
  15. {rumdl-0.0.109 → rumdl-0.0.110}/README.md +0 -0
  16. {rumdl-0.0.109 → rumdl-0.0.110}/assets/logo.png +0 -0
  17. {rumdl-0.0.109 → rumdl-0.0.110}/benches/fix_performance.rs +0 -0
  18. {rumdl-0.0.109 → rumdl-0.0.110}/benches/range_performance.rs +0 -0
  19. {rumdl-0.0.109 → rumdl-0.0.110}/benches/range_utils_benchmark.rs +0 -0
  20. {rumdl-0.0.109 → rumdl-0.0.110}/benches/rule_performance.rs +0 -0
  21. {rumdl-0.0.109 → rumdl-0.0.110}/benches/simple_fix_bench.rs +0 -0
  22. {rumdl-0.0.109 → rumdl-0.0.110}/benchmark/bin/bench_lint_context.rs +0 -0
  23. {rumdl-0.0.109 → rumdl-0.0.110}/benchmark/bin/benchmark.rs +0 -0
  24. {rumdl-0.0.109 → rumdl-0.0.110}/benchmark/bin/benchmark_rule.rs +0 -0
  25. {rumdl-0.0.109 → rumdl-0.0.110}/benchmark/bin/file_parallel_benchmark.rs +0 -0
  26. {rumdl-0.0.109 → rumdl-0.0.110}/benchmark/bin/measure_code_span_performance.rs +0 -0
  27. {rumdl-0.0.109 → rumdl-0.0.110}/docs/RULES.md +0 -0
  28. {rumdl-0.0.109 → rumdl-0.0.110}/docs/global-settings.md +0 -0
  29. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md001.md +0 -0
  30. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md002.md +0 -0
  31. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md003.md +0 -0
  32. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md004.md +0 -0
  33. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md005.md +0 -0
  34. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md006.md +0 -0
  35. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md007.md +0 -0
  36. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md009.md +0 -0
  37. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md010.md +0 -0
  38. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md011.md +0 -0
  39. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md012.md +0 -0
  40. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md013.md +0 -0
  41. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md014.md +0 -0
  42. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md018.md +0 -0
  43. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md019.md +0 -0
  44. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md020.md +0 -0
  45. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md021.md +0 -0
  46. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md022.md +0 -0
  47. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md023.md +0 -0
  48. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md024.md +0 -0
  49. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md025.md +0 -0
  50. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md026.md +0 -0
  51. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md027.md +0 -0
  52. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md028.md +0 -0
  53. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md029.md +0 -0
  54. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md030.md +0 -0
  55. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md031.md +0 -0
  56. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md032.md +0 -0
  57. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md033.md +0 -0
  58. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md034.md +0 -0
  59. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md035.md +0 -0
  60. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md036.md +0 -0
  61. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md037.md +0 -0
  62. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md038.md +0 -0
  63. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md039.md +0 -0
  64. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md040.md +0 -0
  65. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md041.md +0 -0
  66. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md042.md +0 -0
  67. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md043.md +0 -0
  68. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md044.md +0 -0
  69. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md045.md +0 -0
  70. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md046.md +0 -0
  71. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md047.md +0 -0
  72. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md048.md +0 -0
  73. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md049.md +0 -0
  74. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md050.md +0 -0
  75. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md051.md +0 -0
  76. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md052.md +0 -0
  77. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md053.md +0 -0
  78. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md054.md +0 -0
  79. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md055.md +0 -0
  80. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md056.md +0 -0
  81. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md057.md +0 -0
  82. {rumdl-0.0.109 → rumdl-0.0.110}/docs/md058.md +0 -0
  83. {rumdl-0.0.109 → rumdl-0.0.110}/docs/vscode-extension.md +0 -0
  84. {rumdl-0.0.109 → rumdl-0.0.110}/parity_check.py +0 -0
  85. {rumdl-0.0.109 → rumdl-0.0.110}/pyproject.toml +0 -0
  86. {rumdl-0.0.109 → rumdl-0.0.110}/python/MANIFEST.in +0 -0
  87. {rumdl-0.0.109 → rumdl-0.0.110}/python/PYTHON-README.md +0 -0
  88. {rumdl-0.0.109 → rumdl-0.0.110}/python/rumdl/__init__.py +0 -0
  89. {rumdl-0.0.109 → rumdl-0.0.110}/python/rumdl/__main__.py +0 -0
  90. {rumdl-0.0.109 → rumdl-0.0.110}/python/rumdl/py.typed +0 -0
  91. {rumdl-0.0.109 → rumdl-0.0.110}/rumdl.toml.example +0 -0
  92. {rumdl-0.0.109 → rumdl-0.0.110}/rust-toolchain.toml +0 -0
  93. {rumdl-0.0.109 → rumdl-0.0.110}/scripts/extract-changelog.sh +0 -0
  94. {rumdl-0.0.109 → rumdl-0.0.110}/scripts/prepare-release.sh +0 -0
  95. {rumdl-0.0.109 → rumdl-0.0.110}/scripts/setup-pre-commit.sh +0 -0
  96. {rumdl-0.0.109 → rumdl-0.0.110}/scripts/update-pre-commit-docs.sh +0 -0
  97. {rumdl-0.0.109 → rumdl-0.0.110}/src/bin/debug_frontmatter.rs +0 -0
  98. {rumdl-0.0.109 → rumdl-0.0.110}/src/config.rs +0 -0
  99. {rumdl-0.0.109 → rumdl-0.0.110}/src/exit_codes.rs +0 -0
  100. {rumdl-0.0.109 → rumdl-0.0.110}/src/inline_config.rs +0 -0
  101. {rumdl-0.0.109 → rumdl-0.0.110}/src/lib.rs +0 -0
  102. {rumdl-0.0.109 → rumdl-0.0.110}/src/lint_context.rs +0 -0
  103. {rumdl-0.0.109 → rumdl-0.0.110}/src/lsp/mod.rs +0 -0
  104. {rumdl-0.0.109 → rumdl-0.0.110}/src/lsp/server.rs +0 -0
  105. {rumdl-0.0.109 → rumdl-0.0.110}/src/lsp/types.rs +0 -0
  106. {rumdl-0.0.109 → rumdl-0.0.110}/src/main.rs +0 -0
  107. {rumdl-0.0.109 → rumdl-0.0.110}/src/markdownlint_config.rs +0 -0
  108. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/azure.rs +0 -0
  109. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/concise.rs +0 -0
  110. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/github.rs +0 -0
  111. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/gitlab.rs +0 -0
  112. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/grouped.rs +0 -0
  113. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/json.rs +0 -0
  114. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/json_lines.rs +0 -0
  115. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/junit.rs +0 -0
  116. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/mod.rs +0 -0
  117. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/pylint.rs +0 -0
  118. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/sarif.rs +0 -0
  119. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/formatters/text.rs +0 -0
  120. {rumdl-0.0.109 → rumdl-0.0.110}/src/output/mod.rs +0 -0
  121. {rumdl-0.0.109 → rumdl-0.0.110}/src/parallel.rs +0 -0
  122. {rumdl-0.0.109 → rumdl-0.0.110}/src/performance.rs +0 -0
  123. {rumdl-0.0.109 → rumdl-0.0.110}/src/profiling.rs +0 -0
  124. {rumdl-0.0.109 → rumdl-0.0.110}/src/python.rs +0 -0
  125. {rumdl-0.0.109 → rumdl-0.0.110}/src/rule.rs +0 -0
  126. {rumdl-0.0.109 → rumdl-0.0.110}/src/rule_config.rs +0 -0
  127. {rumdl-0.0.109 → rumdl-0.0.110}/src/rule_config_serde.rs +0 -0
  128. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/blockquote_utils.rs +0 -0
  129. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/code_block_utils.rs +0 -0
  130. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/code_fence_utils.rs +0 -0
  131. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/emphasis_style.rs +0 -0
  132. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/front_matter_utils.rs +0 -0
  133. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/heading_utils.rs +0 -0
  134. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/list_utils.rs +0 -0
  135. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md001_heading_increment.rs +0 -0
  136. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  137. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md002_first_heading_h1.rs +0 -0
  138. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md003_heading_style/md003_config.rs +0 -0
  139. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md003_heading_style.rs +0 -0
  140. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  141. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md004_unordered_list_style.rs +0 -0
  142. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md005_list_indent.rs +0 -0
  143. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md006_start_bullets.rs +0 -0
  144. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md007_ul_indent/md007_config.rs +0 -0
  145. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md007_ul_indent.rs +0 -0
  146. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  147. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md009_trailing_spaces.rs +0 -0
  148. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  149. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md010_no_hard_tabs.rs +0 -0
  150. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md011_no_reversed_links.rs +0 -0
  151. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
  152. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md012_no_multiple_blanks.rs +0 -0
  153. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md013_line_length/md013_config.rs +0 -0
  154. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md013_line_length.rs +0 -0
  155. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  156. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md014_commands_show_output.rs +0 -0
  157. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md018_no_missing_space_atx.rs +0 -0
  158. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  159. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  160. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  161. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  162. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md022_blanks_around_headings.rs +0 -0
  163. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md023_heading_start_left.rs +0 -0
  164. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  165. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md024_no_duplicate_heading.rs +0 -0
  166. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md025_single_title/md025_config.rs +0 -0
  167. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md025_single_title.rs +0 -0
  168. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  169. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  170. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  171. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  172. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
  173. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md029_ordered_list_prefix.rs +0 -0
  174. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  175. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md030_list_marker_space.rs +0 -0
  176. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md031_blanks_around_fences.rs +0 -0
  177. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  178. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md033_no_inline_html.rs +0 -0
  179. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md034_no_bare_urls.rs +0 -0
  180. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md035_hr_style/md035_config.rs +0 -0
  181. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md035_hr_style.rs +0 -0
  182. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  183. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  184. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  185. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md038_no_space_in_code.rs +0 -0
  186. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md039_no_space_in_links.rs +0 -0
  187. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md040_fenced_code_language.rs +0 -0
  188. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md041_first_line_heading.rs +0 -0
  189. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md042_no_empty_links.rs +0 -0
  190. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md043_required_headings.rs +0 -0
  191. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md044_proper_names/md044_config.rs +0 -0
  192. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md044_proper_names.rs +0 -0
  193. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  194. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md045_no_alt_text.rs +0 -0
  195. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  196. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md046_code_block_style.rs +0 -0
  197. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md047_single_trailing_newline.rs +0 -0
  198. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  199. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md048_code_fence_style.rs +0 -0
  200. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  201. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md049_emphasis_style.rs +0 -0
  202. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md050_strong_style/md050_config.rs +0 -0
  203. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md050_strong_style.rs +0 -0
  204. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md051_link_fragments.rs +0 -0
  205. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md052_reference_links_images.rs +0 -0
  206. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  207. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  208. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md054_link_image_style.rs +0 -0
  209. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  210. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md055_table_pipe_style.rs +0 -0
  211. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md056_table_column_count.rs +0 -0
  212. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  213. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md057_existing_relative_links.rs +0 -0
  214. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/md058_blanks_around_tables.rs +0 -0
  215. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/mod.rs +0 -0
  216. {rumdl-0.0.109 → rumdl-0.0.110}/src/rules/strong_style.rs +0 -0
  217. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/ast_utils.rs +0 -0
  218. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/code_block_utils.rs +0 -0
  219. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/document_structure.rs +0 -0
  220. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/early_returns.rs +0 -0
  221. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/element_cache.rs +0 -0
  222. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/emphasis_utils.rs +0 -0
  223. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/fix_utils.rs +0 -0
  224. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/markdown_elements.rs +0 -0
  225. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/mod.rs +0 -0
  226. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/range_utils.rs +0 -0
  227. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/regex_cache.rs +0 -0
  228. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/string_interner.rs +0 -0
  229. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/table_utils.rs +0 -0
  230. {rumdl-0.0.109 → rumdl-0.0.110}/src/utils/text_reflow.rs +0 -0
  231. {rumdl-0.0.109 → rumdl-0.0.110}/src/vscode.rs +0 -0
  232. {rumdl-0.0.109 → rumdl-0.0.110}/tests/advanced_integration_tests.rs +0 -0
  233. {rumdl-0.0.109 → rumdl-0.0.110}/tests/character_ranges/additional_tests.rs +0 -0
  234. {rumdl-0.0.109 → rumdl-0.0.110}/tests/character_ranges/basic_tests.rs +0 -0
  235. {rumdl-0.0.109 → rumdl-0.0.110}/tests/character_ranges/comprehensive_tests.rs +0 -0
  236. {rumdl-0.0.109 → rumdl-0.0.110}/tests/character_ranges/extended_tests.rs +0 -0
  237. {rumdl-0.0.109 → rumdl-0.0.110}/tests/character_ranges/mod.rs +0 -0
  238. {rumdl-0.0.109 → rumdl-0.0.110}/tests/character_ranges/unicode_utils.rs +0 -0
  239. {rumdl-0.0.109 → rumdl-0.0.110}/tests/cli_duplication_test.rs +0 -0
  240. {rumdl-0.0.109 → rumdl-0.0.110}/tests/cli_explain_test.rs +0 -0
  241. {rumdl-0.0.109 → rumdl-0.0.110}/tests/cli_flag_precedence_test.rs +0 -0
  242. {rumdl-0.0.109 → rumdl-0.0.110}/tests/cli_integration_tests.rs +0 -0
  243. {rumdl-0.0.109 → rumdl-0.0.110}/tests/cli_lsp_fix_consistency.rs +0 -0
  244. {rumdl-0.0.109 → rumdl-0.0.110}/tests/cli_statistics_test.rs +0 -0
  245. {rumdl-0.0.109 → rumdl-0.0.110}/tests/common/cli_test_utils.rs +0 -0
  246. {rumdl-0.0.109 → rumdl-0.0.110}/tests/common/fixtures.rs +0 -0
  247. {rumdl-0.0.109 → rumdl-0.0.110}/tests/common/mod.rs +0 -0
  248. {rumdl-0.0.109 → rumdl-0.0.110}/tests/common/test_utils.rs +0 -0
  249. {rumdl-0.0.109 → rumdl-0.0.110}/tests/commonmark_compliance_tests.rs +0 -0
  250. {rumdl-0.0.109 → rumdl-0.0.110}/tests/comprehensive_integration_tests.rs +0 -0
  251. {rumdl-0.0.109 → rumdl-0.0.110}/tests/comprehensive_output_format_tests.rs +0 -0
  252. {rumdl-0.0.109 → rumdl-0.0.110}/tests/config_application_tests.rs +0 -0
  253. {rumdl-0.0.109 → rumdl-0.0.110}/tests/config_file_command_test.rs +0 -0
  254. {rumdl-0.0.109 → rumdl-0.0.110}/tests/config_tests.rs +0 -0
  255. {rumdl-0.0.109 → rumdl-0.0.110}/tests/configuration_inheritance_tests.rs +0 -0
  256. {rumdl-0.0.109 → rumdl-0.0.110}/tests/consistency_regression_tests.rs +0 -0
  257. {rumdl-0.0.109 → rumdl-0.0.110}/tests/cross_platform_compatibility_tests.rs +0 -0
  258. {rumdl-0.0.109 → rumdl-0.0.110}/tests/deeply_nested_lists_performance_test.rs +0 -0
  259. {rumdl-0.0.109 → rumdl-0.0.110}/tests/escaped_brackets_test.rs +0 -0
  260. {rumdl-0.0.109 → rumdl-0.0.110}/tests/final_confidence_assessment.rs +0 -0
  261. {rumdl-0.0.109 → rumdl-0.0.110}/tests/init_command_test.rs +0 -0
  262. {rumdl-0.0.109 → rumdl-0.0.110}/tests/init_tests.rs +0 -0
  263. {rumdl-0.0.109 → rumdl-0.0.110}/tests/inline_config_blocks_test.rs +0 -0
  264. {rumdl-0.0.109 → rumdl-0.0.110}/tests/inline_config_test.rs +0 -0
  265. {rumdl-0.0.109 → rumdl-0.0.110}/tests/integration_tests.rs +0 -0
  266. {rumdl-0.0.109 → rumdl-0.0.110}/tests/json_output_test.rs +0 -0
  267. {rumdl-0.0.109 → rumdl-0.0.110}/tests/lib.rs +0 -0
  268. {rumdl-0.0.109 → rumdl-0.0.110}/tests/lsp_editor_integration_tests.rs +0 -0
  269. {rumdl-0.0.109 → rumdl-0.0.110}/tests/lsp_integration_tests.rs +0 -0
  270. {rumdl-0.0.109 → rumdl-0.0.110}/tests/lsp_memory_leak_tests.rs +0 -0
  271. {rumdl-0.0.109 → rumdl-0.0.110}/tests/lsp_tests.rs +0 -0
  272. {rumdl-0.0.109 → rumdl-0.0.110}/tests/malformed_markdown_stress_tests.rs +0 -0
  273. {rumdl-0.0.109 → rumdl-0.0.110}/tests/markdownlint_cli_integration.rs +0 -0
  274. {rumdl-0.0.109 → rumdl-0.0.110}/tests/markdownlint_config_test.rs +0 -0
  275. {rumdl-0.0.109 → rumdl-0.0.110}/tests/markdownlintignore_test.rs +0 -0
  276. {rumdl-0.0.109 → rumdl-0.0.110}/tests/md013_reflow_integration_test.rs +0 -0
  277. {rumdl-0.0.109 → rumdl-0.0.110}/tests/nested_code_block_test.rs +0 -0
  278. {rumdl-0.0.109 → rumdl-0.0.110}/tests/output_format_integration_tests.rs +0 -0
  279. {rumdl-0.0.109 → rumdl-0.0.110}/tests/output_format_tests.rs +0 -0
  280. {rumdl-0.0.109 → rumdl-0.0.110}/tests/perf_check.rs +0 -0
  281. {rumdl-0.0.109 → rumdl-0.0.110}/tests/performance_validation_tests.rs +0 -0
  282. {rumdl-0.0.109 → rumdl-0.0.110}/tests/pyproject_config_tests.rs +0 -0
  283. {rumdl-0.0.109 → rumdl-0.0.110}/tests/python_bindings_test.rs +0 -0
  284. {rumdl-0.0.109 → rumdl-0.0.110}/tests/real_world_repository_tests.rs +0 -0
  285. {rumdl-0.0.109 → rumdl-0.0.110}/tests/regression_prevention_tests.rs +0 -0
  286. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/emphasis_edge_cases_test.rs +0 -0
  287. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/heading_edge_cases_test.rs +0 -0
  288. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/inline_content_edge_cases_test.rs +0 -0
  289. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/link_edge_cases_test.rs +0 -0
  290. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/list_rules_integration_test.rs +0 -0
  291. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md001_test.rs +0 -0
  292. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md001_unicode_test.rs +0 -0
  293. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md002_test.rs +0 -0
  294. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md003_test.rs +0 -0
  295. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md004_test.rs +0 -0
  296. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md005_test.rs +0 -0
  297. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md005_unicode_test.rs +0 -0
  298. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md006_test.rs +0 -0
  299. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md006_unicode_test.rs +0 -0
  300. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md007_test.rs +0 -0
  301. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md009_test.rs +0 -0
  302. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md010_test.rs +0 -0
  303. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md011_test.rs +0 -0
  304. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md012_test.rs +0 -0
  305. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md013_test.rs +0 -0
  306. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md014_test.rs +0 -0
  307. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md018_test.rs +0 -0
  308. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md019_test.rs +0 -0
  309. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md020_test.rs +0 -0
  310. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md021_test.rs +0 -0
  311. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md022_test.rs +0 -0
  312. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md023_extended_test.rs +0 -0
  313. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md023_test.rs +0 -0
  314. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md024_test.rs +0 -0
  315. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md025_test.rs +0 -0
  316. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md026_test.rs +0 -0
  317. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md027_test.rs +0 -0
  318. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md028_test.rs +0 -0
  319. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md029_test.rs +0 -0
  320. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md029_unicode_test.rs +0 -0
  321. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md030_test.rs +0 -0
  322. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md031_test.rs +0 -0
  323. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md033_extended_test.rs +0 -0
  324. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md033_test.rs +0 -0
  325. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md034_ipv6_test.rs +0 -0
  326. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md034_test.rs +0 -0
  327. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md035_test.rs +0 -0
  328. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md036_test.rs +0 -0
  329. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md037_test.rs +0 -0
  330. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md038_nested_backticks_test.rs +0 -0
  331. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md038_test.rs +0 -0
  332. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md039_test.rs +0 -0
  333. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md040_test.rs +0 -0
  334. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md041_test.rs +0 -0
  335. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md042_test.rs +0 -0
  336. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md043_test.rs +0 -0
  337. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md044_test.rs +0 -0
  338. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md045_test.rs +0 -0
  339. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md046_test.rs +0 -0
  340. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md047_test.rs +0 -0
  341. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md048_test.rs +0 -0
  342. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md049_test.rs +0 -0
  343. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md050_test.rs +0 -0
  344. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md051_test.rs +0 -0
  345. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md051_unicode_test.rs +0 -0
  346. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md052_test.rs +0 -0
  347. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md053_additional_test.rs +0 -0
  348. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md053_proptest.rs +0 -0
  349. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md053_test.rs +0 -0
  350. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md054_test.rs +0 -0
  351. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md054_unicode_test.rs +0 -0
  352. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md055_test.rs +0 -0
  353. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md056_test.rs +0 -0
  354. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md057_test.rs +0 -0
  355. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/md058_test.rs +0 -0
  356. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules/mod.rs +0 -0
  357. {rumdl-0.0.109 → rumdl-0.0.110}/tests/rules_mod_test.rs +0 -0
  358. {rumdl-0.0.109 → rumdl-0.0.110}/tests/thread_safety_tests.rs +0 -0
  359. {rumdl-0.0.109 → rumdl-0.0.110}/tests/unicode_edge_case_tests.rs +0 -0
  360. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils/blockquote_utils_test.rs +0 -0
  361. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils/code_block_utils_extended_test.rs +0 -0
  362. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils/code_block_utils_test.rs +0 -0
  363. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils/core_utils_test.rs +0 -0
  364. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils/front_matter_utils_test.rs +0 -0
  365. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils/line_index_test.rs +0 -0
  366. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils/mod.rs +0 -0
  367. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils_markdown_edge_cases.rs +0 -0
  368. {rumdl-0.0.109 → rumdl-0.0.110}/tests/utils_tests.rs +0 -0
  369. {rumdl-0.0.109 → rumdl-0.0.110}/tests/vscode_extension_fixes.rs +0 -0
  370. {rumdl-0.0.109 → rumdl-0.0.110}/tests/vscode_test.rs +0 -0
  371. {rumdl-0.0.109 → rumdl-0.0.110}/tests/vscode_tests.rs +0 -0
  372. {rumdl-0.0.109 → rumdl-0.0.110}/tests/vscode_windows_comprehensive_test.rs +0 -0
  373. {rumdl-0.0.109 → rumdl-0.0.110}/tests/vscode_windows_test.rs +0 -0
@@ -20,6 +20,7 @@ uv = "latest"
20
20
  "cargo:cargo-watch" = "latest"
21
21
  "cargo:maturin" = "latest"
22
22
  "cargo:cargo-binstall" = "latest"
23
+ "cargo:cargo-zigbuild" = "latest" # For building static Linux binaries
23
24
 
24
25
  # Zig for cross-compilation (used by maturin)
25
26
  zig = "0.13"
@@ -104,4 +105,4 @@ make test-quick
104
105
  # rust = "1.87.0"
105
106
  #
106
107
  # [tools.windows]
107
- # rust = "1.87.0"
108
+ # rust = "1.87.0"
@@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ## [0.0.110] - 2025-08-08
11
11
 
12
+ ## [0.0.110] - 2025-08-08
13
+
12
14
  ## [0.0.107] - 2025-08-06
13
15
 
14
16
  ## [0.0.107] - 2025-08-06
@@ -302,6 +304,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
302
304
 
303
305
  [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.110...HEAD
304
306
  [0.0.110]: https://github.com/rvben/rumdl/compare/v0.0.109...v0.0.110
307
+ [0.0.110]: https://github.com/rvben/rumdl/compare/v0.0.109...v0.0.110
305
308
  [0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
306
309
  [0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
307
310
  [0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
@@ -220,9 +220,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
220
220
 
221
221
  [[package]]
222
222
  name = "cc"
223
- version = "1.2.31"
223
+ version = "1.2.32"
224
224
  source = "registry+https://github.com/rust-lang/crates.io-index"
225
- checksum = "c3a42d84bb6b69d3a8b3eaacf0d88f179e1929695e1ad012b6cf64d9caaa5fd2"
225
+ checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e"
226
226
  dependencies = [
227
227
  "shlex",
228
228
  ]
@@ -1493,7 +1493,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
1493
1493
 
1494
1494
  [[package]]
1495
1495
  name = "rumdl"
1496
- version = "0.0.109"
1496
+ version = "0.0.110"
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.109"
3
+ version = "0.0.110"
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)"
@@ -1,4 +1,4 @@
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 update-dependencies update-rust-version pre-release
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 update-dependencies update-rust-version pre-release build-static-linux-x64 build-static-linux-arm64 build-static-all
2
2
 
3
3
  # Development environment setup
4
4
  setup-mise:
@@ -60,6 +60,22 @@ ci-install-mise:
60
60
  build:
61
61
  cargo build --release
62
62
 
63
+ # Static binary builds for Linux (musl)
64
+ build-static-linux-x64:
65
+ @echo "Building static Linux x86_64 binary..."
66
+ rustup target add x86_64-unknown-linux-musl 2>/dev/null || true
67
+ mise exec -- cargo zigbuild --release --target x86_64-unknown-linux-musl
68
+ @echo "Static binary built at: target/x86_64-unknown-linux-musl/release/rumdl"
69
+
70
+ build-static-linux-arm64:
71
+ @echo "Building static Linux ARM64 binary..."
72
+ rustup target add aarch64-unknown-linux-musl 2>/dev/null || true
73
+ mise exec -- cargo zigbuild --release --target aarch64-unknown-linux-musl
74
+ @echo "Static binary built at: target/aarch64-unknown-linux-musl/release/rumdl"
75
+
76
+ build-static-all: build-static-linux-x64 build-static-linux-arm64
77
+ @echo "All static Linux binaries built successfully"
78
+
63
79
  test:
64
80
  cargo nextest run --profile dev
65
81
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.109
3
+ Version: 0.0.110
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -111,6 +111,7 @@ impl MD032BlanksAroundLists {
111
111
  ctx: &crate::lint_context::LintContext,
112
112
  structure: &DocumentStructure,
113
113
  prev_line_num: usize,
114
+ current_line_num: usize,
114
115
  ) -> bool {
115
116
  let trimmed_prev = prev_line.trim();
116
117
 
@@ -119,6 +120,11 @@ impl MD032BlanksAroundLists {
119
120
  return true;
120
121
  }
121
122
 
123
+ // Always allow nested lists (lists indented within other list items)
124
+ if self.is_nested_list(ctx, prev_line_num, current_line_num) {
125
+ return false;
126
+ }
127
+
122
128
  // Allow lists after headings if configured
123
129
  if self.allow_after_headings && self.is_heading_line_from_context(ctx, prev_line_num - 1) {
124
130
  return false;
@@ -142,6 +148,30 @@ impl MD032BlanksAroundLists {
142
148
  }
143
149
  }
144
150
 
151
+ /// Check if the current list is nested within another list item
152
+ fn is_nested_list(
153
+ &self,
154
+ ctx: &crate::lint_context::LintContext,
155
+ prev_line_num: usize, // 1-indexed
156
+ current_line_num: usize, // 1-indexed
157
+ ) -> bool {
158
+ // Check if current line is indented (typical for nested lists)
159
+ if current_line_num > 0 && current_line_num - 1 < ctx.lines.len() {
160
+ let current_line = &ctx.lines[current_line_num - 1];
161
+ if current_line.indent >= 2 {
162
+ // Check if previous line is a list item or list content
163
+ if prev_line_num > 0 && prev_line_num - 1 < ctx.lines.len() {
164
+ let prev_line = &ctx.lines[prev_line_num - 1];
165
+ // Previous line is a list item or indented content
166
+ if prev_line.list_item.is_some() || prev_line.indent >= 2 {
167
+ return true;
168
+ }
169
+ }
170
+ }
171
+ }
172
+ false
173
+ }
174
+
145
175
  // Convert centralized list blocks to the format expected by perform_checks
146
176
  fn convert_list_blocks(&self, ctx: &crate::lint_context::LintContext) -> Vec<(usize, usize, String)> {
147
177
  let mut blocks: Vec<(usize, usize, String)> = Vec::new();
@@ -291,8 +321,13 @@ impl MD032BlanksAroundLists {
291
321
 
292
322
  // Only require blank lines for content in the same context (same blockquote level)
293
323
  // and when the context actually requires it
294
- let should_require =
295
- self.should_require_blank_line_before(prev_line_str, ctx, structure, prev_line_actual_idx_1);
324
+ let should_require = self.should_require_blank_line_before(
325
+ prev_line_str,
326
+ ctx,
327
+ structure,
328
+ prev_line_actual_idx_1,
329
+ start_line,
330
+ );
296
331
  if !is_prev_excluded && !prev_is_blank && prefixes_match && should_require {
297
332
  // Calculate precise character range for the entire list line that needs a blank line before it
298
333
  let (start_line, start_col, end_line, end_col) =
@@ -488,6 +523,7 @@ impl MD032BlanksAroundLists {
488
523
  ctx,
489
524
  structure,
490
525
  prev_line_actual_idx_1,
526
+ start_line,
491
527
  );
492
528
  if !is_prev_excluded
493
529
  && !is_blank_in_context(lines[prev_line_actual_idx_0])
@@ -171,16 +171,67 @@ fn test_multiple_lists() {
171
171
 
172
172
  #[test]
173
173
  fn test_nested_lists() {
174
+ // Nested lists should not require blank lines between parent and child items
174
175
  let rule = MD032BlanksAroundLists::default();
175
176
  let content = "Text\n* Item 1\n * Nested 1\n * Nested 2\n* Item 2\nText";
176
177
  let ctx = LintContext::new(content);
177
178
  let result = rule.check(&ctx).unwrap();
178
- assert_eq!(result.len(), 2);
179
+ // Should only warn about missing blank lines around the outer list, not the nested items
180
+ assert_eq!(
181
+ result.len(),
182
+ 2,
183
+ "Should only warn about outer list boundaries, not nested items"
184
+ );
179
185
  let fixed = rule.fix(&ctx).unwrap();
180
186
  let _ctx_fixed = LintContext::new(&fixed);
181
187
  assert_eq!(fixed, "Text\n\n* Item 1\n * Nested 1\n * Nested 2\n* Item 2\n\nText");
182
188
  }
183
189
 
190
+ #[test]
191
+ fn test_nested_lists_with_strict_mode() {
192
+ // Even in strict mode, nested lists are a standard Markdown pattern and shouldn't require blank lines
193
+ let rule = MD032BlanksAroundLists::strict();
194
+ let content = "Text\n\n* Item 1\n * Nested 1\n * Nested 2\n* Item 2\n\nText";
195
+ let ctx = LintContext::new(content);
196
+ let result = rule.check(&ctx).unwrap();
197
+ // Even strict mode should not warn about nested lists - this is standard Markdown
198
+ assert!(
199
+ result.is_empty(),
200
+ "Nested lists are standard Markdown and shouldn't trigger warnings even in strict mode"
201
+ );
202
+ }
203
+
204
+ #[test]
205
+ fn test_deeply_nested_lists() {
206
+ // Test multiple levels of nesting
207
+ let rule = MD032BlanksAroundLists::default();
208
+ let content = "## Section\n\n* Level 1\n * Level 2\n * Level 3\n * Level 4\n * Back to Level 2\n* Back to Level 1\n\nText";
209
+ let ctx = LintContext::new(content);
210
+ let result = rule.check(&ctx).unwrap();
211
+ // Should not warn about nested list transitions
212
+ assert!(result.is_empty(), "Should not warn about deeply nested lists");
213
+ }
214
+
215
+ #[test]
216
+ fn test_nested_ordered_lists() {
217
+ // Test nested ordered lists
218
+ let rule = MD032BlanksAroundLists::default();
219
+ let content = "## Section\n\n1. First item\n 1. Sub item 1.1\n 2. Sub item 1.2\n2. Second item\n 1. Sub item 2.1\n\nText";
220
+ let ctx = LintContext::new(content);
221
+ let result = rule.check(&ctx).unwrap();
222
+ assert!(result.is_empty(), "Should not warn about nested ordered lists");
223
+ }
224
+
225
+ #[test]
226
+ fn test_mixed_nested_list_types() {
227
+ // Test mixing ordered and unordered lists in nesting
228
+ let rule = MD032BlanksAroundLists::default();
229
+ let content = "## Section\n\n1. Ordered item\n - Unordered sub-item\n - Another unordered sub-item\n2. Another ordered item\n * Different unordered marker\n\nText";
230
+ let ctx = LintContext::new(content);
231
+ let result = rule.check(&ctx).unwrap();
232
+ assert!(result.is_empty(), "Should not warn about mixed nested list types");
233
+ }
234
+
184
235
  #[test]
185
236
  fn test_mixed_list_types() {
186
237
  let rule = MD032BlanksAroundLists::default();
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes