rumdl 0.0.63__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.
- {rumdl-0.0.63 → rumdl-0.0.64}/Cargo.lock +1 -1
- {rumdl-0.0.63 → rumdl-0.0.64}/Cargo.toml +2 -2
- {rumdl-0.0.63 → rumdl-0.0.64}/PKG-INFO +8 -40
- {rumdl-0.0.63 → rumdl-0.0.64}/README.md +7 -39
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md036.md +37 -5
- {rumdl-0.0.63 → rumdl-0.0.64}/src/main.rs +5 -4
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/code_block_utils.rs +1 -4
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/heading_utils.rs +2 -1
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md004_unordered_list_style.rs +120 -174
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md011_no_reversed_links.rs +10 -5
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md032_blanks_around_lists.rs +336 -6
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md036_no_emphasis_only_first.rs +35 -7
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md045_no_alt_text.rs +7 -6
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md051_link_fragments.rs +57 -9
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/regex_cache.rs +1 -1
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/integration_tests.rs +1 -1
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md004_test.rs +14 -14
- rumdl-0.0.64/tests/rules/md036_test.rs +188 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md051_test.rs +31 -0
- rumdl-0.0.63/tests/rules/md036_test.rs +0 -97
- {rumdl-0.0.63 → rumdl-0.0.64}/.rumdl.toml +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/MANIFEST.in +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/Makefile +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/assets/logo.png +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/benches/range_performance.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/RULES.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md001.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md002.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md003.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md004.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md005.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md006.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md007.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md009.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md010.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md011.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md012.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md013.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md014.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md018.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md019.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md020.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md021.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md022.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md023.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md024.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md025.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md026.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md027.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md028.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md029.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md030.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md031.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md032.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md033.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md034.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md035.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md037.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md038.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md039.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md040.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md041.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md042.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md043.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md044.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md045.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md046.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md047.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md048.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md049.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md050.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md051.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md052.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md053.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md054.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md055.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md056.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md057.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/docs/md058.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/issues/plan-rule-parity-with-markdownlint.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/parity_check.py +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/pyproject.toml +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/python/MANIFEST.in +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/rumdl.toml.example +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/config.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/init.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/lib.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/lint_context.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/lsp/server.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/lsp/types.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/profiling.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/python.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rule.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md013_line_length.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md029_ordered_list_prefix.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md037_spaces_around_emphasis.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/mod.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/mod.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/config_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/init_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/lib.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/md030_edge_cases.md +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/perf_check.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.63 → rumdl-0.0.64}/tests/utils_tests.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "rumdl"
|
|
3
|
-
version = "0.0.
|
|
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"
|
|
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.
|
|
3
|
+
Version: 0.0.64
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -70,8 +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
|
-
- [
|
|
74
|
-
|
|
73
|
+
- [Example output](#example-output)
|
|
74
|
+
- [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
|
|
75
75
|
- [Output Style](#output-style)
|
|
76
76
|
- [Output Format](#output-format)
|
|
77
77
|
- [Development](#development)
|
|
@@ -377,9 +377,10 @@ Both kebab-case (`line-length`, `ignore-gitignore`) and snake_case (`line_length
|
|
|
377
377
|
|
|
378
378
|
#### Effective Configuration (`rumdl config`)
|
|
379
379
|
|
|
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.
|
|
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.
|
|
381
382
|
|
|
382
|
-
|
|
383
|
+
#### Example output
|
|
383
384
|
|
|
384
385
|
```text
|
|
385
386
|
[global]
|
|
@@ -393,6 +394,7 @@ The `rumdl config` command prints the **full effective configuration** (defaults
|
|
|
393
394
|
code_blocks = true [from .rumdl.toml]
|
|
394
395
|
...
|
|
395
396
|
```
|
|
397
|
+
|
|
396
398
|
- **Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
|
|
397
399
|
- Green: CLI
|
|
398
400
|
- Blue: `.rumdl.toml`
|
|
@@ -400,7 +402,7 @@ The `rumdl config` command prints the **full effective configuration** (defaults
|
|
|
400
402
|
- Yellow: default
|
|
401
403
|
- The `[from ...]` column is aligned across all sections.
|
|
402
404
|
|
|
403
|
-
|
|
405
|
+
### Defaults Only (`rumdl config --defaults`)
|
|
404
406
|
|
|
405
407
|
The `--defaults` flag prints only the default configuration as TOML, suitable for copy-paste or reference:
|
|
406
408
|
|
|
@@ -418,40 +420,6 @@ code_blocks = true
|
|
|
418
420
|
...
|
|
419
421
|
```
|
|
420
422
|
|
|
421
|
-
## Editor Integration (LSP)
|
|
422
|
-
|
|
423
|
-
rumdl includes a built-in Language Server Protocol (LSP) implementation for real-time markdown linting in your favorite editor. Following [Ruff's approach](https://docs.astral.sh/ruff/editors/), the LSP server is built directly into the main `rumdl` binary.
|
|
424
|
-
|
|
425
|
-
### Starting the LSP Server
|
|
426
|
-
|
|
427
|
-
```bash
|
|
428
|
-
# Standard mode (stdio) - default
|
|
429
|
-
rumdl server
|
|
430
|
-
|
|
431
|
-
# Explicit stdio mode
|
|
432
|
-
rumdl server --stdio
|
|
433
|
-
|
|
434
|
-
# Debug mode (TCP)
|
|
435
|
-
rumdl server --port 8080 --verbose
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
### Supported Editors
|
|
439
|
-
|
|
440
|
-
- **VS Code**: Use the official rumdl extension (coming soon)
|
|
441
|
-
- **Neovim**: Configure with nvim-lspconfig
|
|
442
|
-
- **Emacs**: Use with lsp-mode
|
|
443
|
-
- **Sublime Text**: Use with LSP package
|
|
444
|
-
- **Any LSP-compatible editor**
|
|
445
|
-
|
|
446
|
-
For detailed setup instructions, see our [LSP Setup Guide](docs/lsp-setup.md).
|
|
447
|
-
|
|
448
|
-
### LSP Features
|
|
449
|
-
|
|
450
|
-
- **Real-time diagnostics** - See markdown linting errors as you type
|
|
451
|
-
- **Code actions** - One-click fixes for violations (where available)
|
|
452
|
-
- **Configuration support** - Respects your `.rumdl.toml` configuration
|
|
453
|
-
- **Performance optimized** - Built in Rust with all our performance optimizations
|
|
454
|
-
|
|
455
423
|
## Output Style
|
|
456
424
|
|
|
457
425
|
rumdl produces clean, colorized output similar to modern linting tools:
|
|
@@ -40,8 +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
|
-
- [
|
|
44
|
-
|
|
43
|
+
- [Example output](#example-output)
|
|
44
|
+
- [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
|
|
45
45
|
- [Output Style](#output-style)
|
|
46
46
|
- [Output Format](#output-format)
|
|
47
47
|
- [Development](#development)
|
|
@@ -347,9 +347,10 @@ Both kebab-case (`line-length`, `ignore-gitignore`) and snake_case (`line_length
|
|
|
347
347
|
|
|
348
348
|
#### Effective Configuration (`rumdl config`)
|
|
349
349
|
|
|
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.
|
|
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.
|
|
351
352
|
|
|
352
|
-
|
|
353
|
+
#### Example output
|
|
353
354
|
|
|
354
355
|
```text
|
|
355
356
|
[global]
|
|
@@ -363,6 +364,7 @@ The `rumdl config` command prints the **full effective configuration** (defaults
|
|
|
363
364
|
code_blocks = true [from .rumdl.toml]
|
|
364
365
|
...
|
|
365
366
|
```
|
|
367
|
+
|
|
366
368
|
- **Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
|
|
367
369
|
- Green: CLI
|
|
368
370
|
- Blue: `.rumdl.toml`
|
|
@@ -370,7 +372,7 @@ The `rumdl config` command prints the **full effective configuration** (defaults
|
|
|
370
372
|
- Yellow: default
|
|
371
373
|
- The `[from ...]` column is aligned across all sections.
|
|
372
374
|
|
|
373
|
-
|
|
375
|
+
### Defaults Only (`rumdl config --defaults`)
|
|
374
376
|
|
|
375
377
|
The `--defaults` flag prints only the default configuration as TOML, suitable for copy-paste or reference:
|
|
376
378
|
|
|
@@ -388,40 +390,6 @@ code_blocks = true
|
|
|
388
390
|
...
|
|
389
391
|
```
|
|
390
392
|
|
|
391
|
-
## Editor Integration (LSP)
|
|
392
|
-
|
|
393
|
-
rumdl includes a built-in Language Server Protocol (LSP) implementation for real-time markdown linting in your favorite editor. Following [Ruff's approach](https://docs.astral.sh/ruff/editors/), the LSP server is built directly into the main `rumdl` binary.
|
|
394
|
-
|
|
395
|
-
### Starting the LSP Server
|
|
396
|
-
|
|
397
|
-
```bash
|
|
398
|
-
# Standard mode (stdio) - default
|
|
399
|
-
rumdl server
|
|
400
|
-
|
|
401
|
-
# Explicit stdio mode
|
|
402
|
-
rumdl server --stdio
|
|
403
|
-
|
|
404
|
-
# Debug mode (TCP)
|
|
405
|
-
rumdl server --port 8080 --verbose
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
### Supported Editors
|
|
409
|
-
|
|
410
|
-
- **VS Code**: Use the official rumdl extension (coming soon)
|
|
411
|
-
- **Neovim**: Configure with nvim-lspconfig
|
|
412
|
-
- **Emacs**: Use with lsp-mode
|
|
413
|
-
- **Sublime Text**: Use with LSP package
|
|
414
|
-
- **Any LSP-compatible editor**
|
|
415
|
-
|
|
416
|
-
For detailed setup instructions, see our [LSP Setup Guide](docs/lsp-setup.md).
|
|
417
|
-
|
|
418
|
-
### LSP Features
|
|
419
|
-
|
|
420
|
-
- **Real-time diagnostics** - See markdown linting errors as you type
|
|
421
|
-
- **Code actions** - One-click fixes for violations (where available)
|
|
422
|
-
- **Configuration support** - Respects your `.rumdl.toml` configuration
|
|
423
|
-
- **Performance optimized** - Built in Rust with all our performance optimizations
|
|
424
|
-
|
|
425
393
|
## Output Style
|
|
426
394
|
|
|
427
395
|
rumdl produces clean, colorized output similar to modern linting tools:
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
|
|
@@ -338,9 +339,9 @@ fn find_markdown_files(
|
|
|
338
339
|
walk_builder.types(types);
|
|
339
340
|
// -----------------------------------------
|
|
340
341
|
|
|
341
|
-
// 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")
|
|
342
343
|
// Adjusted to handle both legacy and subcommand paths
|
|
343
|
-
let is_discovery_mode = paths == ["."];
|
|
344
|
+
let is_discovery_mode = paths.is_empty() || paths == ["."];
|
|
344
345
|
|
|
345
346
|
// --- Determine Effective Include/Exclude Patterns ---
|
|
346
347
|
|
|
@@ -628,7 +629,7 @@ fn print_config_with_provenance(sourced: &rumdl_config::SourcedConfig) {
|
|
|
628
629
|
Box::new(MD033NoInlineHtml::default()),
|
|
629
630
|
Box::new(MD034NoBareUrls {}),
|
|
630
631
|
Box::new(MD035HRStyle::default()),
|
|
631
|
-
Box::new(MD036NoEmphasisAsHeading
|
|
632
|
+
Box::new(MD036NoEmphasisAsHeading::new(".,;:!?".to_string())),
|
|
632
633
|
Box::new(MD037NoSpaceInEmphasis),
|
|
633
634
|
Box::new(MD038NoSpaceInCode::default()),
|
|
634
635
|
Box::new(MD039NoSpaceInLinks),
|
|
@@ -890,7 +891,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
890
891
|
Box::new(MD033NoInlineHtml::default()),
|
|
891
892
|
Box::new(MD034NoBareUrls {}),
|
|
892
893
|
Box::new(MD035HRStyle::default()),
|
|
893
|
-
Box::new(MD036NoEmphasisAsHeading
|
|
894
|
+
Box::new(MD036NoEmphasisAsHeading::new(".,;:!?".to_string())),
|
|
894
895
|
Box::new(MD037NoSpaceInEmphasis),
|
|
895
896
|
Box::new(MD038NoSpaceInCode::default()),
|
|
896
897
|
Box::new(MD039NoSpaceInLinks),
|
|
@@ -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 =
|
|
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();
|