rumdl 0.0.136__tar.gz → 0.0.138__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 (427) hide show
  1. {rumdl-0.0.136 → rumdl-0.0.138}/CHANGELOG.md +18 -1
  2. {rumdl-0.0.136 → rumdl-0.0.138}/Cargo.lock +18 -17
  3. {rumdl-0.0.136 → rumdl-0.0.138}/Cargo.toml +1 -1
  4. {rumdl-0.0.136 → rumdl-0.0.138}/PKG-INFO +1 -1
  5. {rumdl-0.0.136 → rumdl-0.0.138}/src/lsp/server.rs +62 -11
  6. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md013_line_length.rs +26 -0
  7. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/github.rs +54 -9
  8. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/text_reflow.rs +97 -9
  9. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_regression_prevention_test.rs +4 -4
  10. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_test.rs +35 -0
  11. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md052_test.rs +25 -0
  12. {rumdl-0.0.136 → rumdl-0.0.138}/.config/nextest.toml +0 -0
  13. {rumdl-0.0.136 → rumdl-0.0.138}/.mise.toml +0 -0
  14. {rumdl-0.0.136 → rumdl-0.0.138}/.pre-commit-config.yaml +0 -0
  15. {rumdl-0.0.136 → rumdl-0.0.138}/.rumdl.toml +0 -0
  16. {rumdl-0.0.136 → rumdl-0.0.138}/.rustfmt.toml +0 -0
  17. {rumdl-0.0.136 → rumdl-0.0.138}/LICENSE +0 -0
  18. {rumdl-0.0.136 → rumdl-0.0.138}/MANIFEST.in +0 -0
  19. {rumdl-0.0.136 → rumdl-0.0.138}/Makefile +0 -0
  20. {rumdl-0.0.136 → rumdl-0.0.138}/README.md +0 -0
  21. {rumdl-0.0.136 → rumdl-0.0.138}/assets/logo.png +0 -0
  22. {rumdl-0.0.136 → rumdl-0.0.138}/benches/fix_performance.rs +0 -0
  23. {rumdl-0.0.136 → rumdl-0.0.138}/benches/range_performance.rs +0 -0
  24. {rumdl-0.0.136 → rumdl-0.0.138}/benches/range_utils_benchmark.rs +0 -0
  25. {rumdl-0.0.136 → rumdl-0.0.138}/benches/rule_performance.rs +0 -0
  26. {rumdl-0.0.136 → rumdl-0.0.138}/benches/simple_fix_bench.rs +0 -0
  27. {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/bench_lint_context.rs +0 -0
  28. {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/benchmark.rs +0 -0
  29. {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/benchmark_rule.rs +0 -0
  30. {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/file_parallel_benchmark.rs +0 -0
  31. {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/measure_code_span_performance.rs +0 -0
  32. {rumdl-0.0.136 → rumdl-0.0.138}/docs/RULES.md +0 -0
  33. {rumdl-0.0.136 → rumdl-0.0.138}/docs/global-settings.md +0 -0
  34. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md001.md +0 -0
  35. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md002.md +0 -0
  36. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md003.md +0 -0
  37. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md004.md +0 -0
  38. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md005.md +0 -0
  39. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md006.md +0 -0
  40. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md007.md +0 -0
  41. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md009.md +0 -0
  42. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md010.md +0 -0
  43. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md011.md +0 -0
  44. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md012.md +0 -0
  45. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md013.md +0 -0
  46. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md014.md +0 -0
  47. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md018.md +0 -0
  48. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md019.md +0 -0
  49. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md020.md +0 -0
  50. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md021.md +0 -0
  51. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md022.md +0 -0
  52. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md023.md +0 -0
  53. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md024.md +0 -0
  54. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md025.md +0 -0
  55. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md026.md +0 -0
  56. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md027.md +0 -0
  57. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md028.md +0 -0
  58. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md029.md +0 -0
  59. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md030.md +0 -0
  60. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md031.md +0 -0
  61. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md032.md +0 -0
  62. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md033.md +0 -0
  63. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md034.md +0 -0
  64. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md035.md +0 -0
  65. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md036.md +0 -0
  66. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md037.md +0 -0
  67. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md038.md +0 -0
  68. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md039.md +0 -0
  69. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md040.md +0 -0
  70. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md041.md +0 -0
  71. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md042.md +0 -0
  72. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md043.md +0 -0
  73. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md044.md +0 -0
  74. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md045.md +0 -0
  75. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md046.md +0 -0
  76. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md047.md +0 -0
  77. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md048.md +0 -0
  78. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md049.md +0 -0
  79. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md050.md +0 -0
  80. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md051.md +0 -0
  81. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md052.md +0 -0
  82. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md053.md +0 -0
  83. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md054.md +0 -0
  84. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md055.md +0 -0
  85. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md056.md +0 -0
  86. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md057.md +0 -0
  87. {rumdl-0.0.136 → rumdl-0.0.138}/docs/md058.md +0 -0
  88. {rumdl-0.0.136 → rumdl-0.0.138}/docs/vscode-extension.md +0 -0
  89. {rumdl-0.0.136 → rumdl-0.0.138}/parity_check.py +0 -0
  90. {rumdl-0.0.136 → rumdl-0.0.138}/pyproject.toml +0 -0
  91. {rumdl-0.0.136 → rumdl-0.0.138}/python/MANIFEST.in +0 -0
  92. {rumdl-0.0.136 → rumdl-0.0.138}/python/PYTHON-README.md +0 -0
  93. {rumdl-0.0.136 → rumdl-0.0.138}/python/rumdl/__init__.py +0 -0
  94. {rumdl-0.0.136 → rumdl-0.0.138}/python/rumdl/__main__.py +0 -0
  95. {rumdl-0.0.136 → rumdl-0.0.138}/python/rumdl/py.typed +0 -0
  96. {rumdl-0.0.136 → rumdl-0.0.138}/rumdl.toml.example +0 -0
  97. {rumdl-0.0.136 → rumdl-0.0.138}/rust-toolchain.toml +0 -0
  98. {rumdl-0.0.136 → rumdl-0.0.138}/scripts/extract-changelog.sh +0 -0
  99. {rumdl-0.0.136 → rumdl-0.0.138}/scripts/generate-downloads-table.sh +0 -0
  100. {rumdl-0.0.136 → rumdl-0.0.138}/scripts/pre-release.sh +0 -0
  101. {rumdl-0.0.136 → rumdl-0.0.138}/scripts/prepare-release.sh +0 -0
  102. {rumdl-0.0.136 → rumdl-0.0.138}/scripts/setup-pre-commit.sh +0 -0
  103. {rumdl-0.0.136 → rumdl-0.0.138}/scripts/update-pre-commit-docs.sh +0 -0
  104. {rumdl-0.0.136 → rumdl-0.0.138}/src/config.rs +0 -0
  105. {rumdl-0.0.136 → rumdl-0.0.138}/src/exit_codes.rs +0 -0
  106. {rumdl-0.0.136 → rumdl-0.0.138}/src/inline_config.rs +0 -0
  107. {rumdl-0.0.136 → rumdl-0.0.138}/src/lib.rs +0 -0
  108. {rumdl-0.0.136 → rumdl-0.0.138}/src/lint_context.rs +0 -0
  109. {rumdl-0.0.136 → rumdl-0.0.138}/src/lsp/mod.rs +0 -0
  110. {rumdl-0.0.136 → rumdl-0.0.138}/src/lsp/types.rs +0 -0
  111. {rumdl-0.0.136 → rumdl-0.0.138}/src/main.rs +0 -0
  112. {rumdl-0.0.136 → rumdl-0.0.138}/src/markdownlint_config.rs +0 -0
  113. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/azure.rs +0 -0
  114. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/concise.rs +0 -0
  115. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/github.rs +0 -0
  116. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/gitlab.rs +0 -0
  117. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/grouped.rs +0 -0
  118. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/json.rs +0 -0
  119. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/json_lines.rs +0 -0
  120. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/junit.rs +0 -0
  121. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/mod.rs +0 -0
  122. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/pylint.rs +0 -0
  123. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/sarif.rs +0 -0
  124. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/text.rs +0 -0
  125. {rumdl-0.0.136 → rumdl-0.0.138}/src/output/mod.rs +0 -0
  126. {rumdl-0.0.136 → rumdl-0.0.138}/src/parallel.rs +0 -0
  127. {rumdl-0.0.136 → rumdl-0.0.138}/src/performance.rs +0 -0
  128. {rumdl-0.0.136 → rumdl-0.0.138}/src/profiling.rs +0 -0
  129. {rumdl-0.0.136 → rumdl-0.0.138}/src/python.rs +0 -0
  130. {rumdl-0.0.136 → rumdl-0.0.138}/src/rule.rs +0 -0
  131. {rumdl-0.0.136 → rumdl-0.0.138}/src/rule_config.rs +0 -0
  132. {rumdl-0.0.136 → rumdl-0.0.138}/src/rule_config_serde.rs +0 -0
  133. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/blockquote_utils.rs +0 -0
  134. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/code_block_utils.rs +0 -0
  135. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/code_fence_utils.rs +0 -0
  136. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/emphasis_style.rs +0 -0
  137. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/front_matter_utils.rs +0 -0
  138. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/heading_utils.rs +0 -0
  139. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/list_utils.rs +0 -0
  140. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md001_heading_increment.rs +0 -0
  141. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  142. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md002_first_heading_h1.rs +0 -0
  143. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md003_heading_style/md003_config.rs +0 -0
  144. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md003_heading_style.rs +0 -0
  145. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  146. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md004_unordered_list_style.rs +0 -0
  147. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md005_list_indent.rs +0 -0
  148. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md006_start_bullets.rs +0 -0
  149. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md007_ul_indent/md007_config.rs +0 -0
  150. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md007_ul_indent.rs +0 -0
  151. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  152. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md009_trailing_spaces.rs +0 -0
  153. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  154. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md010_no_hard_tabs.rs +0 -0
  155. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md011_no_reversed_links.rs +0 -0
  156. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
  157. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md012_no_multiple_blanks.rs +0 -0
  158. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md013_line_length/md013_config.rs +0 -0
  159. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  160. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md014_commands_show_output.rs +0 -0
  161. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md018_no_missing_space_atx.rs +0 -0
  162. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  163. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  164. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  165. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  166. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md022_blanks_around_headings.rs +0 -0
  167. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md023_heading_start_left.rs +0 -0
  168. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  169. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md024_no_duplicate_heading.rs +0 -0
  170. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md025_single_title/md025_config.rs +0 -0
  171. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md025_single_title.rs +0 -0
  172. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  173. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  174. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  175. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  176. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
  177. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md029_ordered_list_prefix.rs +0 -0
  178. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  179. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md030_list_marker_space.rs +0 -0
  180. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md031_blanks_around_fences.rs +0 -0
  181. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md032_blanks_around_lists.rs +0 -0
  182. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  183. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md033_no_inline_html.rs +0 -0
  184. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md034_no_bare_urls.rs +0 -0
  185. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md035_hr_style/md035_config.rs +0 -0
  186. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md035_hr_style.rs +0 -0
  187. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  188. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  189. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  190. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md038_no_space_in_code.rs +0 -0
  191. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md039_no_space_in_links.rs +0 -0
  192. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md040_fenced_code_language.rs +0 -0
  193. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md041_first_line_heading.rs +0 -0
  194. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md042_no_empty_links.rs +0 -0
  195. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md043_required_headings.rs +0 -0
  196. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md044_proper_names/md044_config.rs +0 -0
  197. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md044_proper_names.rs +0 -0
  198. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  199. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md045_no_alt_text.rs +0 -0
  200. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  201. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md046_code_block_style.rs +0 -0
  202. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md047_single_trailing_newline.rs +0 -0
  203. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  204. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md048_code_fence_style.rs +0 -0
  205. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  206. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md049_emphasis_style.rs +0 -0
  207. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md050_strong_style/md050_config.rs +0 -0
  208. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md050_strong_style.rs +0 -0
  209. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md051_link_fragments.rs +0 -0
  210. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md052_reference_links_images.rs +0 -0
  211. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  212. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  213. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md054_link_image_style.rs +0 -0
  214. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  215. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md055_table_pipe_style.rs +0 -0
  216. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md056_table_column_count.rs +0 -0
  217. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  218. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md057_existing_relative_links.rs +0 -0
  219. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md058_blanks_around_tables.rs +0 -0
  220. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/mod.rs +0 -0
  221. {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/strong_style.rs +0 -0
  222. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/jekyll.rs +0 -0
  223. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/kramdown.rs +0 -0
  224. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
  225. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/mod.rs +0 -0
  226. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/ast_utils.rs +0 -0
  227. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/code_block_utils.rs +0 -0
  228. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/document_structure.rs +0 -0
  229. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/early_returns.rs +0 -0
  230. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/element_cache.rs +0 -0
  231. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/emphasis_utils.rs +0 -0
  232. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/fix_utils.rs +0 -0
  233. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/header_id_utils.rs +0 -0
  234. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/kramdown_utils.rs +0 -0
  235. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/line_ending.rs +0 -0
  236. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/markdown_elements.rs +0 -0
  237. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_admonitions.rs +0 -0
  238. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_common.rs +0 -0
  239. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_critic.rs +0 -0
  240. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_footnotes.rs +0 -0
  241. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_patterns.rs +0 -0
  242. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_snippets.rs +0 -0
  243. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_tabs.rs +0 -0
  244. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_test_utils.rs +0 -0
  245. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocstrings_refs.rs +0 -0
  246. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mod.rs +0 -0
  247. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/range_utils.rs +0 -0
  248. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/regex_cache.rs +0 -0
  249. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/skip_context.rs +0 -0
  250. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/string_interner.rs +0 -0
  251. {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/table_utils.rs +0 -0
  252. {rumdl-0.0.136 → rumdl-0.0.138}/src/vscode.rs +0 -0
  253. {rumdl-0.0.136 → rumdl-0.0.138}/tests/advanced_integration_tests.rs +0 -0
  254. {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/additional_tests.rs +0 -0
  255. {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/basic_tests.rs +0 -0
  256. {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/comprehensive_tests.rs +0 -0
  257. {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/extended_tests.rs +0 -0
  258. {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/mod.rs +0 -0
  259. {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/unicode_utils.rs +0 -0
  260. {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_duplication_test.rs +0 -0
  261. {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_explain_test.rs +0 -0
  262. {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_flag_precedence_test.rs +0 -0
  263. {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_integration_tests.rs +0 -0
  264. {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_lsp_fix_consistency.rs +0 -0
  265. {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_statistics_test.rs +0 -0
  266. {rumdl-0.0.136 → rumdl-0.0.138}/tests/common/cli_test_utils.rs +0 -0
  267. {rumdl-0.0.136 → rumdl-0.0.138}/tests/common/fixtures.rs +0 -0
  268. {rumdl-0.0.136 → rumdl-0.0.138}/tests/common/mod.rs +0 -0
  269. {rumdl-0.0.136 → rumdl-0.0.138}/tests/common/test_utils.rs +0 -0
  270. {rumdl-0.0.136 → rumdl-0.0.138}/tests/commonmark_compliance_tests.rs +0 -0
  271. {rumdl-0.0.136 → rumdl-0.0.138}/tests/comprehensive_integration_tests.rs +0 -0
  272. {rumdl-0.0.136 → rumdl-0.0.138}/tests/comprehensive_output_format_tests.rs +0 -0
  273. {rumdl-0.0.136 → rumdl-0.0.138}/tests/config_application_tests.rs +0 -0
  274. {rumdl-0.0.136 → rumdl-0.0.138}/tests/config_file_command_test.rs +0 -0
  275. {rumdl-0.0.136 → rumdl-0.0.138}/tests/config_tests.rs +0 -0
  276. {rumdl-0.0.136 → rumdl-0.0.138}/tests/config_upward_traversal_test.rs +0 -0
  277. {rumdl-0.0.136 → rumdl-0.0.138}/tests/configuration_inheritance_tests.rs +0 -0
  278. {rumdl-0.0.136 → rumdl-0.0.138}/tests/consistency_regression_tests.rs +0 -0
  279. {rumdl-0.0.136 → rumdl-0.0.138}/tests/cross_platform_compatibility_tests.rs +0 -0
  280. {rumdl-0.0.136 → rumdl-0.0.138}/tests/deeply_nested_lists_performance_test.rs +0 -0
  281. {rumdl-0.0.136 → rumdl-0.0.138}/tests/escaped_brackets_test.rs +0 -0
  282. {rumdl-0.0.136 → rumdl-0.0.138}/tests/final_confidence_assessment.rs +0 -0
  283. {rumdl-0.0.136 → rumdl-0.0.138}/tests/fixable_unfixable_config_test.rs +0 -0
  284. {rumdl-0.0.136 → rumdl-0.0.138}/tests/init_command_test.rs +0 -0
  285. {rumdl-0.0.136 → rumdl-0.0.138}/tests/init_tests.rs +0 -0
  286. {rumdl-0.0.136 → rumdl-0.0.138}/tests/inline_config_blocks_test.rs +0 -0
  287. {rumdl-0.0.136 → rumdl-0.0.138}/tests/inline_config_test.rs +0 -0
  288. {rumdl-0.0.136 → rumdl-0.0.138}/tests/integration_tests.rs +0 -0
  289. {rumdl-0.0.136 → rumdl-0.0.138}/tests/json_output_test.rs +0 -0
  290. {rumdl-0.0.136 → rumdl-0.0.138}/tests/kramdown_integration_test.rs +0 -0
  291. {rumdl-0.0.136 → rumdl-0.0.138}/tests/lib.rs +0 -0
  292. {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_editor_integration_tests.rs +0 -0
  293. {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_formatting_tests.rs +0 -0
  294. {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_initialization_options_test.rs +0 -0
  295. {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_integration_tests.rs +0 -0
  296. {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_memory_leak_tests.rs +0 -0
  297. {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_mkdocs_flavor_test.rs +0 -0
  298. {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_tests.rs +0 -0
  299. {rumdl-0.0.136 → rumdl-0.0.138}/tests/malformed_markdown_stress_tests.rs +0 -0
  300. {rumdl-0.0.136 → rumdl-0.0.138}/tests/markdownlint_cli_integration.rs +0 -0
  301. {rumdl-0.0.136 → rumdl-0.0.138}/tests/markdownlint_config_test.rs +0 -0
  302. {rumdl-0.0.136 → rumdl-0.0.138}/tests/markdownlintignore_test.rs +0 -0
  303. {rumdl-0.0.136 → rumdl-0.0.138}/tests/md013_reflow_integration_test.rs +0 -0
  304. {rumdl-0.0.136 → rumdl-0.0.138}/tests/md037_xxxx_regression_test.rs +0 -0
  305. {rumdl-0.0.136 → rumdl-0.0.138}/tests/md051_issue_39_regression_test.rs +0 -0
  306. {rumdl-0.0.136 → rumdl-0.0.138}/tests/nested_code_block_test.rs +0 -0
  307. {rumdl-0.0.136 → rumdl-0.0.138}/tests/output_format_integration_tests.rs +0 -0
  308. {rumdl-0.0.136 → rumdl-0.0.138}/tests/output_format_tests.rs +0 -0
  309. {rumdl-0.0.136 → rumdl-0.0.138}/tests/perf_check.rs +0 -0
  310. {rumdl-0.0.136 → rumdl-0.0.138}/tests/performance_validation_tests.rs +0 -0
  311. {rumdl-0.0.136 → rumdl-0.0.138}/tests/pyproject_config_tests.rs +0 -0
  312. {rumdl-0.0.136 → rumdl-0.0.138}/tests/python_bindings_test.rs +0 -0
  313. {rumdl-0.0.136 → rumdl-0.0.138}/tests/real_world_repository_tests.rs +0 -0
  314. {rumdl-0.0.136 → rumdl-0.0.138}/tests/regression_prevention_tests.rs +0 -0
  315. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/emphasis_edge_cases_test.rs +0 -0
  316. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/heading_edge_cases_test.rs +0 -0
  317. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/inline_content_edge_cases_test.rs +0 -0
  318. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/link_edge_cases_test.rs +0 -0
  319. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/list_rules_integration_test.rs +0 -0
  320. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md001_test.rs +0 -0
  321. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md001_unicode_test.rs +0 -0
  322. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md002_test.rs +0 -0
  323. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md003_test.rs +0 -0
  324. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md004_test.rs +0 -0
  325. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md005_dynamic_indent_test.rs +0 -0
  326. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md005_test.rs +0 -0
  327. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md005_unicode_test.rs +0 -0
  328. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md006_test.rs +0 -0
  329. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md006_unicode_test.rs +0 -0
  330. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md007_test.rs +0 -0
  331. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md009_test.rs +0 -0
  332. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md010_test.rs +0 -0
  333. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md011_test.rs +0 -0
  334. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md012_test.rs +0 -0
  335. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md013_test.rs +0 -0
  336. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md014_test.rs +0 -0
  337. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md018_test.rs +0 -0
  338. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md019_test.rs +0 -0
  339. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md020_test.rs +0 -0
  340. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md021_test.rs +0 -0
  341. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md022_test.rs +0 -0
  342. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md023_extended_test.rs +0 -0
  343. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md023_test.rs +0 -0
  344. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md024_test.rs +0 -0
  345. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md025_test.rs +0 -0
  346. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md026_kramdown_test.rs +0 -0
  347. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md026_test.rs +0 -0
  348. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md027_test.rs +0 -0
  349. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md028_md009_interaction_test.rs +0 -0
  350. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md028_test.rs +0 -0
  351. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_code_block_separation_test.rs +0 -0
  352. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_fix_test.rs +0 -0
  353. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_issue42_test.rs +0 -0
  354. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_markdownlint_parity_test.rs +0 -0
  355. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
  356. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_test.rs +0 -0
  357. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_unicode_test.rs +0 -0
  358. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md030_test.rs +0 -0
  359. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md031_kramdown_test.rs +0 -0
  360. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md031_test.rs +0 -0
  361. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md032_test.rs +0 -0
  362. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md033_extended_test.rs +0 -0
  363. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md033_kramdown_test.rs +0 -0
  364. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md033_test.rs +0 -0
  365. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md034_ipv6_test.rs +0 -0
  366. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md034_test.rs +0 -0
  367. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md035_test.rs +0 -0
  368. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md036_test.rs +0 -0
  369. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md037_kramdown_test.rs +0 -0
  370. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md037_test.rs +0 -0
  371. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md038_nested_backticks_test.rs +0 -0
  372. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md038_test.rs +0 -0
  373. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md039_test.rs +0 -0
  374. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md040_test.rs +0 -0
  375. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md041_test.rs +0 -0
  376. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md042_test.rs +0 -0
  377. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md043_test.rs +0 -0
  378. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md044_test.rs +0 -0
  379. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md045_test.rs +0 -0
  380. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md046_test.rs +0 -0
  381. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md047_test.rs +0 -0
  382. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md048_test.rs +0 -0
  383. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md049_test.rs +0 -0
  384. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md050_test.rs +0 -0
  385. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_comprehensive_test.rs +0 -0
  386. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
  387. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_edge_cases_test.rs +0 -0
  388. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_issue_39_regression_test.rs +0 -0
  389. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
  390. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_property_based_test.rs +0 -0
  391. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_unicode_security_test.rs +0 -0
  392. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md053_additional_test.rs +0 -0
  393. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md053_proptest.rs +0 -0
  394. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md053_test.rs +0 -0
  395. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md054_test.rs +0 -0
  396. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md054_unicode_test.rs +0 -0
  397. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md055_test.rs +0 -0
  398. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md056_test.rs +0 -0
  399. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md057_test.rs +0 -0
  400. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md058_kramdown_test.rs +0 -0
  401. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md058_test.rs +0 -0
  402. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mkdocs_admonitions_test.rs +0 -0
  403. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mkdocs_edge_cases_test.rs +0 -0
  404. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mkdocs_extensions_test.rs +0 -0
  405. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mkdocs_snippets_test.rs +0 -0
  406. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mod.rs +0 -0
  407. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/rule_interaction_test.rs +0 -0
  408. {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules_mod_test.rs +0 -0
  409. {rumdl-0.0.136 → rumdl-0.0.138}/tests/skip_context_tests.rs +0 -0
  410. {rumdl-0.0.136 → rumdl-0.0.138}/tests/test_underscore_edge_cases.rs +0 -0
  411. {rumdl-0.0.136 → rumdl-0.0.138}/tests/thread_safety_tests.rs +0 -0
  412. {rumdl-0.0.136 → rumdl-0.0.138}/tests/unfixable_rules_test.rs +0 -0
  413. {rumdl-0.0.136 → rumdl-0.0.138}/tests/unicode_edge_case_tests.rs +0 -0
  414. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/blockquote_utils_test.rs +0 -0
  415. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/code_block_utils_extended_test.rs +0 -0
  416. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/code_block_utils_test.rs +0 -0
  417. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/core_utils_test.rs +0 -0
  418. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/front_matter_utils_test.rs +0 -0
  419. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/line_index_test.rs +0 -0
  420. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/mod.rs +0 -0
  421. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils_markdown_edge_cases.rs +0 -0
  422. {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils_tests.rs +0 -0
  423. {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_extension_fixes.rs +0 -0
  424. {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_test.rs +0 -0
  425. {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_tests.rs +0 -0
  426. {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_windows_comprehensive_test.rs +0 -0
  427. {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_windows_test.rs +0 -0
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.0.138] - 2025-09-05
11
+
12
+ ### Fixed
13
+ - **LSP**: Fixed formatting to return empty array instead of null when no edits available (fixes #79)
14
+ - Helix editor now properly receives LSP formatting responses
15
+ - Added textDocument/rangeFormatting support for better editor compatibility
16
+ - Fixed critical position calculation bug that could cause incorrect text edit ranges
17
+
18
+ ## [0.0.137] - 2025-09-04
19
+
20
+ ### Fixed
21
+ - **MD051**: Fixed GitHub anchor generation for headers with arrow patterns (fixes #82)
22
+ - Headers like `WAL->L0 Compaction` now correctly generate `#wal-l0-compaction` anchors
23
+ - Arrow patterns (`->`, `-->`) now convert to the correct number of hyphens based on surrounding spaces
24
+
10
25
  ## [0.0.136] - 2025-09-03
11
26
 
12
27
  ## [0.0.135] - 2025-09-03
@@ -562,7 +577,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
562
577
 
563
578
  - Initial implementation of remaining rules for markdownlint parity
564
579
 
565
- [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.136...HEAD
580
+ [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.138...HEAD
581
+ [0.0.138]: https://github.com/rvben/rumdl/compare/v0.0.137...v0.0.138
582
+ [0.0.137]: https://github.com/rvben/rumdl/compare/v0.0.136...v0.0.137
566
583
  [0.0.136]: https://github.com/rvben/rumdl/compare/v0.0.135...v0.0.136
567
584
  [0.0.135]: https://github.com/rvben/rumdl/compare/v0.0.134...v0.0.135
568
585
  [0.0.134]: https://github.com/rvben/rumdl/compare/v0.0.133...v0.0.134
@@ -1012,9 +1012,9 @@ dependencies = [
1012
1012
 
1013
1013
  [[package]]
1014
1014
  name = "js-sys"
1015
- version = "0.3.77"
1015
+ version = "0.3.78"
1016
1016
  source = "registry+https://github.com/rust-lang/crates.io-index"
1017
- checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
1017
+ checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738"
1018
1018
  dependencies = [
1019
1019
  "once_cell",
1020
1020
  "wasm-bindgen",
@@ -1087,9 +1087,9 @@ dependencies = [
1087
1087
 
1088
1088
  [[package]]
1089
1089
  name = "log"
1090
- version = "0.4.27"
1090
+ version = "0.4.28"
1091
1091
  source = "registry+https://github.com/rust-lang/crates.io-index"
1092
- checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
1092
+ checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
1093
1093
 
1094
1094
  [[package]]
1095
1095
  name = "lsp-types"
@@ -1632,7 +1632,7 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
1632
1632
 
1633
1633
  [[package]]
1634
1634
  name = "rumdl"
1635
- version = "0.0.136"
1635
+ version = "0.0.138"
1636
1636
  dependencies = [
1637
1637
  "anyhow",
1638
1638
  "assert_cmd",
@@ -2279,21 +2279,22 @@ dependencies = [
2279
2279
 
2280
2280
  [[package]]
2281
2281
  name = "wasm-bindgen"
2282
- version = "0.2.100"
2282
+ version = "0.2.101"
2283
2283
  source = "registry+https://github.com/rust-lang/crates.io-index"
2284
- checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
2284
+ checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b"
2285
2285
  dependencies = [
2286
2286
  "cfg-if",
2287
2287
  "once_cell",
2288
2288
  "rustversion",
2289
2289
  "wasm-bindgen-macro",
2290
+ "wasm-bindgen-shared",
2290
2291
  ]
2291
2292
 
2292
2293
  [[package]]
2293
2294
  name = "wasm-bindgen-backend"
2294
- version = "0.2.100"
2295
+ version = "0.2.101"
2295
2296
  source = "registry+https://github.com/rust-lang/crates.io-index"
2296
- checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
2297
+ checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb"
2297
2298
  dependencies = [
2298
2299
  "bumpalo",
2299
2300
  "log",
@@ -2305,9 +2306,9 @@ dependencies = [
2305
2306
 
2306
2307
  [[package]]
2307
2308
  name = "wasm-bindgen-macro"
2308
- version = "0.2.100"
2309
+ version = "0.2.101"
2309
2310
  source = "registry+https://github.com/rust-lang/crates.io-index"
2310
- checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
2311
+ checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d"
2311
2312
  dependencies = [
2312
2313
  "quote",
2313
2314
  "wasm-bindgen-macro-support",
@@ -2315,9 +2316,9 @@ dependencies = [
2315
2316
 
2316
2317
  [[package]]
2317
2318
  name = "wasm-bindgen-macro-support"
2318
- version = "0.2.100"
2319
+ version = "0.2.101"
2319
2320
  source = "registry+https://github.com/rust-lang/crates.io-index"
2320
- checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
2321
+ checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa"
2321
2322
  dependencies = [
2322
2323
  "proc-macro2",
2323
2324
  "quote",
@@ -2328,18 +2329,18 @@ dependencies = [
2328
2329
 
2329
2330
  [[package]]
2330
2331
  name = "wasm-bindgen-shared"
2331
- version = "0.2.100"
2332
+ version = "0.2.101"
2332
2333
  source = "registry+https://github.com/rust-lang/crates.io-index"
2333
- checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
2334
+ checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1"
2334
2335
  dependencies = [
2335
2336
  "unicode-ident",
2336
2337
  ]
2337
2338
 
2338
2339
  [[package]]
2339
2340
  name = "web-sys"
2340
- version = "0.3.77"
2341
+ version = "0.3.78"
2341
2342
  source = "registry+https://github.com/rust-lang/crates.io-index"
2342
- checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
2343
+ checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12"
2343
2344
  dependencies = [
2344
2345
  "js-sys",
2345
2346
  "wasm-bindgen",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.136"
3
+ version = "0.0.138"
4
4
  edition = "2024"
5
5
  rust-version = "1.89.0"
6
6
  description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.136
3
+ Version: 0.0.138
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -160,9 +160,18 @@ impl RumdlLanguageServer {
160
160
 
161
161
  /// Get the end position of a document
162
162
  fn get_end_position(&self, text: &str) -> Position {
163
- let lines: Vec<&str> = text.lines().collect();
164
- let line = lines.len().saturating_sub(1) as u32;
165
- let character = lines.last().map_or(0, |l| l.len() as u32);
163
+ let mut line = 0u32;
164
+ let mut character = 0u32;
165
+
166
+ for ch in text.chars() {
167
+ if ch == '\n' {
168
+ line += 1;
169
+ character = 0;
170
+ } else {
171
+ character += 1;
172
+ }
173
+ }
174
+
166
175
  Position { line, character }
167
176
  }
168
177
 
@@ -331,6 +340,7 @@ impl LanguageServer for RumdlLanguageServer {
331
340
  text_document_sync: Some(TextDocumentSyncCapability::Kind(TextDocumentSyncKind::FULL)),
332
341
  code_action_provider: Some(CodeActionProviderCapability::Simple(true)),
333
342
  document_formatting_provider: Some(OneOf::Left(true)),
343
+ document_range_formatting_provider: Some(OneOf::Left(true)),
334
344
  diagnostic_provider: Some(DiagnosticServerCapabilities::Options(DiagnosticOptions {
335
345
  identifier: Some("rumdl".to_string()),
336
346
  inter_file_dependencies: false,
@@ -489,22 +499,57 @@ impl LanguageServer for RumdlLanguageServer {
489
499
  }
490
500
  }
491
501
 
502
+ async fn range_formatting(&self, params: DocumentRangeFormattingParams) -> JsonRpcResult<Option<Vec<TextEdit>>> {
503
+ // For markdown linting, we format the entire document because:
504
+ // 1. Many markdown rules have document-wide implications (e.g., heading hierarchy, list consistency)
505
+ // 2. Fixes often need surrounding context to be applied correctly
506
+ // 3. This approach is common among linters (ESLint, rustfmt, etc. do similar)
507
+ log::debug!(
508
+ "Range formatting requested for {:?}, formatting entire document due to rule interdependencies",
509
+ params.range
510
+ );
511
+
512
+ let formatting_params = DocumentFormattingParams {
513
+ text_document: params.text_document,
514
+ options: params.options,
515
+ work_done_progress_params: params.work_done_progress_params,
516
+ };
517
+
518
+ self.formatting(formatting_params).await
519
+ }
520
+
492
521
  async fn formatting(&self, params: DocumentFormattingParams) -> JsonRpcResult<Option<Vec<TextEdit>>> {
493
522
  let uri = params.text_document.uri;
494
523
 
524
+ log::debug!("Formatting request for: {uri}");
525
+
495
526
  if let Some(text) = self.documents.read().await.get(&uri) {
527
+ // Get config with LSP overrides
528
+ let config_guard = self.config.read().await;
529
+ let lsp_config = config_guard.clone();
530
+ drop(config_guard);
531
+
496
532
  // Get all rules from config
497
533
  let rumdl_config = self.rumdl_config.read().await;
498
534
  let all_rules = rules::all_rules(&rumdl_config);
499
535
  let flavor = rumdl_config.markdown_flavor();
500
536
 
501
537
  // Use the standard filter_rules function which respects config's disabled rules
502
- let filtered_rules = rules::filter_rules(&all_rules, &rumdl_config.global);
538
+ let mut filtered_rules = rules::filter_rules(&all_rules, &rumdl_config.global);
503
539
  drop(rumdl_config);
504
540
 
541
+ // Apply LSP config overrides
542
+ filtered_rules = self.apply_lsp_config_overrides(filtered_rules, &lsp_config);
543
+
505
544
  // Lint the document to get all warnings
506
545
  match crate::lint(text, &filtered_rules, false, flavor) {
507
546
  Ok(warnings) => {
547
+ log::debug!(
548
+ "Found {} warnings, {} with fixes",
549
+ warnings.len(),
550
+ warnings.iter().filter(|w| w.fix.is_some()).count()
551
+ );
552
+
508
553
  // Check if there are any fixable warnings
509
554
  let has_fixes = warnings.iter().any(|w| w.fix.is_some());
510
555
 
@@ -514,6 +559,7 @@ impl LanguageServer for RumdlLanguageServer {
514
559
  Ok(fixed_content) => {
515
560
  // Only return edits if the content actually changed
516
561
  if fixed_content != *text {
562
+ log::debug!("Returning formatting edits");
517
563
  // Create a single TextEdit that replaces the entire document
518
564
  // Calculate proper end position by iterating through all characters
519
565
  let mut line = 0u32;
@@ -543,18 +589,23 @@ impl LanguageServer for RumdlLanguageServer {
543
589
  log::error!("Failed to apply fixes: {e}");
544
590
  }
545
591
  }
592
+ } else {
593
+ log::debug!("No fixes available for formatting");
546
594
  }
547
595
 
548
- // No fixes available or applied
549
- Ok(None)
596
+ // No fixes available or applied - return empty array
597
+ Ok(Some(Vec::new()))
550
598
  }
551
599
  Err(e) => {
552
600
  log::error!("Failed to format document: {e}");
553
- Ok(None)
601
+ // Return empty array on error
602
+ Ok(Some(Vec::new()))
554
603
  }
555
604
  }
556
605
  } else {
557
- Ok(None)
606
+ log::warn!("Document not found in cache: {uri}");
607
+ // Return empty array when document not found
608
+ Ok(Some(Vec::new()))
558
609
  }
559
610
  }
560
611
 
@@ -826,10 +877,10 @@ mod tests {
826
877
  assert_eq!(pos.line, 0);
827
878
  assert_eq!(pos.character, 0);
828
879
 
829
- // Ends with newline - lines() doesn't include the empty line after \n
880
+ // Ends with newline - position should be at start of next line
830
881
  let pos = server.get_end_position("Hello\n");
831
- assert_eq!(pos.line, 0);
832
- assert_eq!(pos.character, 5);
882
+ assert_eq!(pos.line, 1);
883
+ assert_eq!(pos.character, 0);
833
884
  }
834
885
 
835
886
  #[tokio::test]
@@ -1027,6 +1027,32 @@ And a bullet list:
1027
1027
  }
1028
1028
  }
1029
1029
 
1030
+ #[test]
1031
+ fn test_issue_83_numbered_list_with_backticks() {
1032
+ // Test for issue #83: enable_reflow was incorrectly handling numbered lists
1033
+ let config = MD013Config {
1034
+ line_length: 100,
1035
+ reflow: true,
1036
+ ..Default::default()
1037
+ };
1038
+ let rule = MD013LineLength::from_config_struct(config);
1039
+
1040
+ // The exact case from issue #83
1041
+ let content = "1. List `manifest` to find the manifest with the largest ID. Say it's `00000000000000000002.manifest` in this example.";
1042
+ let ctx = LintContext::new(content, crate::config::MarkdownFlavor::Standard);
1043
+
1044
+ let fixed = rule.fix(&ctx).unwrap();
1045
+
1046
+ // The expected output: properly wrapped at 100 chars with correct list formatting
1047
+ // After the fix, it correctly accounts for "1. " (3 chars) leaving 97 for content
1048
+ let expected = "1. List `manifest` to find the manifest with the largest ID. Say it's\n `00000000000000000002.manifest` in this example.";
1049
+
1050
+ assert_eq!(
1051
+ fixed, expected,
1052
+ "List should be properly reflowed with correct marker and indentation.\nExpected:\n{expected}\nGot:\n{fixed}"
1053
+ );
1054
+ }
1055
+
1030
1056
  #[test]
1031
1057
  fn test_text_reflow_disabled_by_default() {
1032
1058
  let rule = MD013LineLength::new(30, false, false, false, false);
@@ -157,15 +157,33 @@ fn heading_to_fragment_internal(heading: &str) -> String {
157
157
 
158
158
  // Step 6: Multi-character arrow patterns (order matters!)
159
159
  // GitHub.com converts these patterns to specific hyphen sequences
160
- // Handle patterns with spaces to avoid double-processing spaces
161
- text = text.replace(" --> ", "----"); // space + arrow + space = 4 hyphens total
162
- text = text.replace("-->", "----"); // 4 hyphens when no surrounding spaces
163
- text = text.replace(" <-> ", "---"); // space + arrow + space = 3 hyphens total
164
- text = text.replace("<->", "---"); // 3 hyphens when no surrounding spaces
165
- text = text.replace(" ==> ", "--"); // space + arrow + space = 2 hyphens total
166
- text = text.replace("==>", "--"); // 2 hyphens when no surrounding spaces
167
- text = text.replace(" -> ", "---"); // space + arrow + space = 3 hyphens total
168
- text = text.replace("->", "---"); // 3 hyphens when no surrounding spaces
160
+ // Verified against GitHub.com actual behavior (issue #82)
161
+ // Pattern: arrow itself becomes N hyphens, each adjacent space adds 1 more
162
+ // Must handle patterns with most spaces first to avoid partial replacements
163
+
164
+ // --> patterns (arrow = 2 hyphens base)
165
+ text = text.replace(" --> ", "----"); // 2 + 1 + 1 = 4 hyphens
166
+ text = text.replace(" -->", "---"); // 2 + 1 = 3 hyphens
167
+ text = text.replace("--> ", "---"); // 2 + 1 = 3 hyphens
168
+ text = text.replace("-->", "--"); // 2 hyphens
169
+
170
+ // <-> patterns (assuming similar pattern, needs verification)
171
+ text = text.replace(" <-> ", "---"); // estimated: 1 + 1 + 1 = 3 hyphens
172
+ text = text.replace(" <->", "--"); // estimated: 1 + 1 = 2 hyphens
173
+ text = text.replace("<-> ", "--"); // estimated: 1 + 1 = 2 hyphens
174
+ text = text.replace("<->", "-"); // estimated: 1 hyphen
175
+
176
+ // ==> patterns (assuming similar pattern, needs verification)
177
+ text = text.replace(" ==> ", "--"); // estimated pattern
178
+ text = text.replace(" ==>", "-"); // estimated pattern
179
+ text = text.replace("==> ", "-"); // estimated pattern
180
+ text = text.replace("==>", ""); // estimated: might be removed entirely
181
+
182
+ // -> patterns (arrow = 1 hyphen base)
183
+ text = text.replace(" -> ", "---"); // 1 + 1 + 1 = 3 hyphens
184
+ text = text.replace(" ->", "--"); // 1 + 1 = 2 hyphens
185
+ text = text.replace("-> ", "--"); // 1 + 1 = 2 hyphens
186
+ text = text.replace("->", "-"); // 1 hyphen
169
187
 
170
188
  // Step 7: Remove problematic characters before symbol replacement
171
189
  // First remove em-dashes and en-dashes entirely
@@ -899,6 +917,33 @@ mod tests {
899
917
  assert_eq!(result, "cbrown----sbrown---unsafe-paths");
900
918
  }
901
919
 
920
+ #[test]
921
+ fn test_github_arrow_patterns_issue_82() {
922
+ // Test cases for issue #82 - verified against GitHub.com actual behavior
923
+ // Pattern: arrow itself becomes N hyphens, each adjacent space adds 1 more
924
+
925
+ // Single arrow (->) patterns
926
+ assert_eq!(heading_to_fragment("WAL->L0 Compaction"), "wal-l0-compaction");
927
+ assert_eq!(heading_to_fragment("foo->bar->baz"), "foo-bar-baz");
928
+ assert_eq!(heading_to_fragment("a->b"), "a-b");
929
+ assert_eq!(heading_to_fragment("a ->b"), "a--b");
930
+ assert_eq!(heading_to_fragment("a-> b"), "a--b");
931
+ assert_eq!(heading_to_fragment("a -> b"), "a---b");
932
+
933
+ // Double arrow (-->) patterns
934
+ assert_eq!(heading_to_fragment("a-->b"), "a--b");
935
+ assert_eq!(heading_to_fragment("a -->b"), "a---b");
936
+ assert_eq!(heading_to_fragment("a--> b"), "a---b");
937
+ assert_eq!(heading_to_fragment("a --> b"), "a----b");
938
+
939
+ // Mixed patterns
940
+ assert_eq!(heading_to_fragment("cbrown -> sbrown"), "cbrown---sbrown");
941
+ assert_eq!(
942
+ heading_to_fragment("cbrown --> sbrown: --unsafe-paths"),
943
+ "cbrown----sbrown---unsafe-paths"
944
+ );
945
+ }
946
+
902
947
  #[test]
903
948
  fn test_security_performance_edge_cases() {
904
949
  // Test performance with edge cases that could cause issues
@@ -629,20 +629,52 @@ pub fn reflow_markdown(content: &str, options: &ReflowOptions) -> String {
629
629
  let indent = line.len() - line.trim_start().len();
630
630
  let indent_str = " ".repeat(indent);
631
631
 
632
- // Find where the content starts after the marker
633
- let content_start = line
634
- .find(|c: char| !(c.is_whitespace() || c == '-' || c == '*' || c == '+' || c == '.' || c.is_numeric()))
635
- .unwrap_or(line.len());
632
+ // For numbered lists, find the period and the space after it
633
+ // For bullet lists, find the marker and the space after it
634
+ let mut marker_end = indent;
635
+ let mut content_start = indent;
636
+
637
+ if trimmed.chars().next().is_some_and(|c| c.is_numeric()) {
638
+ // Numbered list: find the period
639
+ if let Some(period_pos) = line[indent..].find('.') {
640
+ marker_end = indent + period_pos + 1; // Include the period
641
+ content_start = marker_end;
642
+ // Skip any spaces after the period to find content start
643
+ while content_start < line.len() && line.chars().nth(content_start) == Some(' ') {
644
+ content_start += 1;
645
+ }
646
+ }
647
+ } else {
648
+ // Bullet list: marker is single character
649
+ marker_end = indent + 1; // Just the marker character
650
+ content_start = marker_end;
651
+ // Skip any spaces after the marker
652
+ while content_start < line.len() && line.chars().nth(content_start) == Some(' ') {
653
+ content_start += 1;
654
+ }
655
+ }
636
656
 
637
- let marker = &line[indent..content_start];
638
- let content = &line[content_start..].trim_start();
657
+ let marker = &line[indent..marker_end];
658
+ let content = &line[content_start..];
639
659
 
640
660
  // Calculate the proper indentation for continuation lines
641
661
  // We need to align with the text after the marker
642
- let trimmed_marker = marker.trim_end();
643
- let continuation_spaces = indent + trimmed_marker.len() + 1; // +1 for the space after marker
662
+ let trimmed_marker = marker;
663
+ let continuation_spaces = content_start; // Use the actual content start position
664
+
665
+ // CRITICAL: Adjust line length to account for list marker and space
666
+ // For the first line, we need to account for: indent + marker + space
667
+ // The format is: "{indent_str}{trimmed_marker} {content}"
668
+ // So available width = line_length - indent - marker_length - 1 (for space)
669
+ let prefix_length = indent + trimmed_marker.len() + 1; // +1 for space after marker
670
+
671
+ // Create adjusted options with reduced line length
672
+ let adjusted_options = ReflowOptions {
673
+ line_length: options.line_length.saturating_sub(prefix_length),
674
+ ..options.clone()
675
+ };
644
676
 
645
- let reflowed = reflow_line(content, options);
677
+ let reflowed = reflow_line(content, &adjusted_options);
646
678
  for (j, reflowed_line) in reflowed.iter().enumerate() {
647
679
  if j == 0 {
648
680
  result.push(format!("{indent_str}{trimmed_marker} {reflowed_line}"));
@@ -1063,4 +1095,60 @@ mod tests {
1063
1095
  }
1064
1096
  }
1065
1097
  }
1098
+
1099
+ #[test]
1100
+ fn test_reflow_markdown_numbered_lists() {
1101
+ // Test for issue #83: numbered lists with proper formatting
1102
+ let options = ReflowOptions {
1103
+ line_length: 50,
1104
+ ..Default::default()
1105
+ };
1106
+
1107
+ let content = r#"1. List `manifest` to find the manifest with the largest ID. Say it's `00000000000000000002.manifest` in this example.
1108
+ 2. Short item
1109
+ 3. Another long item that definitely exceeds the fifty character limit and needs wrapping"#;
1110
+
1111
+ let result = reflow_markdown(content, &options);
1112
+
1113
+ // Define exact expected output
1114
+ let expected = r#"1. List `manifest` to find the manifest with the
1115
+ largest ID. Say it's
1116
+ `00000000000000000002.manifest` in this
1117
+ example.
1118
+ 2. Short item
1119
+ 3. Another long item that definitely exceeds the
1120
+ fifty character limit and needs wrapping"#;
1121
+
1122
+ assert_eq!(
1123
+ result, expected,
1124
+ "Numbered lists should be reflowed with proper markers and indentation.\nExpected:\n{expected}\nGot:\n{result}"
1125
+ );
1126
+ }
1127
+
1128
+ #[test]
1129
+ fn test_reflow_markdown_bullet_lists() {
1130
+ let options = ReflowOptions {
1131
+ line_length: 40,
1132
+ ..Default::default()
1133
+ };
1134
+
1135
+ let content = r#"- First bullet point with a very long line that needs wrapping
1136
+ * Second bullet using asterisk
1137
+ + Third bullet using plus sign
1138
+ - Short one"#;
1139
+
1140
+ let result = reflow_markdown(content, &options);
1141
+
1142
+ // Define exact expected output - each bullet type preserved with proper indentation
1143
+ let expected = r#"- First bullet point with a very long
1144
+ line that needs wrapping
1145
+ * Second bullet using asterisk
1146
+ + Third bullet using plus sign
1147
+ - Short one"#;
1148
+
1149
+ assert_eq!(
1150
+ result, expected,
1151
+ "Bullet lists should preserve markers and indent continuations with 2 spaces.\nExpected:\n{expected}\nGot:\n{result}"
1152
+ );
1153
+ }
1066
1154
  }
@@ -94,10 +94,10 @@ fn regression_test_historical_patterns() {
94
94
  ("A&B", "ab"),
95
95
  ("A & B", "a--b"),
96
96
  ("A & B & C", "a--b--c"),
97
- // Arrow issues - updated to match GitHub behavior (arrows -> multiple hyphens)
98
- ("A->B", "a---b"),
99
- ("A -> B", "a---b"),
100
- ("A --> B", "a----b"),
97
+ // Arrow issues - updated for issue #82 fix (correct GitHub behavior)
98
+ ("A->B", "a-b"), // Fixed: -> now correctly becomes single hyphen
99
+ ("A -> B", "a---b"), // Spaces preserved: space+arrow+space = 3 hyphens
100
+ ("A --> B", "a----b"), // Spaces preserved: space+double-arrow+space = 4 hyphens
101
101
  // Colon issues
102
102
  ("Title:Subtitle", "titlesubtitle"),
103
103
  ("Title: Subtitle", "title-subtitle"),
@@ -1795,3 +1795,38 @@ Table of contents:
1795
1795
  // All links should be valid - no errors
1796
1796
  assert_eq!(result.len(), 0, "All HTML anchor links should be valid");
1797
1797
  }
1798
+
1799
+ #[test]
1800
+ fn test_issue_82_arrow_patterns() {
1801
+ // Test for issue #82 - headers with arrows should generate correct anchors
1802
+ let content = r#"# Document
1803
+
1804
+ ## Table of Contents
1805
+ - [WAL->L0 Compaction](#wal-l0-compaction)
1806
+ - [foo->bar->baz](#foo-bar-baz)
1807
+ - [Header->with->Arrows](#header-with-arrows)
1808
+
1809
+ ## WAL->L0 Compaction
1810
+
1811
+ Content about WAL to L0 compaction.
1812
+
1813
+ ## foo->bar->baz
1814
+
1815
+ Content about foo bar baz.
1816
+
1817
+ ## Header->with->Arrows
1818
+
1819
+ Content with arrows.
1820
+ "#;
1821
+
1822
+ let rule = MD051LinkFragments::new();
1823
+ let ctx = LintContext::new(content, rumdl_lib::config::MarkdownFlavor::Standard);
1824
+ let result = rule.check(&ctx).unwrap();
1825
+
1826
+ // All links should be valid with the fixed arrow pattern handling
1827
+ assert_eq!(
1828
+ result.len(),
1829
+ 0,
1830
+ "Arrow patterns in headers should generate correct anchors (issue #82)"
1831
+ );
1832
+ }
@@ -632,3 +632,28 @@ fn test_undefined_reference_with_nested_brackets() {
632
632
  assert_eq!(result.len(), 1);
633
633
  assert!(result[0].message.contains("`Dict[str, Any]`"));
634
634
  }
635
+
636
+ #[test]
637
+ fn test_issue_81_toml_code_block_not_parsed() {
638
+ // Test for issue #81 - TOML code blocks should not be parsed for references
639
+ let rule = MD052ReferenceLinkImages::new();
640
+ let content = r#"## Adding new examples
641
+
642
+ 1. Create a new Rust file under `src`.
643
+ 2. Add the binary definition to the `Cargo.toml` file, the list is ordered alphabetically by example name:
644
+
645
+ ```toml
646
+ [[bin]]
647
+ name = "tracing-subscriber"
648
+ path = "src/tracing_subscriber.rs"
649
+ test = false
650
+ ```
651
+
652
+ 3. Add any required dependencies to the `Cargo.toml` file."#;
653
+ let ctx = LintContext::new(content, rumdl_lib::config::MarkdownFlavor::Standard);
654
+ let result = rule.check(&ctx).unwrap();
655
+ assert!(
656
+ result.is_empty(),
657
+ "Should not flag [[bin]] in TOML code block as undefined reference (issue #81)"
658
+ );
659
+ }
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