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.
- {rumdl-0.0.62 → rumdl-0.0.64}/Cargo.lock +1 -1
- {rumdl-0.0.62 → rumdl-0.0.64}/Cargo.toml +2 -2
- {rumdl-0.0.62 → rumdl-0.0.64}/PKG-INFO +13 -5
- {rumdl-0.0.62 → rumdl-0.0.64}/README.md +12 -4
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md036.md +37 -5
- {rumdl-0.0.62 → rumdl-0.0.64}/src/main.rs +13 -7
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/code_block_utils.rs +1 -4
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/heading_utils.rs +2 -1
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md004_unordered_list_style.rs +120 -174
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md011_no_reversed_links.rs +10 -5
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md032_blanks_around_lists.rs +336 -6
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md036_no_emphasis_only_first.rs +35 -7
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md045_no_alt_text.rs +7 -6
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md051_link_fragments.rs +57 -9
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/regex_cache.rs +1 -1
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/integration_tests.rs +1 -1
- {rumdl-0.0.62 → 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.62 → rumdl-0.0.64}/tests/rules/md051_test.rs +31 -0
- rumdl-0.0.62/tests/rules/md036_test.rs +0 -97
- {rumdl-0.0.62 → rumdl-0.0.64}/.rumdl.toml +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/MANIFEST.in +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/Makefile +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/assets/logo.png +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/benches/range_performance.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/RULES.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md001.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md002.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md003.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md004.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md005.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md006.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md007.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md009.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md010.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md011.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md012.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md013.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md014.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md018.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md019.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md020.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md021.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md022.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md023.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md024.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md025.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md026.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md027.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md028.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md029.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md030.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md031.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md032.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md033.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md034.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md035.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md037.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md038.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md039.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md040.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md041.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md042.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md043.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md044.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md045.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md046.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md047.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md048.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md049.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md050.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md051.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md052.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md053.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md054.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md055.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md056.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md057.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/docs/md058.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/issues/plan-rule-parity-with-markdownlint.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/parity_check.py +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/pyproject.toml +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/python/MANIFEST.in +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/rumdl.toml.example +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/config.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/init.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/lib.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/lint_context.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/lsp/server.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/lsp/types.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/profiling.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/python.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rule.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md013_line_length.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md029_ordered_list_prefix.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md037_spaces_around_emphasis.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/mod.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/mod.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/config_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/init_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/lib.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/md030_edge_cases.md +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/perf_check.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.62 → rumdl-0.0.64}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.62 → 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,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
|
-
- [
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
- [
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
|
@@ -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
|
|
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 =
|
|
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();
|