rumdl 0.0.62__tar.gz → 0.0.64__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 (252) hide show
  1. {rumdl-0.0.62 → rumdl-0.0.64}/Cargo.lock +1 -1
  2. {rumdl-0.0.62 → rumdl-0.0.64}/Cargo.toml +2 -2
  3. {rumdl-0.0.62 → rumdl-0.0.64}/PKG-INFO +13 -5
  4. {rumdl-0.0.62 → rumdl-0.0.64}/README.md +12 -4
  5. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md036.md +37 -5
  6. {rumdl-0.0.62 → rumdl-0.0.64}/src/main.rs +13 -7
  7. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/code_block_utils.rs +1 -4
  8. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/heading_utils.rs +2 -1
  9. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md004_unordered_list_style.rs +120 -174
  10. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md011_no_reversed_links.rs +10 -5
  11. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md032_blanks_around_lists.rs +336 -6
  12. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md036_no_emphasis_only_first.rs +35 -7
  13. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md045_no_alt_text.rs +7 -6
  14. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md051_link_fragments.rs +57 -9
  15. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/regex_cache.rs +1 -1
  16. {rumdl-0.0.62 → rumdl-0.0.64}/tests/integration_tests.rs +1 -1
  17. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md004_test.rs +14 -14
  18. rumdl-0.0.64/tests/rules/md036_test.rs +188 -0
  19. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md051_test.rs +31 -0
  20. rumdl-0.0.62/tests/rules/md036_test.rs +0 -97
  21. {rumdl-0.0.62 → rumdl-0.0.64}/.rumdl.toml +0 -0
  22. {rumdl-0.0.62 → rumdl-0.0.64}/MANIFEST.in +0 -0
  23. {rumdl-0.0.62 → rumdl-0.0.64}/Makefile +0 -0
  24. {rumdl-0.0.62 → rumdl-0.0.64}/assets/logo.png +0 -0
  25. {rumdl-0.0.62 → rumdl-0.0.64}/benches/range_performance.rs +0 -0
  26. {rumdl-0.0.62 → rumdl-0.0.64}/benches/range_utils_benchmark.rs +0 -0
  27. {rumdl-0.0.62 → rumdl-0.0.64}/benches/rule_performance.rs +0 -0
  28. {rumdl-0.0.62 → rumdl-0.0.64}/docs/RULES.md +0 -0
  29. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md001.md +0 -0
  30. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md002.md +0 -0
  31. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md003.md +0 -0
  32. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md004.md +0 -0
  33. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md005.md +0 -0
  34. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md006.md +0 -0
  35. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md007.md +0 -0
  36. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md009.md +0 -0
  37. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md010.md +0 -0
  38. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md011.md +0 -0
  39. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md012.md +0 -0
  40. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md013.md +0 -0
  41. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md014.md +0 -0
  42. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md018.md +0 -0
  43. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md019.md +0 -0
  44. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md020.md +0 -0
  45. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md021.md +0 -0
  46. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md022.md +0 -0
  47. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md023.md +0 -0
  48. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md024.md +0 -0
  49. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md025.md +0 -0
  50. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md026.md +0 -0
  51. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md027.md +0 -0
  52. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md028.md +0 -0
  53. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md029.md +0 -0
  54. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md030.md +0 -0
  55. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md031.md +0 -0
  56. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md032.md +0 -0
  57. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md033.md +0 -0
  58. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md034.md +0 -0
  59. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md035.md +0 -0
  60. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md037.md +0 -0
  61. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md038.md +0 -0
  62. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md039.md +0 -0
  63. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md040.md +0 -0
  64. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md041.md +0 -0
  65. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md042.md +0 -0
  66. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md043.md +0 -0
  67. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md044.md +0 -0
  68. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md045.md +0 -0
  69. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md046.md +0 -0
  70. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md047.md +0 -0
  71. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md048.md +0 -0
  72. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md049.md +0 -0
  73. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md050.md +0 -0
  74. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md051.md +0 -0
  75. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md052.md +0 -0
  76. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md053.md +0 -0
  77. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md054.md +0 -0
  78. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md055.md +0 -0
  79. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md056.md +0 -0
  80. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md057.md +0 -0
  81. {rumdl-0.0.62 → rumdl-0.0.64}/docs/md058.md +0 -0
  82. {rumdl-0.0.62 → rumdl-0.0.64}/issues/plan-rule-parity-with-markdownlint.md +0 -0
  83. {rumdl-0.0.62 → rumdl-0.0.64}/parity_check.py +0 -0
  84. {rumdl-0.0.62 → rumdl-0.0.64}/pyproject.toml +0 -0
  85. {rumdl-0.0.62 → rumdl-0.0.64}/python/MANIFEST.in +0 -0
  86. {rumdl-0.0.62 → rumdl-0.0.64}/python/PYTHON-README.md +0 -0
  87. {rumdl-0.0.62 → rumdl-0.0.64}/python/rumdl/__init__.py +0 -0
  88. {rumdl-0.0.62 → rumdl-0.0.64}/python/rumdl/__main__.py +0 -0
  89. {rumdl-0.0.62 → rumdl-0.0.64}/python/rumdl/py.typed +0 -0
  90. {rumdl-0.0.62 → rumdl-0.0.64}/rumdl.toml.example +0 -0
  91. {rumdl-0.0.62 → rumdl-0.0.64}/src/config.rs +0 -0
  92. {rumdl-0.0.62 → rumdl-0.0.64}/src/init.rs +0 -0
  93. {rumdl-0.0.62 → rumdl-0.0.64}/src/lib.rs +0 -0
  94. {rumdl-0.0.62 → rumdl-0.0.64}/src/lint_context.rs +0 -0
  95. {rumdl-0.0.62 → rumdl-0.0.64}/src/lsp/mod.rs +0 -0
  96. {rumdl-0.0.62 → rumdl-0.0.64}/src/lsp/server.rs +0 -0
  97. {rumdl-0.0.62 → rumdl-0.0.64}/src/lsp/types.rs +0 -0
  98. {rumdl-0.0.62 → rumdl-0.0.64}/src/markdownlint_config.rs +0 -0
  99. {rumdl-0.0.62 → rumdl-0.0.64}/src/profiling.rs +0 -0
  100. {rumdl-0.0.62 → rumdl-0.0.64}/src/python.rs +0 -0
  101. {rumdl-0.0.62 → rumdl-0.0.64}/src/rule.rs +0 -0
  102. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/blockquote_utils.rs +0 -0
  103. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/code_fence_utils.rs +0 -0
  104. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/emphasis_style.rs +0 -0
  105. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/front_matter_utils.rs +0 -0
  106. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/list_utils.rs +0 -0
  107. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md001_heading_increment.rs +0 -0
  108. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md002_first_heading_h1.rs +0 -0
  109. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md003_heading_style.rs +0 -0
  110. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md005_list_indent.rs +0 -0
  111. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md006_start_bullets.rs +0 -0
  112. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md007_ul_indent.rs +0 -0
  113. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md009_trailing_spaces.rs +0 -0
  114. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md010_no_hard_tabs.rs +0 -0
  115. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md012_no_multiple_blanks.rs +0 -0
  116. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md013_line_length.rs +0 -0
  117. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md014_commands_show_output.rs +0 -0
  118. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md018_no_missing_space_atx.rs +0 -0
  119. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  120. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  121. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  122. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md022_blanks_around_headings.rs +0 -0
  123. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md023_heading_start_left.rs +0 -0
  124. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md024_no_duplicate_heading.rs +0 -0
  125. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md025_single_title.rs +0 -0
  126. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  127. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  128. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  129. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md029_ordered_list_prefix.rs +0 -0
  130. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md030_list_marker_space.rs +0 -0
  131. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md031_blanks_around_fences.rs +0 -0
  132. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md033_no_inline_html.rs +0 -0
  133. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md034_no_bare_urls.rs +0 -0
  134. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md035_hr_style.rs +0 -0
  135. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  136. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md038_no_space_in_code.rs +0 -0
  137. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md039_no_space_in_links.rs +0 -0
  138. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md040_fenced_code_language.rs +0 -0
  139. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md041_first_line_heading.rs +0 -0
  140. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md042_no_empty_links.rs +0 -0
  141. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md043_required_headings.rs +0 -0
  142. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md044_proper_names.rs +0 -0
  143. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md046_code_block_style.rs +0 -0
  144. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md047_single_trailing_newline.rs +0 -0
  145. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md048_code_fence_style.rs +0 -0
  146. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md049_emphasis_style.rs +0 -0
  147. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md050_strong_style.rs +0 -0
  148. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md052_reference_links_images.rs +0 -0
  149. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  150. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md054_link_image_style.rs +0 -0
  151. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md055_table_pipe_style.rs +0 -0
  152. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md056_table_column_count.rs +0 -0
  153. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md057_existing_relative_links.rs +0 -0
  154. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md058_blanks_around_tables.rs +0 -0
  155. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/mod.rs +0 -0
  156. {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/strong_style.rs +0 -0
  157. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/ast_utils.rs +0 -0
  158. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/code_block_utils.rs +0 -0
  159. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/document_structure.rs +0 -0
  160. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/early_returns.rs +0 -0
  161. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/element_cache.rs +0 -0
  162. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/markdown_elements.rs +0 -0
  163. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/mod.rs +0 -0
  164. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/range_utils.rs +0 -0
  165. {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/string_interner.rs +0 -0
  166. {rumdl-0.0.62 → rumdl-0.0.64}/tests/advanced_integration_tests.rs +0 -0
  167. {rumdl-0.0.62 → rumdl-0.0.64}/tests/cli_duplication_test.rs +0 -0
  168. {rumdl-0.0.62 → rumdl-0.0.64}/tests/cli_integration_tests.rs +0 -0
  169. {rumdl-0.0.62 → rumdl-0.0.64}/tests/commonmark_compliance_tests.rs +0 -0
  170. {rumdl-0.0.62 → rumdl-0.0.64}/tests/comprehensive_integration_tests.rs +0 -0
  171. {rumdl-0.0.62 → rumdl-0.0.64}/tests/config_application_tests.rs +0 -0
  172. {rumdl-0.0.62 → rumdl-0.0.64}/tests/config_tests.rs +0 -0
  173. {rumdl-0.0.62 → rumdl-0.0.64}/tests/init_command_test.rs +0 -0
  174. {rumdl-0.0.62 → rumdl-0.0.64}/tests/init_tests.rs +0 -0
  175. {rumdl-0.0.62 → rumdl-0.0.64}/tests/json_output_test.rs +0 -0
  176. {rumdl-0.0.62 → rumdl-0.0.64}/tests/lib.rs +0 -0
  177. {rumdl-0.0.62 → rumdl-0.0.64}/tests/lsp_integration_tests.rs +0 -0
  178. {rumdl-0.0.62 → rumdl-0.0.64}/tests/lsp_tests.rs +0 -0
  179. {rumdl-0.0.62 → rumdl-0.0.64}/tests/markdownlint_cli_integration.rs +0 -0
  180. {rumdl-0.0.62 → rumdl-0.0.64}/tests/markdownlint_config_test.rs +0 -0
  181. {rumdl-0.0.62 → rumdl-0.0.64}/tests/md030_edge_cases.md +0 -0
  182. {rumdl-0.0.62 → rumdl-0.0.64}/tests/output_format_tests.rs +0 -0
  183. {rumdl-0.0.62 → rumdl-0.0.64}/tests/perf_check.rs +0 -0
  184. {rumdl-0.0.62 → rumdl-0.0.64}/tests/pyproject_config_tests.rs +0 -0
  185. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md001_test.rs +0 -0
  186. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md001_unicode_test.rs +0 -0
  187. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md002_test.rs +0 -0
  188. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md003_test.rs +0 -0
  189. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md005_test.rs +0 -0
  190. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md006_test.rs +0 -0
  191. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md006_unicode_test.rs +0 -0
  192. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md007_test.rs +0 -0
  193. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md009_test.rs +0 -0
  194. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md010_test.rs +0 -0
  195. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md011_test.rs +0 -0
  196. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md012_test.rs +0 -0
  197. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md013_test.rs +0 -0
  198. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md014_test.rs +0 -0
  199. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md018_test.rs +0 -0
  200. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md019_test.rs +0 -0
  201. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md020_test.rs +0 -0
  202. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md021_test.rs +0 -0
  203. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md022_test.rs +0 -0
  204. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md023_extended_test.rs +0 -0
  205. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md023_test.rs +0 -0
  206. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md024_test.rs +0 -0
  207. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md025_test.rs +0 -0
  208. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md026_test.rs +0 -0
  209. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md027_test.rs +0 -0
  210. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md028_test.rs +0 -0
  211. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md029_test.rs +0 -0
  212. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md030_test.rs +0 -0
  213. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md031_test.rs +0 -0
  214. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md032_test.rs +0 -0
  215. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md033_extended_test.rs +0 -0
  216. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md033_test.rs +0 -0
  217. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md034_test.rs +0 -0
  218. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md035_test.rs +0 -0
  219. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md037_test.rs +0 -0
  220. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md038_test.rs +0 -0
  221. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md039_test.rs +0 -0
  222. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md040_test.rs +0 -0
  223. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md041_test.rs +0 -0
  224. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md042_test.rs +0 -0
  225. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md043_test.rs +0 -0
  226. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md044_test.rs +0 -0
  227. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md045_test.rs +0 -0
  228. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md046_test.rs +0 -0
  229. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md047_test.rs +0 -0
  230. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md048_test.rs +0 -0
  231. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md049_test.rs +0 -0
  232. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md050_test.rs +0 -0
  233. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md052_test.rs +0 -0
  234. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md053_additional_test.rs +0 -0
  235. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md053_proptest.rs +0 -0
  236. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md053_test.rs +0 -0
  237. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md054_test.rs +0 -0
  238. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md054_unicode_test.rs +0 -0
  239. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md055_test.rs +0 -0
  240. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md056_test.rs +0 -0
  241. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md057_test.rs +0 -0
  242. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md058_test.rs +0 -0
  243. {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/mod.rs +0 -0
  244. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/blockquote_utils_test.rs +0 -0
  245. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/code_block_utils_extended_test.rs +0 -0
  246. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/code_block_utils_test.rs +0 -0
  247. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/core_utils_test.rs +0 -0
  248. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/front_matter_utils_test.rs +0 -0
  249. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/line_index_test.rs +0 -0
  250. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/mod.rs +0 -0
  251. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils_markdown_edge_cases.rs +0 -0
  252. {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils_tests.rs +0 -0
@@ -1704,7 +1704,7 @@ dependencies = [
1704
1704
 
1705
1705
  [[package]]
1706
1706
  name = "rumdl"
1707
- version = "0.0.62"
1707
+ version = "0.0.64"
1708
1708
  dependencies = [
1709
1709
  "anyhow",
1710
1710
  "assert_cmd",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.62"
3
+ version = "0.0.64"
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>"]
@@ -65,7 +65,7 @@ tower-service = "0.3"
65
65
  env_logger = "0.11"
66
66
 
67
67
  [features]
68
- default = ["parallel", "profiling"]
68
+ default = ["parallel"]
69
69
  parallel = ["rayon"]
70
70
  profiling = []
71
71
  python = ["pyo3"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.62
3
+ Version: 0.0.64
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -70,7 +70,8 @@ Project-URL: Repository, https://github.com/rvben/rumdl.git
70
70
  - [Configuration in pyproject.toml](#configuration-in-pyprojecttoml)
71
71
  - [Configuration Output](#configuration-output)
72
72
  - [Effective Configuration (`rumdl config`)](#effective-configuration-rumdl-config)
73
- - [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
73
+ - [Example output](#example-output)
74
+ - [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
74
75
  - [Output Style](#output-style)
75
76
  - [Output Format](#output-format)
76
77
  - [Development](#development)
@@ -260,6 +261,11 @@ rumdl <command> [options] [file or directory...]
260
261
  - Subcommands:
261
262
  - `get <key>`: Query a specific config key (e.g. `global.exclude` or `MD013.line_length`)
262
263
 
264
+ - `server`: Start the Language Server Protocol server for editor integration
265
+ - `--port <PORT>`: TCP port to listen on (for debugging)
266
+ - `--stdio`: Use stdio for communication (default)
267
+ - `-v, --verbose`: Enable verbose logging
268
+
263
269
  - `version`: Show version information
264
270
 
265
271
  ### Usage Examples
@@ -371,9 +377,10 @@ Both kebab-case (`line-length`, `ignore-gitignore`) and snake_case (`line_length
371
377
 
372
378
  #### Effective Configuration (`rumdl config`)
373
379
 
374
- The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value. The output is colorized and the `[from ...]` annotation is globally aligned for easy scanning.
380
+ The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value.
381
+ The output is colorized and the `[from ...]` annotation is globally aligned for easy scanning.
375
382
 
376
- **Example output:**
383
+ #### Example output
377
384
 
378
385
  ```text
379
386
  [global]
@@ -387,6 +394,7 @@ The `rumdl config` command prints the **full effective configuration** (defaults
387
394
  code_blocks = true [from .rumdl.toml]
388
395
  ...
389
396
  ```
397
+
390
398
  - **Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
391
399
  - Green: CLI
392
400
  - Blue: `.rumdl.toml`
@@ -394,7 +402,7 @@ The `rumdl config` command prints the **full effective configuration** (defaults
394
402
  - Yellow: default
395
403
  - The `[from ...]` column is aligned across all sections.
396
404
 
397
- #### Defaults Only (`rumdl config --defaults`)
405
+ ### Defaults Only (`rumdl config --defaults`)
398
406
 
399
407
  The `--defaults` flag prints only the default configuration as TOML, suitable for copy-paste or reference:
400
408
 
@@ -40,7 +40,8 @@
40
40
  - [Configuration in pyproject.toml](#configuration-in-pyprojecttoml)
41
41
  - [Configuration Output](#configuration-output)
42
42
  - [Effective Configuration (`rumdl config`)](#effective-configuration-rumdl-config)
43
- - [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
43
+ - [Example output](#example-output)
44
+ - [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
44
45
  - [Output Style](#output-style)
45
46
  - [Output Format](#output-format)
46
47
  - [Development](#development)
@@ -230,6 +231,11 @@ rumdl <command> [options] [file or directory...]
230
231
  - Subcommands:
231
232
  - `get <key>`: Query a specific config key (e.g. `global.exclude` or `MD013.line_length`)
232
233
 
234
+ - `server`: Start the Language Server Protocol server for editor integration
235
+ - `--port <PORT>`: TCP port to listen on (for debugging)
236
+ - `--stdio`: Use stdio for communication (default)
237
+ - `-v, --verbose`: Enable verbose logging
238
+
233
239
  - `version`: Show version information
234
240
 
235
241
  ### Usage Examples
@@ -341,9 +347,10 @@ Both kebab-case (`line-length`, `ignore-gitignore`) and snake_case (`line_length
341
347
 
342
348
  #### Effective Configuration (`rumdl config`)
343
349
 
344
- The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value. The output is colorized and the `[from ...]` annotation is globally aligned for easy scanning.
350
+ The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value.
351
+ The output is colorized and the `[from ...]` annotation is globally aligned for easy scanning.
345
352
 
346
- **Example output:**
353
+ #### Example output
347
354
 
348
355
  ```text
349
356
  [global]
@@ -357,6 +364,7 @@ The `rumdl config` command prints the **full effective configuration** (defaults
357
364
  code_blocks = true [from .rumdl.toml]
358
365
  ...
359
366
  ```
367
+
360
368
  - **Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
361
369
  - Green: CLI
362
370
  - Blue: `.rumdl.toml`
@@ -364,7 +372,7 @@ The `rumdl config` command prints the **full effective configuration** (defaults
364
372
  - Yellow: default
365
373
  - The `[from ...]` column is aligned across all sections.
366
374
 
367
- #### Defaults Only (`rumdl config --defaults`)
375
+ ### Defaults Only (`rumdl config --defaults`)
368
376
 
369
377
  The `--defaults` flag prints only the default configuration as TOML, suitable for copy-paste or reference:
370
378
 
@@ -2,10 +2,10 @@
2
2
 
3
3
  ## Description
4
4
 
5
- This rule ensures that emphasis (bold or italic) is not used as a substitute for proper headings.
5
+ This rule ensures that emphasis (bold or italic) is not used as a substitute for proper headings.
6
6
  Using emphasis to create headings can lead to inconsistent document structure and accessibility issues.
7
7
 
8
- Proper headings provide better document structure, are more accessible, and enable automatic
8
+ Proper headings provide better document structure, are more accessible, and enable automatic
9
9
  generation of tables of contents.
10
10
 
11
11
  <!-- markdownlint-disable -->
@@ -40,13 +40,45 @@ This is a paragraph with **bold** and *italic* text within it.
40
40
 
41
41
  ### This is definitely not a proper heading
42
42
  ```
43
+
44
+ ### Punctuation Removal
45
+
46
+ When converting emphasis to headings, trailing punctuation is automatically removed:
47
+
48
+ ```markdown
49
+ **Example output:**
50
+ *Configuration:*
51
+ **Title with period.**
52
+ ```
53
+
54
+ Becomes:
55
+
56
+ ```markdown
57
+ ## Example output
58
+ # Configuration
59
+ ## Title with period
60
+ ```
43
61
  <!-- markdownlint-enable -->
44
62
 
45
63
  ## Configuration
46
64
 
47
- This rule has the following configuration options:
65
+ This rule supports the following configuration option:
66
+
67
+ - `punctuation` (string, default: `".,;:!?"`): Punctuation characters to remove from the end of headings when converting from emphasis
68
+ - Set to a string of characters to remove those specific punctuation marks
69
+ - Set to empty string (`""`) to preserve all punctuation
70
+ - Default removes common trailing punctuation: period, comma, semicolon, colon, exclamation mark, question mark
48
71
 
49
- - `punctuation`: A string containing the punctuation characters that are allowed at the end of emphasized text without triggering this rule. Default is `".,;:!?"`.
72
+ ### Example Configuration
73
+
74
+ ```toml
75
+ [MD036]
76
+ punctuation = "" # Preserve all punctuation in headings
77
+
78
+ # Or specify custom punctuation to remove
79
+ [MD036]
80
+ punctuation = ".!?" # Only remove periods, exclamation marks, and question marks
81
+ ```
50
82
 
51
83
  ## Special Cases
52
84
 
@@ -54,7 +86,7 @@ This rule has the following configuration options:
54
86
  - Emphasis within other content is not affected
55
87
  - Both single emphasis (*italic*) and double emphasis (**bold**) are checked
56
88
  - Triple emphasis (***bold italic***) is also checked
57
- - The rule can be configured to allow certain punctuation at the end of emphasized text
89
+ - Trailing punctuation (`.`, `:`, `;`, `!`, `?`) is automatically removed when converting to headings
58
90
 
59
91
  ## Related Rules
60
92
 
@@ -19,6 +19,7 @@ use rumdl::rule::Rule;
19
19
  use rumdl::rules::code_block_utils::CodeBlockStyle;
20
20
  use rumdl::rules::code_fence_utils::CodeFenceStyle;
21
21
  use rumdl::rules::strong_style::StrongStyle;
22
+
22
23
  use rumdl_config::normalize_key;
23
24
  use rumdl_config::ConfigSource;
24
25
 
@@ -141,9 +142,12 @@ enum Commands {
141
142
  },
142
143
  /// Start the Language Server Protocol server
143
144
  Server {
144
- /// TCP port to listen on (for debugging, default is stdio)
145
+ /// TCP port to listen on (for debugging)
145
146
  #[arg(long)]
146
147
  port: Option<u16>,
148
+ /// Use stdio for communication (default)
149
+ #[arg(long)]
150
+ stdio: bool,
147
151
  /// Enable verbose logging
148
152
  #[arg(short, long)]
149
153
  verbose: bool,
@@ -335,9 +339,9 @@ fn find_markdown_files(
335
339
  walk_builder.types(types);
336
340
  // -----------------------------------------
337
341
 
338
- // Determine if running in discovery mode (e.g., "rumdl ." or "rumdl check .")
342
+ // Determine if running in discovery mode (e.g., "rumdl ." or "rumdl check ." or "rumdl check")
339
343
  // Adjusted to handle both legacy and subcommand paths
340
- let is_discovery_mode = paths == ["."];
344
+ let is_discovery_mode = paths.is_empty() || paths == ["."];
341
345
 
342
346
  // --- Determine Effective Include/Exclude Patterns ---
343
347
 
@@ -625,7 +629,7 @@ fn print_config_with_provenance(sourced: &rumdl_config::SourcedConfig) {
625
629
  Box::new(MD033NoInlineHtml::default()),
626
630
  Box::new(MD034NoBareUrls {}),
627
631
  Box::new(MD035HRStyle::default()),
628
- Box::new(MD036NoEmphasisAsHeading {}),
632
+ Box::new(MD036NoEmphasisAsHeading::new(".,;:!?".to_string())),
629
633
  Box::new(MD037NoSpaceInEmphasis),
630
634
  Box::new(MD038NoSpaceInCode::default()),
631
635
  Box::new(MD039NoSpaceInLinks),
@@ -887,7 +891,7 @@ build-backend = \"setuptools.build_meta\"
887
891
  Box::new(MD033NoInlineHtml::default()),
888
892
  Box::new(MD034NoBareUrls {}),
889
893
  Box::new(MD035HRStyle::default()),
890
- Box::new(MD036NoEmphasisAsHeading {}),
894
+ Box::new(MD036NoEmphasisAsHeading::new(".,;:!?".to_string())),
891
895
  Box::new(MD037NoSpaceInEmphasis),
892
896
  Box::new(MD038NoSpaceInCode::default()),
893
897
  Box::new(MD039NoSpaceInLinks),
@@ -1143,7 +1147,7 @@ build-backend = \"setuptools.build_meta\"
1143
1147
  }
1144
1148
  }
1145
1149
  }
1146
- Some(Commands::Server { port, verbose }) => {
1150
+ Some(Commands::Server { port, stdio, verbose }) => {
1147
1151
  // Setup logging for the LSP server
1148
1152
  if *verbose {
1149
1153
  env_logger::Builder::from_default_env()
@@ -1166,7 +1170,9 @@ build-backend = \"setuptools.build_meta\"
1166
1170
  std::process::exit(1);
1167
1171
  }
1168
1172
  } else {
1169
- // Standard LSP mode over stdio
1173
+ // Standard LSP mode over stdio (default behavior)
1174
+ // Note: stdio flag is for explicit documentation, behavior is the same
1175
+ let _ = stdio; // Suppress unused variable warning
1170
1176
  if let Err(e) = rumdl::lsp::start_server().await {
1171
1177
  eprintln!("Failed to start LSP server: {}", e);
1172
1178
  std::process::exit(1);
@@ -9,6 +9,7 @@ lazy_static! {
9
9
  static ref ALTERNATE_FENCED_CODE_BLOCK_START: Regex = Regex::new(r"^(\s*)~~~(?:[^~\r\n]*)$").unwrap();
10
10
  static ref ALTERNATE_FENCED_CODE_BLOCK_END: Regex = Regex::new(r"^(\s*)~~~\s*$").unwrap();
11
11
  static ref INDENTED_CODE_BLOCK: Regex = Regex::new(r"^(\s{4,})").unwrap();
12
+ static ref LIST_ITEM_RE: Regex = Regex::new(r"^(\s*)([*+-]|\d+[.)])(\s*)(.*)$").unwrap();
12
13
  }
13
14
 
14
15
  /// Utility functions for detecting and handling code blocks in Markdown documents
@@ -174,10 +175,6 @@ impl CodeBlockUtils {
174
175
  } else if !in_code_block[i] {
175
176
  // Check for indented code blocks only if not already marked
176
177
  // Do not mark as code block if the line is a list item
177
- lazy_static! {
178
- static ref LIST_ITEM_RE: Regex =
179
- Regex::new(r"^(\s*)([*+-]|\d+[.)])(\s*)(.*)$").unwrap();
180
- }
181
178
  if (line.starts_with(" ") || INDENTED_CODE_BLOCK.is_match(line))
182
179
  && !LIST_ITEM_RE.is_match(line)
183
180
  {
@@ -12,6 +12,7 @@ lazy_static! {
12
12
  static ref FENCED_CODE_BLOCK_END: Regex = Regex::new(r"^(\s*)(`{3,}|~{3,})\s*$").unwrap();
13
13
  static ref FRONT_MATTER_DELIMITER: Regex = Regex::new(r"^---\s*$").unwrap();
14
14
  static ref INDENTED_CODE_BLOCK_PATTERN: Regex = Regex::new(r"^(\s{4,})").unwrap();
15
+ static ref HTML_TAG_REGEX: Regex = Regex::new(r"<[^>]*>").unwrap();
15
16
 
16
17
  // Single line emphasis patterns
17
18
  static ref SINGLE_LINE_ASTERISK_EMPHASIS: Regex = Regex::new(r"^\s*\*([^*\n]+)\*\s*$").unwrap();
@@ -367,7 +368,7 @@ impl HeadingUtils {
367
368
  /// Convert a heading text to a valid ID for fragment links
368
369
  pub fn heading_to_fragment(text: &str) -> String {
369
370
  // Remove any HTML tags
370
- let text_no_html = regex::Regex::new(r"<[^>]*>").unwrap().replace_all(text, "");
371
+ let text_no_html = HTML_TAG_REGEX.replace_all(text, "");
371
372
 
372
373
  // Convert to lowercase and trim
373
374
  let text_lower = text_no_html.trim().to_lowercase();