rumdl 0.0.82__tar.gz → 0.0.83__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 (283) hide show
  1. {rumdl-0.0.82 → rumdl-0.0.83}/Cargo.lock +39 -39
  2. {rumdl-0.0.82 → rumdl-0.0.83}/Cargo.toml +1 -1
  3. {rumdl-0.0.82 → rumdl-0.0.83}/PKG-INFO +2 -1
  4. {rumdl-0.0.82 → rumdl-0.0.83}/README.md +1 -0
  5. {rumdl-0.0.82 → rumdl-0.0.83}/benches/fix_performance.rs +1 -1
  6. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md031.md +4 -1
  7. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md037.md +1 -1
  8. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md040.md +1 -1
  9. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md043.md +4 -5
  10. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md045.md +1 -1
  11. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md046.md +7 -7
  12. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md047.md +4 -1
  13. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md048.md +1 -1
  14. {rumdl-0.0.82 → rumdl-0.0.83}/src/lint_context.rs +17 -0
  15. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md004_unordered_list_style.rs +4 -14
  16. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md005_list_indent.rs +1 -5
  17. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md006_start_bullets.rs +4 -4
  18. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md009_trailing_spaces.rs +15 -17
  19. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md010_no_hard_tabs.rs +25 -20
  20. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md011_no_reversed_links.rs +33 -17
  21. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md027_multiple_spaces_blockquote.rs +1 -1
  22. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md029_ordered_list_prefix.rs +32 -14
  23. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md030_list_marker_space.rs +12 -31
  24. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md031_blanks_around_fences.rs +128 -68
  25. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md037_spaces_around_emphasis.rs +18 -18
  26. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md039_no_space_in_links.rs +8 -14
  27. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md040_fenced_code_language.rs +93 -72
  28. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md043_required_headings.rs +19 -57
  29. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md044_proper_names.rs +16 -14
  30. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md045_no_alt_text.rs +41 -10
  31. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md046_code_block_style.rs +180 -3
  32. rumdl-0.0.83/src/rules/md048_code_fence_style.rs +306 -0
  33. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md050_strong_style.rs +35 -8
  34. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md052_reference_links_images.rs +7 -19
  35. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md055_table_pipe_style.rs +2 -2
  36. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md056_table_column_count.rs +1 -1
  37. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md058_blanks_around_tables.rs +1 -1
  38. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/code_block_utils.rs +51 -0
  39. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/fix_utils.rs +4 -2
  40. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/table_utils.rs +3 -8
  41. {rumdl-0.0.82 → rumdl-0.0.83}/tests/commonmark_compliance_tests.rs +11 -5
  42. {rumdl-0.0.82 → rumdl-0.0.83}/tests/cross_platform_compatibility_tests.rs +7 -7
  43. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md010_test.rs +68 -0
  44. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md029_test.rs +58 -0
  45. rumdl-0.0.83/tests/rules/md031_test.rs +221 -0
  46. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md040_test.rs +32 -0
  47. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md044_test.rs +93 -0
  48. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md045_test.rs +62 -6
  49. rumdl-0.0.83/tests/rules/md046_test.rs +385 -0
  50. rumdl-0.0.83/tests/rules/md048_test.rs +239 -0
  51. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md050_test.rs +46 -0
  52. {rumdl-0.0.82 → rumdl-0.0.83}/tests/thread_safety_tests.rs +4 -3
  53. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils/code_block_utils_test.rs +73 -0
  54. rumdl-0.0.82/src/rules/md048_code_fence_style.rs +0 -167
  55. rumdl-0.0.82/tests/rules/md031_test.rs +0 -45
  56. rumdl-0.0.82/tests/rules/md046_test.rs +0 -144
  57. rumdl-0.0.82/tests/rules/md048_test.rs +0 -95
  58. {rumdl-0.0.82 → rumdl-0.0.83}/.rumdl.toml +0 -0
  59. {rumdl-0.0.82 → rumdl-0.0.83}/MANIFEST.in +0 -0
  60. {rumdl-0.0.82 → rumdl-0.0.83}/Makefile +0 -0
  61. {rumdl-0.0.82 → rumdl-0.0.83}/assets/logo.png +0 -0
  62. {rumdl-0.0.82 → rumdl-0.0.83}/benches/range_performance.rs +0 -0
  63. {rumdl-0.0.82 → rumdl-0.0.83}/benches/range_utils_benchmark.rs +0 -0
  64. {rumdl-0.0.82 → rumdl-0.0.83}/benches/rule_performance.rs +0 -0
  65. {rumdl-0.0.82 → rumdl-0.0.83}/benches/simple_fix_bench.rs +0 -0
  66. {rumdl-0.0.82 → rumdl-0.0.83}/docs/RULES.md +0 -0
  67. {rumdl-0.0.82 → rumdl-0.0.83}/docs/global-settings.md +0 -0
  68. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md001.md +0 -0
  69. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md002.md +0 -0
  70. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md003.md +0 -0
  71. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md004.md +0 -0
  72. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md005.md +0 -0
  73. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md006.md +0 -0
  74. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md007.md +0 -0
  75. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md009.md +0 -0
  76. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md010.md +0 -0
  77. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md011.md +0 -0
  78. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md012.md +0 -0
  79. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md013.md +0 -0
  80. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md014.md +0 -0
  81. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md018.md +0 -0
  82. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md019.md +0 -0
  83. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md020.md +0 -0
  84. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md021.md +0 -0
  85. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md022.md +0 -0
  86. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md023.md +0 -0
  87. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md024.md +0 -0
  88. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md025.md +0 -0
  89. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md026.md +0 -0
  90. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md027.md +0 -0
  91. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md028.md +0 -0
  92. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md029.md +0 -0
  93. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md030.md +0 -0
  94. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md032.md +0 -0
  95. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md033.md +0 -0
  96. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md034.md +0 -0
  97. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md035.md +0 -0
  98. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md036.md +0 -0
  99. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md038.md +0 -0
  100. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md039.md +0 -0
  101. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md041.md +0 -0
  102. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md042.md +0 -0
  103. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md044.md +0 -0
  104. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md049.md +0 -0
  105. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md050.md +0 -0
  106. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md051.md +0 -0
  107. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md052.md +0 -0
  108. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md053.md +0 -0
  109. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md054.md +0 -0
  110. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md055.md +0 -0
  111. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md056.md +0 -0
  112. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md057.md +0 -0
  113. {rumdl-0.0.82 → rumdl-0.0.83}/docs/md058.md +0 -0
  114. {rumdl-0.0.82 → rumdl-0.0.83}/issues/plan-rule-parity-with-markdownlint.md +0 -0
  115. {rumdl-0.0.82 → rumdl-0.0.83}/parity_check.py +0 -0
  116. {rumdl-0.0.82 → rumdl-0.0.83}/pyproject.toml +0 -0
  117. {rumdl-0.0.82 → rumdl-0.0.83}/python/MANIFEST.in +0 -0
  118. {rumdl-0.0.82 → rumdl-0.0.83}/python/PYTHON-README.md +0 -0
  119. {rumdl-0.0.82 → rumdl-0.0.83}/python/rumdl/__init__.py +0 -0
  120. {rumdl-0.0.82 → rumdl-0.0.83}/python/rumdl/__main__.py +0 -0
  121. {rumdl-0.0.82 → rumdl-0.0.83}/python/rumdl/py.typed +0 -0
  122. {rumdl-0.0.82 → rumdl-0.0.83}/rumdl.toml.example +0 -0
  123. {rumdl-0.0.82 → rumdl-0.0.83}/src/config.rs +0 -0
  124. {rumdl-0.0.82 → rumdl-0.0.83}/src/init.rs +0 -0
  125. {rumdl-0.0.82 → rumdl-0.0.83}/src/lib.rs +0 -0
  126. {rumdl-0.0.82 → rumdl-0.0.83}/src/lsp/mod.rs +0 -0
  127. {rumdl-0.0.82 → rumdl-0.0.83}/src/lsp/server.rs +0 -0
  128. {rumdl-0.0.82 → rumdl-0.0.83}/src/lsp/types.rs +0 -0
  129. {rumdl-0.0.82 → rumdl-0.0.83}/src/main.rs +0 -0
  130. {rumdl-0.0.82 → rumdl-0.0.83}/src/markdownlint_config.rs +0 -0
  131. {rumdl-0.0.82 → rumdl-0.0.83}/src/parallel.rs +0 -0
  132. {rumdl-0.0.82 → rumdl-0.0.83}/src/performance.rs +0 -0
  133. {rumdl-0.0.82 → rumdl-0.0.83}/src/profiling.rs +0 -0
  134. {rumdl-0.0.82 → rumdl-0.0.83}/src/python.rs +0 -0
  135. {rumdl-0.0.82 → rumdl-0.0.83}/src/rule.rs +0 -0
  136. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/blockquote_utils.rs +0 -0
  137. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/code_block_utils.rs +0 -0
  138. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/code_fence_utils.rs +0 -0
  139. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/emphasis_style.rs +0 -0
  140. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/front_matter_utils.rs +0 -0
  141. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/heading_utils.rs +0 -0
  142. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/list_utils.rs +0 -0
  143. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md001_heading_increment.rs +0 -0
  144. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md002_first_heading_h1.rs +0 -0
  145. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md003_heading_style.rs +0 -0
  146. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md007_ul_indent.rs +0 -0
  147. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md012_no_multiple_blanks.rs +0 -0
  148. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md013_line_length.rs +0 -0
  149. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md014_commands_show_output.rs +0 -0
  150. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md018_no_missing_space_atx.rs +0 -0
  151. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  152. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  153. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  154. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md022_blanks_around_headings.rs +0 -0
  155. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md023_heading_start_left.rs +0 -0
  156. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md024_no_duplicate_heading.rs +0 -0
  157. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md025_single_title.rs +0 -0
  158. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  159. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  160. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md032_blanks_around_lists.rs +0 -0
  161. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md033_no_inline_html.rs +0 -0
  162. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md034_no_bare_urls.rs +0 -0
  163. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md035_hr_style.rs +0 -0
  164. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  165. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md038_no_space_in_code.rs +0 -0
  166. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md041_first_line_heading.rs +0 -0
  167. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md042_no_empty_links.rs +0 -0
  168. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md047_single_trailing_newline.rs +0 -0
  169. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md049_emphasis_style.rs +0 -0
  170. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md051_link_fragments.rs +0 -0
  171. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  172. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md054_link_image_style.rs +0 -0
  173. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/md057_existing_relative_links.rs +0 -0
  174. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/mod.rs +0 -0
  175. {rumdl-0.0.82 → rumdl-0.0.83}/src/rules/strong_style.rs +0 -0
  176. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/ast_utils.rs +0 -0
  177. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/document_structure.rs +0 -0
  178. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/early_returns.rs +0 -0
  179. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/element_cache.rs +0 -0
  180. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/markdown_elements.rs +0 -0
  181. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/mod.rs +0 -0
  182. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/range_utils.rs +0 -0
  183. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/regex_cache.rs +0 -0
  184. {rumdl-0.0.82 → rumdl-0.0.83}/src/utils/string_interner.rs +0 -0
  185. {rumdl-0.0.82 → rumdl-0.0.83}/tests/advanced_integration_tests.rs +0 -0
  186. {rumdl-0.0.82 → rumdl-0.0.83}/tests/character_ranges/additional_tests.rs +0 -0
  187. {rumdl-0.0.82 → rumdl-0.0.83}/tests/character_ranges/basic_tests.rs +0 -0
  188. {rumdl-0.0.82 → rumdl-0.0.83}/tests/character_ranges/comprehensive_tests.rs +0 -0
  189. {rumdl-0.0.82 → rumdl-0.0.83}/tests/character_ranges/extended_tests.rs +0 -0
  190. {rumdl-0.0.82 → rumdl-0.0.83}/tests/character_ranges/mod.rs +0 -0
  191. {rumdl-0.0.82 → rumdl-0.0.83}/tests/character_ranges/unicode_utils.rs +0 -0
  192. {rumdl-0.0.82 → rumdl-0.0.83}/tests/cli_duplication_test.rs +0 -0
  193. {rumdl-0.0.82 → rumdl-0.0.83}/tests/cli_integration_tests.rs +0 -0
  194. {rumdl-0.0.82 → rumdl-0.0.83}/tests/cli_lsp_fix_consistency.rs +0 -0
  195. {rumdl-0.0.82 → rumdl-0.0.83}/tests/comprehensive_integration_tests.rs +0 -0
  196. {rumdl-0.0.82 → rumdl-0.0.83}/tests/config_application_tests.rs +0 -0
  197. {rumdl-0.0.82 → rumdl-0.0.83}/tests/config_file_command_test.rs +0 -0
  198. {rumdl-0.0.82 → rumdl-0.0.83}/tests/config_tests.rs +0 -0
  199. {rumdl-0.0.82 → rumdl-0.0.83}/tests/configuration_inheritance_tests.rs +0 -0
  200. {rumdl-0.0.82 → rumdl-0.0.83}/tests/consistency_regression_tests.rs +0 -0
  201. {rumdl-0.0.82 → rumdl-0.0.83}/tests/final_confidence_assessment.rs +0 -0
  202. {rumdl-0.0.82 → rumdl-0.0.83}/tests/init_command_test.rs +0 -0
  203. {rumdl-0.0.82 → rumdl-0.0.83}/tests/init_tests.rs +0 -0
  204. {rumdl-0.0.82 → rumdl-0.0.83}/tests/integration_tests.rs +0 -0
  205. {rumdl-0.0.82 → rumdl-0.0.83}/tests/json_output_test.rs +0 -0
  206. {rumdl-0.0.82 → rumdl-0.0.83}/tests/lib.rs +0 -0
  207. {rumdl-0.0.82 → rumdl-0.0.83}/tests/lsp_editor_integration_tests.rs +0 -0
  208. {rumdl-0.0.82 → rumdl-0.0.83}/tests/lsp_integration_tests.rs +0 -0
  209. {rumdl-0.0.82 → rumdl-0.0.83}/tests/lsp_memory_leak_tests.rs +0 -0
  210. {rumdl-0.0.82 → rumdl-0.0.83}/tests/lsp_tests.rs +0 -0
  211. {rumdl-0.0.82 → rumdl-0.0.83}/tests/malformed_markdown_stress_tests.rs +0 -0
  212. {rumdl-0.0.82 → rumdl-0.0.83}/tests/markdownlint_cli_integration.rs +0 -0
  213. {rumdl-0.0.82 → rumdl-0.0.83}/tests/markdownlint_config_test.rs +0 -0
  214. {rumdl-0.0.82 → rumdl-0.0.83}/tests/md030_edge_cases.md +0 -0
  215. {rumdl-0.0.82 → rumdl-0.0.83}/tests/output_format_tests.rs +0 -0
  216. {rumdl-0.0.82 → rumdl-0.0.83}/tests/perf_check.rs +0 -0
  217. {rumdl-0.0.82 → rumdl-0.0.83}/tests/performance_validation_tests.rs +0 -0
  218. {rumdl-0.0.82 → rumdl-0.0.83}/tests/pyproject_config_tests.rs +0 -0
  219. {rumdl-0.0.82 → rumdl-0.0.83}/tests/real_world_repository_tests.rs +0 -0
  220. {rumdl-0.0.82 → rumdl-0.0.83}/tests/regression_prevention_tests.rs +0 -0
  221. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md001_test.rs +0 -0
  222. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md001_unicode_test.rs +0 -0
  223. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md002_test.rs +0 -0
  224. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md003_test.rs +0 -0
  225. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md004_test.rs +0 -0
  226. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md005_test.rs +0 -0
  227. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md006_test.rs +0 -0
  228. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md006_unicode_test.rs +0 -0
  229. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md007_test.rs +0 -0
  230. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md009_test.rs +0 -0
  231. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md011_test.rs +0 -0
  232. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md012_test.rs +0 -0
  233. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md013_test.rs +0 -0
  234. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md014_test.rs +0 -0
  235. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md018_test.rs +0 -0
  236. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md019_test.rs +0 -0
  237. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md020_test.rs +0 -0
  238. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md021_test.rs +0 -0
  239. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md022_test.rs +0 -0
  240. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md023_extended_test.rs +0 -0
  241. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md023_test.rs +0 -0
  242. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md024_test.rs +0 -0
  243. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md025_test.rs +0 -0
  244. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md026_test.rs +0 -0
  245. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md027_test.rs +0 -0
  246. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md028_test.rs +0 -0
  247. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md030_test.rs +0 -0
  248. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md032_test.rs +0 -0
  249. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md033_extended_test.rs +0 -0
  250. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md033_test.rs +0 -0
  251. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md034_test.rs +0 -0
  252. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md035_test.rs +0 -0
  253. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md036_test.rs +0 -0
  254. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md037_test.rs +0 -0
  255. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md038_test.rs +0 -0
  256. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md039_test.rs +0 -0
  257. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md041_test.rs +0 -0
  258. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md042_test.rs +0 -0
  259. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md043_test.rs +0 -0
  260. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md047_test.rs +0 -0
  261. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md049_test.rs +0 -0
  262. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md051_test.rs +0 -0
  263. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md052_test.rs +0 -0
  264. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md053_additional_test.rs +0 -0
  265. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md053_proptest.rs +0 -0
  266. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md053_test.rs +0 -0
  267. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md054_test.rs +0 -0
  268. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md054_unicode_test.rs +0 -0
  269. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md055_test.rs +0 -0
  270. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md056_test.rs +0 -0
  271. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md057_test.rs +0 -0
  272. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/md058_test.rs +0 -0
  273. {rumdl-0.0.82 → rumdl-0.0.83}/tests/rules/mod.rs +0 -0
  274. {rumdl-0.0.82 → rumdl-0.0.83}/tests/unicode_edge_case_tests.rs +0 -0
  275. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils/blockquote_utils_test.rs +0 -0
  276. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils/code_block_utils_extended_test.rs +0 -0
  277. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils/core_utils_test.rs +0 -0
  278. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils/front_matter_utils_test.rs +0 -0
  279. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils/line_index_test.rs +0 -0
  280. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils/mod.rs +0 -0
  281. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils_markdown_edge_cases.rs +0 -0
  282. {rumdl-0.0.82 → rumdl-0.0.83}/tests/utils_tests.rs +0 -0
  283. {rumdl-0.0.82 → rumdl-0.0.83}/tests/vscode_extension_fixes.rs +0 -0
@@ -49,9 +49,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
49
49
 
50
50
  [[package]]
51
51
  name = "anstream"
52
- version = "0.6.18"
52
+ version = "0.6.19"
53
53
  source = "registry+https://github.com/rust-lang/crates.io-index"
54
- checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
54
+ checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933"
55
55
  dependencies = [
56
56
  "anstyle",
57
57
  "anstyle-parse",
@@ -64,33 +64,33 @@ dependencies = [
64
64
 
65
65
  [[package]]
66
66
  name = "anstyle"
67
- version = "1.0.10"
67
+ version = "1.0.11"
68
68
  source = "registry+https://github.com/rust-lang/crates.io-index"
69
- checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
69
+ checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"
70
70
 
71
71
  [[package]]
72
72
  name = "anstyle-parse"
73
- version = "0.2.6"
73
+ version = "0.2.7"
74
74
  source = "registry+https://github.com/rust-lang/crates.io-index"
75
- checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
75
+ checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
76
76
  dependencies = [
77
77
  "utf8parse",
78
78
  ]
79
79
 
80
80
  [[package]]
81
81
  name = "anstyle-query"
82
- version = "1.1.2"
82
+ version = "1.1.3"
83
83
  source = "registry+https://github.com/rust-lang/crates.io-index"
84
- checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
84
+ checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9"
85
85
  dependencies = [
86
86
  "windows-sys 0.59.0",
87
87
  ]
88
88
 
89
89
  [[package]]
90
90
  name = "anstyle-wincon"
91
- version = "3.0.8"
91
+ version = "3.0.9"
92
92
  source = "registry+https://github.com/rust-lang/crates.io-index"
93
- checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa"
93
+ checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882"
94
94
  dependencies = [
95
95
  "anstyle",
96
96
  "once_cell_polyfill",
@@ -226,9 +226,9 @@ dependencies = [
226
226
 
227
227
  [[package]]
228
228
  name = "bumpalo"
229
- version = "3.17.0"
229
+ version = "3.18.1"
230
230
  source = "registry+https://github.com/rust-lang/crates.io-index"
231
- checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
231
+ checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee"
232
232
 
233
233
  [[package]]
234
234
  name = "bytes"
@@ -244,9 +244,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
244
244
 
245
245
  [[package]]
246
246
  name = "cc"
247
- version = "1.2.25"
247
+ version = "1.2.26"
248
248
  source = "registry+https://github.com/rust-lang/crates.io-index"
249
- checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951"
249
+ checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac"
250
250
  dependencies = [
251
251
  "shlex",
252
252
  ]
@@ -341,9 +341,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
341
341
 
342
342
  [[package]]
343
343
  name = "colorchoice"
344
- version = "1.0.3"
344
+ version = "1.0.4"
345
345
  source = "registry+https://github.com/rust-lang/crates.io-index"
346
- checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
346
+ checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
347
347
 
348
348
  [[package]]
349
349
  name = "colored"
@@ -847,9 +847,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
847
847
 
848
848
  [[package]]
849
849
  name = "hashbrown"
850
- version = "0.15.3"
850
+ version = "0.15.4"
851
851
  source = "registry+https://github.com/rust-lang/crates.io-index"
852
- checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3"
852
+ checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
853
853
  dependencies = [
854
854
  "foldhash",
855
855
  ]
@@ -860,7 +860,7 @@ version = "0.10.0"
860
860
  source = "registry+https://github.com/rust-lang/crates.io-index"
861
861
  checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
862
862
  dependencies = [
863
- "hashbrown 0.15.3",
863
+ "hashbrown 0.15.4",
864
864
  ]
865
865
 
866
866
  [[package]]
@@ -1035,7 +1035,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1035
1035
  checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
1036
1036
  dependencies = [
1037
1037
  "equivalent",
1038
- "hashbrown 0.15.3",
1038
+ "hashbrown 0.15.4",
1039
1039
  ]
1040
1040
 
1041
1041
  [[package]]
@@ -1459,9 +1459,9 @@ dependencies = [
1459
1459
 
1460
1460
  [[package]]
1461
1461
  name = "portable-atomic"
1462
- version = "1.11.0"
1462
+ version = "1.11.1"
1463
1463
  source = "registry+https://github.com/rust-lang/crates.io-index"
1464
- checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
1464
+ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
1465
1465
 
1466
1466
  [[package]]
1467
1467
  name = "portable-atomic-util"
@@ -1783,7 +1783,7 @@ dependencies = [
1783
1783
 
1784
1784
  [[package]]
1785
1785
  name = "rumdl"
1786
- version = "0.0.82"
1786
+ version = "0.0.83"
1787
1787
  dependencies = [
1788
1788
  "anyhow",
1789
1789
  "assert_cmd",
@@ -1958,9 +1958,9 @@ dependencies = [
1958
1958
 
1959
1959
  [[package]]
1960
1960
  name = "serde_spanned"
1961
- version = "0.6.8"
1961
+ version = "0.6.9"
1962
1962
  source = "registry+https://github.com/rust-lang/crates.io-index"
1963
- checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
1963
+ checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
1964
1964
  dependencies = [
1965
1965
  "serde",
1966
1966
  ]
@@ -2021,9 +2021,9 @@ dependencies = [
2021
2021
 
2022
2022
  [[package]]
2023
2023
  name = "smallvec"
2024
- version = "1.15.0"
2024
+ version = "1.15.1"
2025
2025
  source = "registry+https://github.com/rust-lang/crates.io-index"
2026
- checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
2026
+ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
2027
2027
 
2028
2028
  [[package]]
2029
2029
  name = "socket2"
@@ -2222,9 +2222,9 @@ dependencies = [
2222
2222
 
2223
2223
  [[package]]
2224
2224
  name = "toml"
2225
- version = "0.8.22"
2225
+ version = "0.8.23"
2226
2226
  source = "registry+https://github.com/rust-lang/crates.io-index"
2227
- checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae"
2227
+ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
2228
2228
  dependencies = [
2229
2229
  "serde",
2230
2230
  "serde_spanned",
@@ -2234,18 +2234,18 @@ dependencies = [
2234
2234
 
2235
2235
  [[package]]
2236
2236
  name = "toml_datetime"
2237
- version = "0.6.9"
2237
+ version = "0.6.11"
2238
2238
  source = "registry+https://github.com/rust-lang/crates.io-index"
2239
- checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3"
2239
+ checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
2240
2240
  dependencies = [
2241
2241
  "serde",
2242
2242
  ]
2243
2243
 
2244
2244
  [[package]]
2245
2245
  name = "toml_edit"
2246
- version = "0.22.26"
2246
+ version = "0.22.27"
2247
2247
  source = "registry+https://github.com/rust-lang/crates.io-index"
2248
- checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e"
2248
+ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
2249
2249
  dependencies = [
2250
2250
  "indexmap",
2251
2251
  "serde",
@@ -2257,9 +2257,9 @@ dependencies = [
2257
2257
 
2258
2258
  [[package]]
2259
2259
  name = "toml_write"
2260
- version = "0.1.1"
2260
+ version = "0.1.2"
2261
2261
  source = "registry+https://github.com/rust-lang/crates.io-index"
2262
- checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076"
2262
+ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
2263
2263
 
2264
2264
  [[package]]
2265
2265
  name = "tower"
@@ -2344,9 +2344,9 @@ dependencies = [
2344
2344
 
2345
2345
  [[package]]
2346
2346
  name = "tracing-attributes"
2347
- version = "0.1.28"
2347
+ version = "0.1.29"
2348
2348
  source = "registry+https://github.com/rust-lang/crates.io-index"
2349
- checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
2349
+ checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662"
2350
2350
  dependencies = [
2351
2351
  "proc-macro2",
2352
2352
  "quote",
@@ -2355,9 +2355,9 @@ dependencies = [
2355
2355
 
2356
2356
  [[package]]
2357
2357
  name = "tracing-core"
2358
- version = "0.1.33"
2358
+ version = "0.1.34"
2359
2359
  source = "registry+https://github.com/rust-lang/crates.io-index"
2360
- checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
2360
+ checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
2361
2361
  dependencies = [
2362
2362
  "once_cell",
2363
2363
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.82"
3
+ version = "0.0.83"
4
4
  edition = "2021"
5
5
  description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
6
6
  authors = ["Ruben J. Jongejan <ruben.jongejan@gmail.com>"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.82
3
+ Version: 0.0.83
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -389,6 +389,7 @@ rumdl provides seamless compatibility with existing markdownlint configurations:
389
389
  - `markdownlint.json` / `markdownlint.yaml`
390
390
 
391
391
  **Explicit Import**: Convert markdownlint configs to rumdl format:
392
+
392
393
  ```bash
393
394
  # Convert to .rumdl.toml
394
395
  rumdl import .markdownlint.json
@@ -359,6 +359,7 @@ rumdl provides seamless compatibility with existing markdownlint configurations:
359
359
  - `markdownlint.json` / `markdownlint.yaml`
360
360
 
361
361
  **Explicit Import**: Convert markdownlint configs to rumdl format:
362
+
362
363
  ```bash
363
364
  # Convert to .rumdl.toml
364
365
  rumdl import .markdownlint.json
@@ -337,7 +337,7 @@ fn bench_fix_performance(c: &mut Criterion) {
337
337
 
338
338
  // MD032 - Blanks around lists
339
339
  c.bench_function("MD032 fix", |b| {
340
- let rule = MD032BlanksAroundLists;
340
+ let rule = MD032BlanksAroundLists::default();
341
341
  b.iter(|| rule.fix(black_box(&ctx)))
342
342
  });
343
343
 
@@ -72,6 +72,7 @@ When `list_items` is true (default):
72
72
  ```
73
73
 
74
74
  2. Second item
75
+
75
76
  ```
76
77
 
77
78
  When `list_items` is false:
@@ -81,7 +82,9 @@ When `list_items` is false:
81
82
  ```python
82
83
  code_in_list()
83
84
  ```
85
+
84
86
  2. Second item
87
+
85
88
  ```
86
89
 
87
90
  ## Automatic fixes
@@ -99,4 +102,4 @@ This rule automatically adds blank lines:
99
102
 
100
103
  - [MD032](md032.md) - Lists should be surrounded by blank lines
101
104
  - [MD040](md040.md) - Code blocks should have a language specified
102
- - [MD046](md046.md) - Code block style should be consistent
105
+ - [MD046](md046.md) - Code block style should be consistent
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## What this rule does
4
4
 
5
- Removes unnecessary spaces between emphasis markers (*asterisks* or _underscores_) and the text they format.
5
+ Removes unnecessary spaces between emphasis markers (*asterisks* or *underscores*) and the text they format.
6
6
 
7
7
  ## Why this matters
8
8
 
@@ -78,4 +78,4 @@ This rule automatically adds `text` as the language specifier for code blocks wi
78
78
 
79
79
  - [MD046](md046.md) - Code block style should be consistent
80
80
  - [MD048](md048.md) - Code fence style should be consistent
81
- - [MD031](md031.md) - Code blocks should be surrounded by blank lines
81
+ - [MD031](md031.md) - Code blocks should be surrounded by blank lines
@@ -25,7 +25,6 @@ This tool helps you lint Markdown files...
25
25
  ## Installation
26
26
 
27
27
  Install using npm:
28
- ```
29
28
 
30
29
  ## Usage
31
30
 
@@ -36,7 +35,7 @@ Run the following command...
36
35
  MIT License
37
36
  ```
38
37
 
39
- ### ❌ Incorrect
38
+ ### ❌ Incorrect
40
39
 
41
40
  ```markdown
42
41
  # Getting Started <!-- Wrong heading text -->
@@ -67,7 +66,7 @@ This tool helps you...
67
66
 
68
67
  Install using npm...
69
68
 
70
- ## Usage <!-- Corrected heading -->
69
+ ## Usage <!-- Corrected heading -->
71
70
 
72
71
  Run the following...
73
72
 
@@ -82,7 +81,7 @@ MIT License
82
81
  MD043:
83
82
  headings: # Required heading patterns
84
83
  - "# Overview"
85
- - "## Installation"
84
+ - "## Installation"
86
85
  - "## Usage"
87
86
  - "/## .*License/" # Regex patterns supported
88
87
  match_case: false # Case-sensitive matching (default: false)
@@ -111,4 +110,4 @@ When enabled, this rule will:
111
110
 
112
111
  - [MD001](md001.md) - Keep heading levels organized
113
112
  - [MD003](md003.md) - Use consistent heading styles
114
- - [MD025](md025.md) - Use only one main title
113
+ - [MD025](md025.md) - Use only one main title
@@ -83,4 +83,4 @@ When enabled, this rule will:
83
83
 
84
84
  - [MD033](md033.md) - Control HTML usage in Markdown
85
85
  - [MD042](md042.md) - Avoid empty links
86
- - [MD052](md052.md) - Validate reference links and images
86
+ - [MD052](md052.md) - Validate reference links and images
@@ -15,7 +15,7 @@ Ensures all code blocks in your document use the same style - either fenced (wit
15
15
 
16
16
  ### ✅ Correct (Fenced style)
17
17
 
18
- ```markdown
18
+ ````markdown
19
19
  Here's how to use our API:
20
20
 
21
21
  ```javascript
@@ -31,11 +31,11 @@ And here's the response format:
31
31
  "data": {}
32
32
  }
33
33
  ```
34
- ```
34
+ ````
35
35
 
36
36
  ### ❌ Incorrect (Mixed styles)
37
37
 
38
- ```markdown
38
+ ````markdown
39
39
  Here's how to use our API:
40
40
 
41
41
  ```javascript
@@ -49,11 +49,11 @@ And here's the response format:
49
49
  "status": "success",
50
50
  "data": {}
51
51
  }
52
- ```
52
+ ````
53
53
 
54
54
  ### 🔧 Fixed
55
55
 
56
- ```markdown
56
+ ````markdown
57
57
  Here's how to use our API:
58
58
 
59
59
  ```javascript
@@ -69,7 +69,7 @@ And here's the response format:
69
69
  "data": {}
70
70
  }
71
71
  ```
72
- ```
72
+ ````
73
73
 
74
74
  ## Configuration
75
75
 
@@ -114,4 +114,4 @@ When enabled, this rule will:
114
114
 
115
115
  - [MD031](md031.md) - Add blank lines around code blocks
116
116
  - [MD040](md040.md) - Specify languages for code blocks
117
- - [MD048](md048.md) - Use consistent fence markers (backticks vs tildes)
117
+ - [MD048](md048.md) - Use consistent fence markers (backticks vs tildes)
@@ -22,6 +22,7 @@ This is the content of my document.
22
22
 
23
23
  The last line ends with a single newline.
24
24
  ```
25
+
25
26
  (Note: There's an invisible newline after "newline.")
26
27
 
27
28
  ### ❌ Incorrect
@@ -43,6 +44,7 @@ The last line has multiple newlines.
43
44
 
44
45
 
45
46
  ```
47
+
46
48
  (Note: Multiple blank lines at the end)
47
49
 
48
50
  ### 🔧 Fixed
@@ -54,6 +56,7 @@ This is the content of my document.
54
56
 
55
57
  The last line now ends with a single newline.
56
58
  ```
59
+
57
60
  (Note: Exactly one newline added at the end)
58
61
 
59
62
  ## Configuration
@@ -89,4 +92,4 @@ When enabled, this rule will:
89
92
 
90
93
  - [MD012](md012.md) - Remove multiple consecutive blank lines
91
94
  - [MD022](md022.md) - Add blank lines around headings
92
- - [MD031](md031.md) - Add blank lines around code blocks
95
+ - [MD031](md031.md) - Add blank lines around code blocks
@@ -102,4 +102,4 @@ This rule automatically converts all code fence markers to match your configured
102
102
 
103
103
  - [MD031](md031.md) - Code blocks need blank lines around them
104
104
  - [MD040](md040.md) - Code blocks should have a language specified
105
- - [MD046](md046.md) - Code block style should be consistent
105
+ - [MD046](md046.md) - Code block style should be consistent
@@ -1,11 +1,13 @@
1
1
  use log::warn;
2
2
  use markdown::{mdast::Node, to_mdast, ParseOptions};
3
3
  use std::panic;
4
+ use crate::utils::code_block_utils::CodeBlockUtils;
4
5
 
5
6
  pub struct LintContext<'a> {
6
7
  pub content: &'a str,
7
8
  pub ast: Node, // The root of the AST
8
9
  pub line_offsets: Vec<usize>,
10
+ pub code_blocks: Vec<(usize, usize)>, // Cached code block and code span ranges
9
11
  }
10
12
 
11
13
  impl<'a> LintContext<'a> {
@@ -24,10 +26,15 @@ impl<'a> LintContext<'a> {
24
26
  line_offsets.push(i + 1);
25
27
  }
26
28
  }
29
+
30
+ // Detect code blocks once and cache them
31
+ let code_blocks = CodeBlockUtils::detect_code_blocks(content);
32
+
27
33
  return Self {
28
34
  content,
29
35
  ast,
30
36
  line_offsets,
37
+ code_blocks,
31
38
  };
32
39
  }
33
40
 
@@ -63,10 +70,15 @@ impl<'a> LintContext<'a> {
63
70
  line_offsets.push(i + 1);
64
71
  }
65
72
  }
73
+
74
+ // Detect code blocks once and cache them
75
+ let code_blocks = CodeBlockUtils::detect_code_blocks(content);
76
+
66
77
  Self {
67
78
  content,
68
79
  ast,
69
80
  line_offsets,
81
+ code_blocks,
70
82
  }
71
83
  }
72
84
 
@@ -84,6 +96,11 @@ impl<'a> LintContext<'a> {
84
96
  }
85
97
  }
86
98
  }
99
+
100
+ /// Check if a position is within a code block or code span
101
+ pub fn is_in_code_block_or_span(&self, pos: usize) -> bool {
102
+ CodeBlockUtils::is_in_code_block_or_span(&self.code_blocks, pos)
103
+ }
87
104
  }
88
105
 
89
106
  /// Check if content contains patterns that cause the markdown crate to panic
@@ -122,7 +122,6 @@ impl Rule for MD004UnorderedListStyle {
122
122
 
123
123
  let mut warnings = Vec::new();
124
124
  let content = &ctx.content;
125
- let mut in_code_block = false;
126
125
  let mut in_front_matter = false;
127
126
  let mut first_marker: Option<char> = None;
128
127
 
@@ -136,12 +135,8 @@ impl Rule for MD004UnorderedListStyle {
136
135
  }
137
136
 
138
137
  for (i, line) in lines.iter().enumerate() {
139
- // Check for code block markers
140
- if CODE_BLOCK_START.is_match(line) {
141
- in_code_block = !in_code_block;
142
- continue;
143
- }
144
- if in_code_block {
138
+ // Skip if in code block
139
+ if ctx.is_in_code_block_or_span(line_positions[i]) {
145
140
  continue;
146
141
  }
147
142
 
@@ -245,7 +240,6 @@ impl Rule for MD004UnorderedListStyle {
245
240
  fn fix(&self, ctx: &LintContext) -> Result<String, LintError> {
246
241
  let content = &ctx.content;
247
242
  let mut result = content.to_string();
248
- let mut in_code_block = false;
249
243
  let mut in_front_matter = false;
250
244
  let mut first_marker: Option<char> = None;
251
245
  let mut edits = Vec::new();
@@ -260,12 +254,8 @@ impl Rule for MD004UnorderedListStyle {
260
254
  }
261
255
 
262
256
  for (i, line) in lines.iter().enumerate() {
263
- // Check for code block markers
264
- if CODE_BLOCK_START.is_match(line) {
265
- in_code_block = !in_code_block;
266
- continue;
267
- }
268
- if in_code_block {
257
+ // Skip if in code block
258
+ if ctx.is_in_code_block_or_span(line_positions[i]) {
269
259
  continue;
270
260
  }
271
261
 
@@ -341,11 +341,7 @@ impl Rule for MD005ListIndent {
341
341
  let mut warnings_with_fixes: Vec<_> = warnings
342
342
  .into_iter()
343
343
  .filter_map(|w| {
344
- if let Some(fix) = w.fix.clone() {
345
- Some((w, fix))
346
- } else {
347
- None
348
- }
344
+ w.fix.clone().map(|fix| (w, fix))
349
345
  })
350
346
  .collect();
351
347
  warnings_with_fixes.sort_by_key(|(_, fix)| std::cmp::Reverse(fix.range.start));
@@ -59,13 +59,13 @@ impl MD006StartBullets {
59
59
  // Found a potential parent or sibling
60
60
  // Check if there's any non-list content between this potential parent and current item
61
61
  let mut has_breaking_content = false;
62
- for check_idx in (i + 1)..line_idx {
63
- if Self::is_blank_line(lines[check_idx]) {
62
+ for check_line in &lines[(i + 1)..line_idx] {
63
+ if Self::is_blank_line(check_line) {
64
64
  continue;
65
65
  }
66
- if Self::is_bullet_list_item(lines[check_idx]).is_none() {
66
+ if Self::is_bullet_list_item(check_line).is_none() {
67
67
  // Found non-list content - check if it breaks the list structure
68
- let content_indent = lines[check_idx].len() - lines[check_idx].trim_start().len();
68
+ let content_indent = check_line.len() - check_line.trim_start().len();
69
69
 
70
70
  // Content is acceptable if:
71
71
  // 1. It's indented at least as much as the current item (continuation of parent)
@@ -30,20 +30,6 @@ impl MD009TrailingSpaces {
30
30
  Self { br_spaces, strict }
31
31
  }
32
32
 
33
- fn is_in_code_block(lines: &[&str], current_line: usize) -> bool {
34
- let mut fence_count = 0;
35
- for (i, line) in lines.iter().enumerate() {
36
- if i == current_line {
37
- // Check if we're inside a code block at this point
38
- return fence_count % 2 == 1;
39
- }
40
- let trimmed = line.trim_start();
41
- if trimmed.starts_with("```") || trimmed.starts_with("~~~") {
42
- fence_count += 1;
43
- }
44
- }
45
- false
46
- }
47
33
 
48
34
  fn is_empty_blockquote_line(line: &str) -> bool {
49
35
  let trimmed = line.trim_start();
@@ -113,8 +99,15 @@ impl Rule for MD009TrailingSpaces {
113
99
  }
114
100
 
115
101
  // Handle code blocks if not in strict mode
116
- if !self.strict && Self::is_in_code_block(&lines, line_num) {
117
- continue;
102
+ if !self.strict {
103
+ // Calculate byte position for this line
104
+ let mut byte_pos = 0;
105
+ for line in &lines[..line_num] {
106
+ byte_pos += line.len() + 1; // +1 for newline
107
+ }
108
+ if ctx.is_in_code_block_or_span(byte_pos) {
109
+ continue;
110
+ }
118
111
  }
119
112
 
120
113
  // Check if it's a valid line break
@@ -209,7 +202,12 @@ impl Rule for MD009TrailingSpaces {
209
202
  }
210
203
 
211
204
  // Handle code blocks if not in strict mode
212
- if Self::is_in_code_block(&lines, i) {
205
+ // Calculate byte position for this line
206
+ let mut byte_pos = 0;
207
+ for prev_line in &lines[..i] {
208
+ byte_pos += prev_line.len() + 1; // +1 for newline
209
+ }
210
+ if ctx.is_in_code_block_or_span(byte_pos) {
213
211
  result.push_str(line);
214
212
  result.push('\n');
215
213
  continue;