rumdl 0.0.49__tar.gz → 0.0.51__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 (260) hide show
  1. {rumdl-0.0.49 → rumdl-0.0.51}/Cargo.lock +1 -1
  2. {rumdl-0.0.49 → rumdl-0.0.51}/Cargo.toml +1 -1
  3. {rumdl-0.0.49 → rumdl-0.0.51}/PKG-INFO +1 -1
  4. {rumdl-0.0.49 → rumdl-0.0.51}/benches/rule_performance.rs +3 -4
  5. {rumdl-0.0.49 → rumdl-0.0.51}/src/main.rs +39 -202
  6. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/heading_utils.rs +1 -1
  7. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md011_no_reversed_links.rs +18 -13
  8. rumdl-0.0.51/src/rules/md024_no_duplicate_heading.rs +195 -0
  9. rumdl-0.0.51/src/rules/md029_ordered_list_prefix.rs +402 -0
  10. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md036_no_emphasis_only_first.rs +3 -3
  11. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md037_spaces_around_emphasis.rs +6 -7
  12. rumdl-0.0.49/src/rules/md047_file_end_newline.rs → rumdl-0.0.51/src/rules/md047_single_trailing_newline.rs +7 -7
  13. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/mod.rs +9 -9
  14. {rumdl-0.0.49 → rumdl-0.0.51}/tests/cli_integration_tests.rs +109 -0
  15. {rumdl-0.0.49 → rumdl-0.0.51}/tests/integration_tests.rs +2 -2
  16. {rumdl-0.0.49 → rumdl-0.0.51}/tests/perf_check.rs +2 -2
  17. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md011_test.rs +5 -5
  18. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md024_test.rs +19 -17
  19. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md029_test.rs +7 -7
  20. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md036_test.rs +10 -10
  21. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md037_test.rs +22 -22
  22. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md047_test.rs +5 -5
  23. rumdl-0.0.49/src/rules/md009_no_trailing_spaces.rs +0 -149
  24. rumdl-0.0.49/src/rules/md011_reversed_link.rs +0 -77
  25. rumdl-0.0.49/src/rules/md024_multiple_headings.rs +0 -211
  26. rumdl-0.0.49/src/rules/md024_no_duplicate_heading.rs +0 -200
  27. rumdl-0.0.49/src/rules/md027_no_multiple_space_blockquote.rs +0 -103
  28. rumdl-0.0.49/src/rules/md029_ol_prefix.rs +0 -123
  29. rumdl-0.0.49/src/rules/md029_ordered_list_item_prefix.rs +0 -154
  30. rumdl-0.0.49/src/rules/md029_ordered_list_marker.rs +0 -427
  31. rumdl-0.0.49/src/rules/md029_ordered_list_prefix.rs +0 -298
  32. rumdl-0.0.49/src/rules/md047_single_trailing_newline.rs +0 -54
  33. {rumdl-0.0.49 → rumdl-0.0.51}/.pre-commit-config.yaml +0 -0
  34. {rumdl-0.0.49 → rumdl-0.0.51}/.rumdl.toml +0 -0
  35. {rumdl-0.0.49 → rumdl-0.0.51}/MANIFEST.in +0 -0
  36. {rumdl-0.0.49 → rumdl-0.0.51}/Makefile +0 -0
  37. {rumdl-0.0.49 → rumdl-0.0.51}/README.md +0 -0
  38. {rumdl-0.0.49 → rumdl-0.0.51}/assets/logo.png +0 -0
  39. {rumdl-0.0.49 → rumdl-0.0.51}/benches/range_performance.rs +0 -0
  40. {rumdl-0.0.49 → rumdl-0.0.51}/benches/range_utils_benchmark.rs +0 -0
  41. {rumdl-0.0.49 → rumdl-0.0.51}/docs/RULES.md +0 -0
  42. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md001.md +0 -0
  43. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md002.md +0 -0
  44. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md003.md +0 -0
  45. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md004.md +0 -0
  46. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md005.md +0 -0
  47. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md006.md +0 -0
  48. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md007.md +0 -0
  49. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md008.md +0 -0
  50. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md009.md +0 -0
  51. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md010.md +0 -0
  52. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md011.md +0 -0
  53. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md012.md +0 -0
  54. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md013.md +0 -0
  55. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md014.md +0 -0
  56. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md015.md +0 -0
  57. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md016.md +0 -0
  58. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md017.md +0 -0
  59. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md018.md +0 -0
  60. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md019.md +0 -0
  61. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md020.md +0 -0
  62. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md021.md +0 -0
  63. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md022.md +0 -0
  64. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md023.md +0 -0
  65. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md024.md +0 -0
  66. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md025.md +0 -0
  67. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md026.md +0 -0
  68. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md027.md +0 -0
  69. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md028.md +0 -0
  70. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md029.md +0 -0
  71. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md030.md +0 -0
  72. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md031.md +0 -0
  73. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md032.md +0 -0
  74. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md033.md +0 -0
  75. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md034.md +0 -0
  76. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md035.md +0 -0
  77. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md036.md +0 -0
  78. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md037.md +0 -0
  79. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md038.md +0 -0
  80. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md039.md +0 -0
  81. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md040.md +0 -0
  82. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md041.md +0 -0
  83. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md042.md +0 -0
  84. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md043.md +0 -0
  85. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md044.md +0 -0
  86. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md045.md +0 -0
  87. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md046.md +0 -0
  88. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md047.md +0 -0
  89. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md048.md +0 -0
  90. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md049.md +0 -0
  91. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md050.md +0 -0
  92. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md051.md +0 -0
  93. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md052.md +0 -0
  94. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md053.md +0 -0
  95. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md054.md +0 -0
  96. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md055.md +0 -0
  97. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md056.md +0 -0
  98. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md057.md +0 -0
  99. {rumdl-0.0.49 → rumdl-0.0.51}/docs/md058.md +0 -0
  100. {rumdl-0.0.49 → rumdl-0.0.51}/pyproject.toml +0 -0
  101. {rumdl-0.0.49 → rumdl-0.0.51}/python/MANIFEST.in +0 -0
  102. {rumdl-0.0.49 → rumdl-0.0.51}/python/PYTHON-README.md +0 -0
  103. {rumdl-0.0.49 → rumdl-0.0.51}/python/rumdl/__init__.py +0 -0
  104. {rumdl-0.0.49 → rumdl-0.0.51}/python/rumdl/__main__.py +0 -0
  105. {rumdl-0.0.49 → rumdl-0.0.51}/python/rumdl/py.typed +0 -0
  106. {rumdl-0.0.49 → rumdl-0.0.51}/rumdl.toml.example +0 -0
  107. {rumdl-0.0.49 → rumdl-0.0.51}/src/config.rs +0 -0
  108. {rumdl-0.0.49 → rumdl-0.0.51}/src/init.rs +0 -0
  109. {rumdl-0.0.49 → rumdl-0.0.51}/src/lib.rs +0 -0
  110. {rumdl-0.0.49 → rumdl-0.0.51}/src/profiling.rs +0 -0
  111. {rumdl-0.0.49 → rumdl-0.0.51}/src/python.rs +0 -0
  112. {rumdl-0.0.49 → rumdl-0.0.51}/src/rule.rs +0 -0
  113. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/blockquote_utils.rs +0 -0
  114. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/code_block_utils.rs +0 -0
  115. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/code_fence_utils.rs +0 -0
  116. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/emphasis_style.rs +0 -0
  117. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/front_matter_utils.rs +0 -0
  118. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/list_utils.rs +0 -0
  119. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md001_heading_increment.rs +0 -0
  120. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md002_first_heading_h1.rs +0 -0
  121. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md003_heading_style.rs +0 -0
  122. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md004_unordered_list_style.rs +0 -0
  123. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md005_list_indent.rs +0 -0
  124. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md006_start_bullets.rs +0 -0
  125. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md007_ul_indent.rs +0 -0
  126. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md008_ul_style.rs +0 -0
  127. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md009_trailing_spaces.rs +0 -0
  128. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md010_no_hard_tabs.rs +0 -0
  129. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md012_no_multiple_blanks.rs +0 -0
  130. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md013_line_length.rs +0 -0
  131. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md014_commands_show_output.rs +0 -0
  132. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md015_no_missing_space_after_list_marker.rs +0 -0
  133. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md016_no_multiple_space_after_list_marker.rs +0 -0
  134. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md017_no_emphasis_as_heading.rs +0 -0
  135. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md018_no_missing_space_atx.rs +0 -0
  136. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  137. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  138. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  139. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md022_blanks_around_headings.rs +0 -0
  140. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md023_heading_start_left.rs +0 -0
  141. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md025_single_title.rs +0 -0
  142. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  143. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  144. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  145. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md030_list_marker_space.rs +0 -0
  146. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md031_blanks_around_fences.rs +0 -0
  147. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md032_blanks_around_lists.rs +0 -0
  148. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md033_no_inline_html.rs +0 -0
  149. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md034_no_bare_urls.rs +0 -0
  150. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md035_hr_style.rs +0 -0
  151. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md038_no_space_in_code.rs +0 -0
  152. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md039_no_space_in_links.rs +0 -0
  153. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md040_fenced_code_language.rs +0 -0
  154. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md041_first_line_heading.rs +0 -0
  155. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md042_no_empty_links.rs +0 -0
  156. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md043_required_headings.rs +0 -0
  157. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md044_proper_names.rs +0 -0
  158. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md045_no_alt_text.rs +0 -0
  159. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md046_code_block_style.rs +0 -0
  160. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md048_code_fence_style.rs +0 -0
  161. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md049_emphasis_style.rs +0 -0
  162. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md050_strong_style.rs +0 -0
  163. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md051_link_fragments.rs +0 -0
  164. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md052_reference_links_images.rs +0 -0
  165. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  166. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md054_link_image_style.rs +0 -0
  167. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md055_table_pipe_style.rs +0 -0
  168. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md056_table_column_count.rs +0 -0
  169. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md057_existing_relative_links.rs +0 -0
  170. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md058_blanks_around_tables.rs +0 -0
  171. {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/strong_style.rs +0 -0
  172. {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/code_block_utils.rs +0 -0
  173. {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/document_structure.rs +0 -0
  174. {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/early_returns.rs +0 -0
  175. {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/element_cache.rs +0 -0
  176. {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/markdown_elements.rs +0 -0
  177. {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/mod.rs +0 -0
  178. {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/range_utils.rs +0 -0
  179. {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/regex_cache.rs +0 -0
  180. {rumdl-0.0.49 → rumdl-0.0.51}/tests/advanced_integration_tests.rs +0 -0
  181. {rumdl-0.0.49 → rumdl-0.0.51}/tests/cli_duplication_test.rs +0 -0
  182. {rumdl-0.0.49 → rumdl-0.0.51}/tests/commonmark_compliance_tests.rs +0 -0
  183. {rumdl-0.0.49 → rumdl-0.0.51}/tests/comprehensive_integration_tests.rs +0 -0
  184. {rumdl-0.0.49 → rumdl-0.0.51}/tests/config_application_tests.rs +0 -0
  185. {rumdl-0.0.49 → rumdl-0.0.51}/tests/config_tests.rs +0 -0
  186. {rumdl-0.0.49 → rumdl-0.0.51}/tests/init_command_test.rs +0 -0
  187. {rumdl-0.0.49 → rumdl-0.0.51}/tests/init_tests.rs +0 -0
  188. {rumdl-0.0.49 → rumdl-0.0.51}/tests/lib.rs +0 -0
  189. {rumdl-0.0.49 → rumdl-0.0.51}/tests/output_format_tests.rs +0 -0
  190. {rumdl-0.0.49 → rumdl-0.0.51}/tests/pyproject_config_tests.rs +0 -0
  191. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md001_test.rs +0 -0
  192. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md001_unicode_test.rs +0 -0
  193. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md002_test.rs +0 -0
  194. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md003_test.rs +0 -0
  195. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md004_test.rs +0 -0
  196. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md005_test.rs +0 -0
  197. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md006_test.rs +0 -0
  198. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md006_unicode_test.rs +0 -0
  199. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md007_test.rs +0 -0
  200. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md008_test.rs +0 -0
  201. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md009_test.rs +0 -0
  202. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md010_test.rs +0 -0
  203. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md012_test.rs +0 -0
  204. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md013_test.rs +0 -0
  205. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md014_test.rs +0 -0
  206. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md015_proptest.rs +0 -0
  207. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md015_test.rs +0 -0
  208. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md016_test.rs +0 -0
  209. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md017_test.rs +0 -0
  210. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md018_test.rs +0 -0
  211. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md019_test.rs +0 -0
  212. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md020_test.rs +0 -0
  213. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md021_test.rs +0 -0
  214. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md022_test.rs +0 -0
  215. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md023_extended_test.rs +0 -0
  216. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md023_test.rs +0 -0
  217. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md025_test.rs +0 -0
  218. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md026_test.rs +0 -0
  219. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md027_test.rs +0 -0
  220. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md028_test.rs +0 -0
  221. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md030_test.rs +0 -0
  222. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md031_test.rs +0 -0
  223. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md032_test.rs +0 -0
  224. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md033_extended_test.rs +0 -0
  225. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md033_test.rs +0 -0
  226. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md034_test.rs +0 -0
  227. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md035_test.rs +0 -0
  228. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md038_test.rs +0 -0
  229. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md039_test.rs +0 -0
  230. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md040_test.rs +0 -0
  231. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md041_test.rs +0 -0
  232. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md042_test.rs +0 -0
  233. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md043_test.rs +0 -0
  234. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md044_test.rs +0 -0
  235. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md045_test.rs +0 -0
  236. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md046_test.rs +0 -0
  237. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md048_test.rs +0 -0
  238. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md049_test.rs +0 -0
  239. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md050_test.rs +0 -0
  240. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md051_test.rs +0 -0
  241. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md052_test.rs +0 -0
  242. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md053_additional_test.rs +0 -0
  243. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md053_proptest.rs +0 -0
  244. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md053_test.rs +0 -0
  245. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md054_test.rs +0 -0
  246. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md054_unicode_test.rs +0 -0
  247. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md055_test.rs +0 -0
  248. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md056_test.rs +0 -0
  249. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md057_test.rs +0 -0
  250. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md058_test.rs +0 -0
  251. {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/mod.rs +0 -0
  252. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/blockquote_utils_test.rs +0 -0
  253. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/code_block_utils_extended_test.rs +0 -0
  254. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/code_block_utils_test.rs +0 -0
  255. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/core_utils_test.rs +0 -0
  256. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/front_matter_utils_test.rs +0 -0
  257. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/line_index_test.rs +0 -0
  258. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/mod.rs +0 -0
  259. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils_markdown_edge_cases.rs +0 -0
  260. {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils_tests.rs +0 -0
@@ -1208,7 +1208,7 @@ dependencies = [
1208
1208
 
1209
1209
  [[package]]
1210
1210
  name = "rumdl"
1211
- version = "0.0.49"
1211
+ version = "0.0.51"
1212
1212
  dependencies = [
1213
1213
  "anyhow",
1214
1214
  "assert_cmd",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.49"
3
+ version = "0.0.51"
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.49
3
+ Version: 0.0.51
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -1,9 +1,8 @@
1
1
  use criterion::{black_box, criterion_group, criterion_main, Criterion};
2
2
  use rumdl::rule::Rule;
3
3
  use rumdl::rules::{
4
- MD013LineLength, MD015NoMissingSpaceAfterListMarker, MD033NoInlineHtml,
5
- MD037SpacesAroundEmphasis, MD044ProperNames, MD051LinkFragments,
6
- MD053LinkImageReferenceDefinitions,
4
+ MD013LineLength, MD015NoMissingSpaceAfterListMarker, MD033NoInlineHtml, MD037NoSpaceInEmphasis,
5
+ MD044ProperNames, MD051LinkFragments, MD053LinkImageReferenceDefinitions,
7
6
  };
8
7
 
9
8
  /// Benchmark MD013 rule on a large content with long lines
@@ -66,7 +65,7 @@ fn bench_md037(c: &mut Criterion) {
66
65
  }
67
66
  }
68
67
 
69
- let rule = MD037SpacesAroundEmphasis;
68
+ let rule = MD037NoSpaceInEmphasis;
70
69
 
71
70
  c.bench_function("MD037 check 500 emphasis markers", |b| {
72
71
  b.iter(|| rule.check(black_box(&content)))
@@ -233,7 +233,7 @@ fn get_enabled_rules_from_checkargs(
233
233
  Box::new(MD008ULStyle::default()),
234
234
  Box::new(MD009TrailingSpaces::default()),
235
235
  Box::new(MD010NoHardTabs::default()),
236
- Box::new(MD011ReversedLink {}),
236
+ Box::new(MD011NoReversedLinks {}),
237
237
  Box::new(MD012NoMultipleBlanks::default()),
238
238
  Box::new(MD013LineLength::default()),
239
239
  Box::new(MD015NoMissingSpaceAfterListMarker::default()),
@@ -245,7 +245,7 @@ fn get_enabled_rules_from_checkargs(
245
245
  Box::new(MD021NoMultipleSpaceClosedAtx {}),
246
246
  Box::new(MD022BlanksAroundHeadings::default()),
247
247
  Box::new(MD023HeadingStartLeft {}),
248
- Box::new(MD024MultipleHeadings::default()),
248
+ Box::new(MD024NoDuplicateHeading::default()),
249
249
  Box::new(MD025SingleTitle::default()),
250
250
  Box::new(MD026NoTrailingPunctuation::default()),
251
251
  Box::new(MD027MultipleSpacesBlockquote {}),
@@ -257,8 +257,8 @@ fn get_enabled_rules_from_checkargs(
257
257
  Box::new(MD033NoInlineHtml::default()),
258
258
  Box::new(MD034NoBareUrls {}),
259
259
  Box::new(MD035HRStyle::default()),
260
- Box::new(MD036NoEmphasisOnlyFirst {}),
261
- Box::new(MD037SpacesAroundEmphasis),
260
+ Box::new(MD036NoEmphasisAsHeading {}),
261
+ Box::new(MD037NoSpaceInEmphasis),
262
262
  Box::new(MD038NoSpaceInCode::default()),
263
263
  Box::new(MD039NoSpaceInLinks),
264
264
  Box::new(MD040FencedCodeLanguage {}),
@@ -268,7 +268,7 @@ fn get_enabled_rules_from_checkargs(
268
268
  Box::new(MD044ProperNames::new(Vec::new(), true)),
269
269
  Box::new(MD045NoAltText::new()),
270
270
  Box::new(MD046CodeBlockStyle::new(CodeBlockStyle::Consistent)),
271
- Box::new(MD047FileEndNewline),
271
+ Box::new(MD047SingleTrailingNewline),
272
272
  Box::new(MD048CodeFenceStyle::new(CodeFenceStyle::Consistent)),
273
273
  Box::new(MD049EmphasisStyle::default()),
274
274
  Box::new(MD050StrongStyle::new(StrongStyle::Consistent)),
@@ -737,7 +737,7 @@ build-backend = \"setuptools.build_meta\"
737
737
  Box::new(MD008ULStyle::default()),
738
738
  Box::new(MD009TrailingSpaces::default()),
739
739
  Box::new(MD010NoHardTabs::default()),
740
- Box::new(MD011ReversedLink {}),
740
+ Box::new(MD011NoReversedLinks {}),
741
741
  Box::new(MD012NoMultipleBlanks::default()),
742
742
  Box::new(MD013LineLength::default()),
743
743
  Box::new(MD015NoMissingSpaceAfterListMarker::default()),
@@ -749,7 +749,7 @@ build-backend = \"setuptools.build_meta\"
749
749
  Box::new(MD021NoMultipleSpaceClosedAtx {}),
750
750
  Box::new(MD022BlanksAroundHeadings::default()),
751
751
  Box::new(MD023HeadingStartLeft {}),
752
- Box::new(MD024MultipleHeadings::default()),
752
+ Box::new(MD024NoDuplicateHeading::default()),
753
753
  Box::new(MD025SingleTitle::default()),
754
754
  Box::new(MD026NoTrailingPunctuation::default()),
755
755
  Box::new(MD027MultipleSpacesBlockquote {}),
@@ -761,8 +761,8 @@ build-backend = \"setuptools.build_meta\"
761
761
  Box::new(MD033NoInlineHtml::default()),
762
762
  Box::new(MD034NoBareUrls {}),
763
763
  Box::new(MD035HRStyle::default()),
764
- Box::new(MD036NoEmphasisOnlyFirst {}),
765
- Box::new(MD037SpacesAroundEmphasis),
764
+ Box::new(MD036NoEmphasisAsHeading {}),
765
+ Box::new(MD037NoSpaceInEmphasis),
766
766
  Box::new(MD038NoSpaceInCode::default()),
767
767
  Box::new(MD039NoSpaceInLinks),
768
768
  Box::new(MD040FencedCodeLanguage {}),
@@ -772,7 +772,7 @@ build-backend = \"setuptools.build_meta\"
772
772
  Box::new(MD044ProperNames::new(Vec::new(), true)),
773
773
  Box::new(MD045NoAltText::new()),
774
774
  Box::new(MD046CodeBlockStyle::new(CodeBlockStyle::Consistent)),
775
- Box::new(MD047FileEndNewline),
775
+ Box::new(MD047SingleTrailingNewline),
776
776
  Box::new(MD048CodeFenceStyle::new(CodeFenceStyle::Consistent)),
777
777
  Box::new(MD049EmphasisStyle::default()),
778
778
  Box::new(MD050StrongStyle::new(StrongStyle::Consistent)),
@@ -944,6 +944,10 @@ build-backend = \"setuptools.build_meta\"
944
944
  use rumdl::rules::*;
945
945
  use std::collections::BTreeMap;
946
946
  use toml::Value;
947
+ // Build default global config
948
+ let global = Value::try_from(rumdl_config::GlobalConfig::default())
949
+ .unwrap_or(Value::Table(Default::default()));
950
+ // Build default rule configs
947
951
  let mut rule_map = BTreeMap::new();
948
952
  let all_rules: Vec<Box<dyn Rule>> = vec![
949
953
  Box::new(MD001HeadingIncrement),
@@ -956,7 +960,7 @@ build-backend = \"setuptools.build_meta\"
956
960
  Box::new(MD008ULStyle::default()),
957
961
  Box::new(MD009TrailingSpaces::default()),
958
962
  Box::new(MD010NoHardTabs::default()),
959
- Box::new(MD011ReversedLink {}),
963
+ Box::new(MD011NoReversedLinks {}),
960
964
  Box::new(MD012NoMultipleBlanks::default()),
961
965
  Box::new(MD013LineLength::default()),
962
966
  Box::new(MD015NoMissingSpaceAfterListMarker::default()),
@@ -968,7 +972,7 @@ build-backend = \"setuptools.build_meta\"
968
972
  Box::new(MD021NoMultipleSpaceClosedAtx {}),
969
973
  Box::new(MD022BlanksAroundHeadings::default()),
970
974
  Box::new(MD023HeadingStartLeft {}),
971
- Box::new(MD024MultipleHeadings::default()),
975
+ Box::new(MD024NoDuplicateHeading::default()),
972
976
  Box::new(MD025SingleTitle::default()),
973
977
  Box::new(MD026NoTrailingPunctuation::default()),
974
978
  Box::new(MD027MultipleSpacesBlockquote {}),
@@ -980,8 +984,8 @@ build-backend = \"setuptools.build_meta\"
980
984
  Box::new(MD033NoInlineHtml::default()),
981
985
  Box::new(MD034NoBareUrls {}),
982
986
  Box::new(MD035HRStyle::default()),
983
- Box::new(MD036NoEmphasisOnlyFirst {}),
984
- Box::new(MD037SpacesAroundEmphasis),
987
+ Box::new(MD036NoEmphasisAsHeading {}),
988
+ Box::new(MD037NoSpaceInEmphasis),
985
989
  Box::new(MD038NoSpaceInCode::default()),
986
990
  Box::new(MD039NoSpaceInLinks),
987
991
  Box::new(MD040FencedCodeLanguage {}),
@@ -991,7 +995,7 @@ build-backend = \"setuptools.build_meta\"
991
995
  Box::new(MD044ProperNames::new(Vec::new(), true)),
992
996
  Box::new(MD045NoAltText::new()),
993
997
  Box::new(MD046CodeBlockStyle::new(CodeBlockStyle::Consistent)),
994
- Box::new(MD047FileEndNewline),
998
+ Box::new(MD047SingleTrailingNewline),
995
999
  Box::new(MD048CodeFenceStyle::new(CodeFenceStyle::Consistent)),
996
1000
  Box::new(MD049EmphasisStyle::default()),
997
1001
  Box::new(MD050StrongStyle::new(StrongStyle::Consistent)),
@@ -1009,190 +1013,23 @@ build-backend = \"setuptools.build_meta\"
1009
1013
  rule_map.insert(name, value);
1010
1014
  }
1011
1015
  }
1012
- let mut global = Value::try_from(rumdl_config::GlobalConfig::default())
1013
- .unwrap_or(Value::Table(Default::default()));
1014
- let sourced =
1015
- rumdl_config::SourcedConfig::load_sourced_config(cli.config.as_deref(), None);
1016
- // Overlay global
1017
- if let Some(global_table) = global.as_table_mut() {
1018
- let mut sourced_global_table = toml::map::Map::new();
1019
- sourced_global_table.insert(
1020
- "enable".to_string(),
1021
- Value::Array(
1022
- sourced
1023
- .global
1024
- .enable
1025
- .value
1026
- .iter()
1027
- .map(|s| Value::String(s.clone()))
1028
- .collect(),
1029
- ),
1030
- );
1031
- sourced_global_table.insert(
1032
- "disable".to_string(),
1033
- Value::Array(
1034
- sourced
1035
- .global
1036
- .disable
1037
- .value
1038
- .iter()
1039
- .map(|s| Value::String(s.clone()))
1040
- .collect(),
1041
- ),
1042
- );
1043
- sourced_global_table.insert(
1044
- "exclude".to_string(),
1045
- Value::Array(
1046
- sourced
1047
- .global
1048
- .exclude
1049
- .value
1050
- .iter()
1051
- .map(|s| Value::String(s.clone()))
1052
- .collect(),
1053
- ),
1054
- );
1055
- sourced_global_table.insert(
1056
- "include".to_string(),
1057
- Value::Array(
1058
- sourced
1059
- .global
1060
- .include
1061
- .value
1062
- .iter()
1063
- .map(|s| Value::String(s.clone()))
1064
- .collect(),
1065
- ),
1066
- );
1067
- sourced_global_table.insert(
1068
- "respect_gitignore".to_string(),
1069
- Value::Boolean(sourced.global.respect_gitignore.value),
1070
- );
1071
- for (k, v) in sourced_global_table {
1072
- global_table.insert(k, v);
1073
- }
1074
- }
1075
- for (rule_name, rule_defaults) in rule_map.iter_mut() {
1076
- if let Some(sourced_rule) = sourced.rules.get(rule_name) {
1077
- if let Some(defaults_table) = rule_defaults.as_table_mut() {
1078
- for (k, sv) in &sourced_rule.values {
1079
- defaults_table.insert(k.clone(), sv.value.clone());
1080
- }
1081
- }
1082
- }
1083
- }
1084
- // Annotated config output (after all variables are defined)
1085
- // --- Collect all lines for alignment ---
1086
- let mut all_lines = Vec::new();
1087
- // --- GLOBAL SECTION ---
1088
- let mut global_section_lines = Vec::new();
1089
- let global_keys = [
1090
- ("enable", &sourced.global.enable, "vec"),
1091
- ("disable", &sourced.global.disable, "vec"),
1092
- ("exclude", &sourced.global.exclude, "vec"),
1093
- ("include", &sourced.global.include, "vec"),
1094
- ];
1095
- for (key, sourced_val, kind) in &global_keys {
1096
- let value_str = match *kind {
1097
- "vec" => to_toml_string_vec_string(&sourced_val.value).yellow(),
1098
- _ => "<unknown>".yellow(),
1099
- };
1100
- let src_str_colored = match sourced_val.source {
1101
- rumdl_config::ConfigSource::Cli => "CLI".green(),
1102
- rumdl_config::ConfigSource::RumdlToml => ".rumdl.toml".blue(),
1103
- rumdl_config::ConfigSource::PyprojectToml => "pyproject.toml".magenta(),
1104
- rumdl_config::ConfigSource::Default => "default".yellow(),
1105
- };
1106
- let key_str = key.cyan();
1107
- global_section_lines.push((
1108
- format!(" {} = {}", key_str, value_str),
1109
- format!("[from {}]", src_str_colored),
1110
- ));
1111
- }
1112
- let sourced_val = &sourced.global.respect_gitignore;
1113
- let value_str = sourced_val.value.to_string().yellow();
1114
- let src_str_colored = match sourced_val.source {
1115
- rumdl_config::ConfigSource::Cli => "CLI".green(),
1116
- rumdl_config::ConfigSource::RumdlToml => ".rumdl.toml".blue(),
1117
- rumdl_config::ConfigSource::PyprojectToml => "pyproject.toml".magenta(),
1118
- rumdl_config::ConfigSource::Default => "default".yellow(),
1119
- };
1120
- let key_str = "respect_gitignore".cyan();
1121
- global_section_lines.push((
1122
- format!(" {} = {}", key_str, value_str),
1123
- format!("[from {}]", src_str_colored),
1124
- ));
1125
- // Add section marker for printing
1126
- all_lines.push(("[global]".bold().underline().to_string(), String::new()));
1127
- all_lines.extend(global_section_lines);
1128
- // --- RULE SECTIONS ---
1129
- let mut rule_names: Vec<_> = rule_map.keys().cloned().collect();
1016
+ // Print [global] section first
1017
+ let mut global_table = toml::map::Map::new();
1018
+ global_table.insert("global".to_string(), global);
1019
+ println!(
1020
+ "{}",
1021
+ toml::to_string_pretty(&Value::Table(global_table)).unwrap()
1022
+ );
1023
+ // Then print each rule section
1024
+ let mut rule_names: Vec<_> = rule_map.keys().collect();
1130
1025
  rule_names.sort();
1131
1026
  for rule_name in rule_names {
1132
- let rule_defaults = rule_map.get(&rule_name).unwrap();
1133
- let sourced_rule = sourced.rules.get(&rule_name);
1134
- if let Some(defaults_table) = rule_defaults.as_table() {
1135
- // Add section marker for printing
1136
- all_lines.push((
1137
- format!("\n{}", format!("[{}]", rule_name).bold().underline()),
1138
- String::new(),
1139
- ));
1140
- let mut keys: Vec<_> = defaults_table.keys().collect();
1141
- keys.sort();
1142
- for key in keys {
1143
- let default_val = &defaults_table[key];
1144
- let (value, src_str_colored) = if let Some(sourced_rule) = sourced_rule
1145
- {
1146
- if let Some(sv) = sourced_rule.values.get(key) {
1147
- (
1148
- sv.value.clone(),
1149
- match sv.source {
1150
- rumdl_config::ConfigSource::Cli => "CLI".green(),
1151
- rumdl_config::ConfigSource::RumdlToml => {
1152
- ".rumdl.toml".blue()
1153
- }
1154
- rumdl_config::ConfigSource::PyprojectToml => {
1155
- "pyproject.toml".magenta()
1156
- }
1157
- rumdl_config::ConfigSource::Default => {
1158
- "default".yellow()
1159
- }
1160
- },
1161
- )
1162
- } else {
1163
- (default_val.clone(), "default".yellow())
1164
- }
1165
- } else {
1166
- (default_val.clone(), "default".yellow())
1167
- };
1168
- let value_str = match value {
1169
- Value::Array(arr) => {
1170
- let vals: Vec<String> =
1171
- arr.into_iter().map(|v| v.to_string()).collect();
1172
- format!("[{}]", vals.join(", ")).yellow()
1173
- }
1174
- Value::String(s) => format!("\"{}\"", s).yellow(),
1175
- Value::Boolean(b) => b.to_string().yellow(),
1176
- Value::Integer(i) => i.to_string().yellow(),
1177
- Value::Float(f) => f.to_string().yellow(),
1178
- _ => value.to_string().yellow(),
1179
- };
1180
- let key_str = key.cyan();
1181
- all_lines.push((
1182
- format!(" {} = {}", key_str, value_str),
1183
- format!("[from {}]", src_str_colored),
1184
- ));
1185
- }
1186
- }
1187
- }
1188
- // --- Print all lines with global alignment ---
1189
- let max_left = all_lines.iter().map(|(l, _)| l.len()).max().unwrap_or(0);
1190
- for (left, right) in &all_lines {
1191
- if right.is_empty() {
1192
- println!("{}", left);
1193
- } else {
1194
- println!("{:<width$} {}", left, right, width = max_left);
1195
- }
1027
+ let mut rule_table = toml::map::Map::new();
1028
+ rule_table.insert(rule_name.clone(), rule_map[rule_name].clone());
1029
+ println!(
1030
+ "{}",
1031
+ toml::to_string_pretty(&Value::Table(rule_table)).unwrap()
1032
+ );
1196
1033
  }
1197
1034
  return;
1198
1035
  }
@@ -1212,7 +1049,7 @@ build-backend = \"setuptools.build_meta\"
1212
1049
  Box::new(MD008ULStyle::default()),
1213
1050
  Box::new(MD009TrailingSpaces::default()),
1214
1051
  Box::new(MD010NoHardTabs::default()),
1215
- Box::new(MD011ReversedLink {}),
1052
+ Box::new(MD011NoReversedLinks {}),
1216
1053
  Box::new(MD012NoMultipleBlanks::default()),
1217
1054
  Box::new(MD013LineLength::default()),
1218
1055
  Box::new(MD015NoMissingSpaceAfterListMarker::default()),
@@ -1224,7 +1061,7 @@ build-backend = \"setuptools.build_meta\"
1224
1061
  Box::new(MD021NoMultipleSpaceClosedAtx {}),
1225
1062
  Box::new(MD022BlanksAroundHeadings::default()),
1226
1063
  Box::new(MD023HeadingStartLeft {}),
1227
- Box::new(MD024MultipleHeadings::default()),
1064
+ Box::new(MD024NoDuplicateHeading::default()),
1228
1065
  Box::new(MD025SingleTitle::default()),
1229
1066
  Box::new(MD026NoTrailingPunctuation::default()),
1230
1067
  Box::new(MD027MultipleSpacesBlockquote {}),
@@ -1236,8 +1073,8 @@ build-backend = \"setuptools.build_meta\"
1236
1073
  Box::new(MD033NoInlineHtml::default()),
1237
1074
  Box::new(MD034NoBareUrls {}),
1238
1075
  Box::new(MD035HRStyle::default()),
1239
- Box::new(MD036NoEmphasisOnlyFirst {}),
1240
- Box::new(MD037SpacesAroundEmphasis),
1076
+ Box::new(MD036NoEmphasisAsHeading {}),
1077
+ Box::new(MD037NoSpaceInEmphasis),
1241
1078
  Box::new(MD038NoSpaceInCode::default()),
1242
1079
  Box::new(MD039NoSpaceInLinks),
1243
1080
  Box::new(MD040FencedCodeLanguage {}),
@@ -1247,7 +1084,7 @@ build-backend = \"setuptools.build_meta\"
1247
1084
  Box::new(MD044ProperNames::new(Vec::new(), true)),
1248
1085
  Box::new(MD045NoAltText::new()),
1249
1086
  Box::new(MD046CodeBlockStyle::new(CodeBlockStyle::Consistent)),
1250
- Box::new(MD047FileEndNewline),
1087
+ Box::new(MD047SingleTrailingNewline),
1251
1088
  Box::new(MD048CodeFenceStyle::new(CodeFenceStyle::Consistent)),
1252
1089
  Box::new(MD049EmphasisStyle::default()),
1253
1090
  Box::new(MD050StrongStyle::new(StrongStyle::Consistent)),
@@ -58,7 +58,7 @@ impl HeadingUtils {
58
58
 
59
59
  for line in content.lines() {
60
60
  line_count += 1;
61
- if line_count > line_number + 1 {
61
+ if line_count > line_number {
62
62
  break;
63
63
  }
64
64
 
@@ -1,5 +1,4 @@
1
-
2
- use crate::rule::{Fix, LintError, LintResult, LintWarning, Rule};
1
+ use crate::rule::{Fix, LintError, LintResult, LintWarning, Rule, Severity};
3
2
  use regex::Regex;
4
3
 
5
4
  #[derive(Debug, Default)]
@@ -16,10 +15,15 @@ impl MD011NoReversedLinks {
16
15
  for cap in re.captures_iter(line) {
17
16
  if cap.get(3).is_some() {
18
17
  // Found reversed link syntax (text)[url]
19
- let url = cap[3].trim_matches('(').trim_matches(')');
20
- let text = &cap[4];
18
+ let text = cap[3].trim_matches('(').trim_matches(')');
19
+ let url = &cap[4];
21
20
  let start = line_start + cap.get(0).unwrap().start();
22
- results.push((current_line, start - line_start + 1, text.to_string(), url.to_string()));
21
+ results.push((
22
+ current_line,
23
+ start - line_start + 1,
24
+ text.to_string(),
25
+ url.to_string(),
26
+ ));
23
27
  }
24
28
  }
25
29
  line_start += line.len() + 1; // +1 for newline
@@ -65,13 +69,13 @@ impl Rule for MD011NoReversedLinks {
65
69
  for cap in re.captures_iter(line) {
66
70
  let column = line_start + cap.get(0).unwrap().start() + 1;
67
71
  warnings.push(LintWarning {
68
- rule_name: Some(self.name()),
72
+ rule_name: Some(self.name()),
69
73
  message: "Reversed link syntax".to_string(),
70
74
  line: line_num + 1,
71
75
  column,
76
+ severity: Severity::Warning,
72
77
  fix: Some(Fix {
73
- line: line_num + 1,
74
- column,
78
+ range: (0..0), // TODO: Replace with correct byte range if available
75
79
  replacement: format!("[{}]({})", &cap[2], &cap[1]),
76
80
  }),
77
81
  });
@@ -101,10 +105,7 @@ impl Rule for MD011NoReversedLinks {
101
105
  let adjusted_pos = pos + offset;
102
106
  let original_len = format!("({})[{}]", url, text).len();
103
107
  let replacement = format!("[{}]({})", text, url);
104
- result.replace_range(
105
- adjusted_pos..adjusted_pos + original_len,
106
- &replacement
107
- );
108
+ result.replace_range(adjusted_pos..adjusted_pos + original_len, &replacement);
108
109
  // Update offset based on the difference in lengths
109
110
  if replacement.len() > original_len {
110
111
  offset += replacement.len() - original_len;
@@ -116,4 +117,8 @@ impl Rule for MD011NoReversedLinks {
116
117
 
117
118
  Ok(result)
118
119
  }
119
- }
120
+
121
+ fn as_any(&self) -> &dyn std::any::Any {
122
+ self
123
+ }
124
+ }