rumdl 0.0.91__tar.gz → 0.0.92__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.91 → rumdl-0.0.92}/CHANGELOG.md +4 -1
- {rumdl-0.0.91 → rumdl-0.0.92}/Cargo.lock +16 -3
- {rumdl-0.0.91 → rumdl-0.0.92}/Cargo.toml +1 -1
- {rumdl-0.0.91 → rumdl-0.0.92}/PKG-INFO +58 -43
- {rumdl-0.0.91 → rumdl-0.0.92}/README.md +57 -42
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md045.md +25 -5
- {rumdl-0.0.91 → rumdl-0.0.92}/src/config.rs +20 -6
- {rumdl-0.0.91 → rumdl-0.0.92}/src/lsp/server.rs +135 -5
- {rumdl-0.0.91 → rumdl-0.0.92}/src/performance.rs +108 -1
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md036_no_emphasis_only_first.rs +68 -24
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md044_proper_names/md044_config.rs +8 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md044_proper_names.rs +122 -6
- rumdl-0.0.92/src/rules/md045_no_alt_text/md045_config.rs +24 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md045_no_alt_text.rs +55 -6
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/character_ranges/mod.rs +1 -1
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md036_test.rs +160 -15
- rumdl-0.0.92/tests/rules_mod_test.rs +206 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils/core_utils_test.rs +46 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/vscode_extension_fixes.rs +1 -1
- rumdl-0.0.92/tests/vscode_tests.rs +230 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/.config/nextest.toml +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/.mise.toml +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/.rumdl.toml +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/.rustfmt.toml +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/LICENSE +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/MANIFEST.in +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/Makefile +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/assets/logo.png +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/benches/range_performance.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/RULES.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/global-settings.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md001.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md002.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md003.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md004.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md005.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md006.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md007.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md009.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md010.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md011.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md012.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md013.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md014.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md018.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md019.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md020.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md021.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md022.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md023.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md024.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md025.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md026.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md027.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md028.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md029.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md030.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md031.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md032.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md033.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md034.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md035.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md036.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md037.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md038.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md039.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md040.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md041.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md042.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md043.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md044.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md046.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md047.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md048.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md049.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md050.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md051.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md052.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md053.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md054.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md055.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md056.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md057.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/md058.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/issues/plan-rule-parity-with-markdownlint.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/parity_check.py +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/pyproject.toml +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/python/MANIFEST.in +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/rumdl.toml.example +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/rust-toolchain.toml +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/bin/benchmark.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/init.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/inline_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/lib.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/lint_context.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/lsp/types.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/main.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/output/mod.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/parallel.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/profiling.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/python.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rule.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rule_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/heading_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md011_no_reversed_links.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md013_line_length.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md029_ordered_list_prefix.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md032_blanks_around_lists.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md037_spaces_around_emphasis.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md051_link_fragments.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/mod.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/fix_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/mod.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/utils/table_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/src/vscode.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/config_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/init_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/lib.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/lsp_memory_leak_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/md030_edge_cases.md +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/perf_check.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/thread_safety_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.91 → rumdl-0.0.92}/tests/vscode_test.rs +0 -0
|
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.0.92] - 2025-07-02
|
|
11
|
+
|
|
10
12
|
## [0.0.91] - 2025-07-02
|
|
11
13
|
|
|
12
14
|
## [0.0.90] - 2025-07-01
|
|
@@ -111,7 +113,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
111
113
|
### Added
|
|
112
114
|
- Initial implementation of remaining rules for markdownlint parity
|
|
113
115
|
|
|
114
|
-
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.
|
|
116
|
+
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.92...HEAD
|
|
117
|
+
[0.0.92]: https://github.com/rvben/rumdl/compare/v0.0.91...v0.0.92
|
|
115
118
|
[0.0.91]: https://github.com/rvben/rumdl/compare/v0.0.90...v0.0.91
|
|
116
119
|
[0.0.90]: https://github.com/rvben/rumdl/compare/v0.0.89...v0.0.90
|
|
117
120
|
[0.0.89]: https://github.com/rvben/rumdl/compare/v0.0.88...v0.0.89
|
|
@@ -848,6 +848,17 @@ version = "2.0.6"
|
|
|
848
848
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
849
849
|
checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
|
|
850
850
|
|
|
851
|
+
[[package]]
|
|
852
|
+
name = "io-uring"
|
|
853
|
+
version = "0.7.8"
|
|
854
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
855
|
+
checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013"
|
|
856
|
+
dependencies = [
|
|
857
|
+
"bitflags 2.9.1",
|
|
858
|
+
"cfg-if",
|
|
859
|
+
"libc",
|
|
860
|
+
]
|
|
861
|
+
|
|
851
862
|
[[package]]
|
|
852
863
|
name = "is-terminal"
|
|
853
864
|
version = "0.4.16"
|
|
@@ -1454,7 +1465,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
|
|
1454
1465
|
|
|
1455
1466
|
[[package]]
|
|
1456
1467
|
name = "rumdl"
|
|
1457
|
-
version = "0.0.
|
|
1468
|
+
version = "0.0.92"
|
|
1458
1469
|
dependencies = [
|
|
1459
1470
|
"anyhow",
|
|
1460
1471
|
"assert_cmd",
|
|
@@ -1785,17 +1796,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|
|
1785
1796
|
|
|
1786
1797
|
[[package]]
|
|
1787
1798
|
name = "tokio"
|
|
1788
|
-
version = "1.
|
|
1799
|
+
version = "1.46.0"
|
|
1789
1800
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1790
|
-
checksum = "
|
|
1801
|
+
checksum = "1140bb80481756a8cbe10541f37433b459c5aa1e727b4c020fbfebdc25bf3ec4"
|
|
1791
1802
|
dependencies = [
|
|
1792
1803
|
"backtrace",
|
|
1793
1804
|
"bytes",
|
|
1805
|
+
"io-uring",
|
|
1794
1806
|
"libc",
|
|
1795
1807
|
"mio",
|
|
1796
1808
|
"parking_lot",
|
|
1797
1809
|
"pin-project-lite",
|
|
1798
1810
|
"signal-hook-registry",
|
|
1811
|
+
"slab",
|
|
1799
1812
|
"socket2",
|
|
1800
1813
|
"tokio-macros",
|
|
1801
1814
|
"windows-sys 0.52.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rumdl
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.92
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -48,41 +48,6 @@ Project-URL: Repository, https://github.com/rvben/rumdl.git
|
|
|
48
48
|
|
|
49
49
|
</div>
|
|
50
50
|
|
|
51
|
-
## Table of Contents
|
|
52
|
-
|
|
53
|
-
- [rumdl - A high-performance Markdown linter, written in Rust](#rumdl---a-high-performance-markdown-linter-written-in-rust)
|
|
54
|
-
- [A modern Markdown linter and formatter, built for speed with Rust](#a-modern-markdown-linter-and-formatter-built-for-speed-with-rust)
|
|
55
|
-
- [Table of Contents](#table-of-contents)
|
|
56
|
-
- [Quick Start](#quick-start)
|
|
57
|
-
- [Overview](#overview)
|
|
58
|
-
- [Performance](#performance)
|
|
59
|
-
- [Installation](#installation)
|
|
60
|
-
- [Using Cargo (Rust)](#using-cargo-rust)
|
|
61
|
-
- [Using pip (Python)](#using-pip-python)
|
|
62
|
-
- [Download binary](#download-binary)
|
|
63
|
-
- [VS Code Extension](#vs-code-extension)
|
|
64
|
-
- [Usage](#usage)
|
|
65
|
-
- [Pre-commit Integration](#pre-commit-integration)
|
|
66
|
-
- [Rules](#rules)
|
|
67
|
-
- [Command-line Interface](#command-line-interface)
|
|
68
|
-
- [Commands](#commands)
|
|
69
|
-
- [Usage Examples](#usage-examples)
|
|
70
|
-
- [Configuration](#configuration)
|
|
71
|
-
- [Configuration File Example](#configuration-file-example)
|
|
72
|
-
- [Initializing Configuration](#initializing-configuration)
|
|
73
|
-
- [Configuration in pyproject.toml](#configuration-in-pyprojecttoml)
|
|
74
|
-
- [Configuration Output](#configuration-output)
|
|
75
|
-
- [Effective Configuration (`rumdl config`)](#effective-configuration-rumdl-config)
|
|
76
|
-
- [Example output](#example-output)
|
|
77
|
-
- [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
|
|
78
|
-
- [Output Style](#output-style)
|
|
79
|
-
- [Output Format](#output-format)
|
|
80
|
-
- [Development](#development)
|
|
81
|
-
- [Prerequisites](#prerequisites)
|
|
82
|
-
- [Building](#building)
|
|
83
|
-
- [Testing](#testing)
|
|
84
|
-
- [License](#license)
|
|
85
|
-
|
|
86
51
|
## Quick Start
|
|
87
52
|
|
|
88
53
|
```bash
|
|
@@ -101,7 +66,9 @@ rumdl init
|
|
|
101
66
|
|
|
102
67
|
## Overview
|
|
103
68
|
|
|
104
|
-
rumdl is a high-performance Markdown linter and fixer that helps ensure consistency and best practices in your Markdown files.
|
|
69
|
+
rumdl is a high-performance Markdown linter and fixer that helps ensure consistency and best practices in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff)'s approach to Python linting, rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
|
|
70
|
+
|
|
71
|
+
It offers:
|
|
105
72
|
|
|
106
73
|
- ⚡️ **Built for speed** with Rust - significantly faster than alternatives
|
|
107
74
|
- 🔍 **54 lint rules** covering common Markdown issues
|
|
@@ -113,13 +80,37 @@ rumdl is a high-performance Markdown linter and fixer that helps ensure consiste
|
|
|
113
80
|
- 📏 **Modern CLI** with detailed error reporting
|
|
114
81
|
- 🔄 **CI/CD friendly** with non-zero exit code on errors
|
|
115
82
|
|
|
116
|
-
##
|
|
117
|
-
|
|
118
|
-
rumdl is designed for speed and efficiency:
|
|
119
|
-
|
|
120
|
-

|
|
83
|
+
## Table of Contents
|
|
121
84
|
|
|
122
|
-
|
|
85
|
+
- [Quick Start](#quick-start)
|
|
86
|
+
- [Overview](#overview)
|
|
87
|
+
- [Installation](#installation)
|
|
88
|
+
- [Using Cargo (Rust)](#using-cargo-rust)
|
|
89
|
+
- [Using pip (Python)](#using-pip-python)
|
|
90
|
+
- [Using uv](#using-uv)
|
|
91
|
+
- [Download binary](#download-binary)
|
|
92
|
+
- [VS Code Extension](#vs-code-extension)
|
|
93
|
+
- [Usage](#usage)
|
|
94
|
+
- [Pre-commit Integration](#pre-commit-integration)
|
|
95
|
+
- [Rules](#rules)
|
|
96
|
+
- [Command-line Interface](#command-line-interface)
|
|
97
|
+
- [Commands](#commands)
|
|
98
|
+
- [Usage Examples](#usage-examples)
|
|
99
|
+
- [Configuration](#configuration)
|
|
100
|
+
- [Configuration File Example](#configuration-file-example)
|
|
101
|
+
- [Initializing Configuration](#initializing-configuration)
|
|
102
|
+
- [Configuration in pyproject.toml](#configuration-in-pyprojecttoml)
|
|
103
|
+
- [Configuration Output](#configuration-output)
|
|
104
|
+
- [Effective Configuration (`rumdl config`)](#effective-configuration-rumdl-config)
|
|
105
|
+
- [Example output](#example-output)
|
|
106
|
+
- [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
|
|
107
|
+
- [Output Style](#output-style)
|
|
108
|
+
- [Output Format](#output-format)
|
|
109
|
+
- [Development](#development)
|
|
110
|
+
- [Prerequisites](#prerequisites)
|
|
111
|
+
- [Building](#building)
|
|
112
|
+
- [Testing](#testing)
|
|
113
|
+
- [License](#license)
|
|
123
114
|
|
|
124
115
|
## Installation
|
|
125
116
|
|
|
@@ -137,6 +128,18 @@ cargo install rumdl
|
|
|
137
128
|
pip install rumdl
|
|
138
129
|
```
|
|
139
130
|
|
|
131
|
+
### Using uv
|
|
132
|
+
|
|
133
|
+
For faster installation and better dependency management with [uv](https://github.com/astral-sh/uv):
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Install directly
|
|
137
|
+
uv tool install rumdl
|
|
138
|
+
|
|
139
|
+
# Or run without installing
|
|
140
|
+
uv tool run rumdl check .
|
|
141
|
+
```
|
|
142
|
+
|
|
140
143
|
### Download binary
|
|
141
144
|
|
|
142
145
|
```bash
|
|
@@ -164,6 +167,7 @@ rumdl vscode --force
|
|
|
164
167
|
```
|
|
165
168
|
|
|
166
169
|
The extension provides:
|
|
170
|
+
|
|
167
171
|
- 🔍 Real-time linting as you type
|
|
168
172
|
- 💡 Quick fixes for common issues
|
|
169
173
|
- 🎨 Code formatting on save
|
|
@@ -275,9 +279,11 @@ rumdl <command> [options] [file or directory...]
|
|
|
275
279
|
Lint Markdown files and print warnings/errors (main subcommand)
|
|
276
280
|
|
|
277
281
|
**Arguments:**
|
|
282
|
+
|
|
278
283
|
- `[PATHS...]`: Files or directories to lint. If provided, these paths take precedence over include patterns
|
|
279
284
|
|
|
280
285
|
**Options:**
|
|
286
|
+
|
|
281
287
|
- `-f, --fix`: Automatically fix issues where possible
|
|
282
288
|
- `-l, --list-rules`: List all available rules
|
|
283
289
|
- `-d, --disable <rules>`: Disable specific rules (comma-separated)
|
|
@@ -297,6 +303,7 @@ Lint Markdown files and print warnings/errors (main subcommand)
|
|
|
297
303
|
Create a default configuration file in the current directory
|
|
298
304
|
|
|
299
305
|
**Options:**
|
|
306
|
+
|
|
300
307
|
- `--pyproject`: Generate configuration for `pyproject.toml` instead of `.rumdl.toml`
|
|
301
308
|
|
|
302
309
|
#### `import <FILE> [OPTIONS]`
|
|
@@ -304,9 +311,11 @@ Create a default configuration file in the current directory
|
|
|
304
311
|
Import and convert markdownlint configuration files to rumdl format
|
|
305
312
|
|
|
306
313
|
**Arguments:**
|
|
314
|
+
|
|
307
315
|
- `<FILE>`: Path to markdownlint config file (JSON/YAML)
|
|
308
316
|
|
|
309
317
|
**Options:**
|
|
318
|
+
|
|
310
319
|
- `-o, --output <path>`: Output file path (default: `.rumdl.toml`)
|
|
311
320
|
- `--format <format>`: Output format: `toml` or `json` (default: `toml`)
|
|
312
321
|
- `--dry-run`: Show converted config without writing to file
|
|
@@ -316,6 +325,7 @@ Import and convert markdownlint configuration files to rumdl format
|
|
|
316
325
|
Show information about a rule or list all rules
|
|
317
326
|
|
|
318
327
|
**Arguments:**
|
|
328
|
+
|
|
319
329
|
- `[rule]`: Rule name or ID (optional). If provided, shows details for that rule. If omitted, lists all available rules
|
|
320
330
|
|
|
321
331
|
#### `config [OPTIONS] [COMMAND]`
|
|
@@ -323,10 +333,12 @@ Show information about a rule or list all rules
|
|
|
323
333
|
Show configuration or query a specific key
|
|
324
334
|
|
|
325
335
|
**Options:**
|
|
336
|
+
|
|
326
337
|
- `--defaults`: Show only the default configuration values
|
|
327
338
|
- `--output <format>`: Output format (e.g. `toml`, `json`)
|
|
328
339
|
|
|
329
340
|
**Subcommands:**
|
|
341
|
+
|
|
330
342
|
- `get <key>`: Query a specific config key (e.g. `global.exclude` or `MD013.line_length`)
|
|
331
343
|
- `file`: Show the absolute path of the configuration file that was loaded
|
|
332
344
|
|
|
@@ -335,6 +347,7 @@ Show configuration or query a specific key
|
|
|
335
347
|
Start the Language Server Protocol server for editor integration
|
|
336
348
|
|
|
337
349
|
**Options:**
|
|
350
|
+
|
|
338
351
|
- `--port <PORT>`: TCP port to listen on (for debugging)
|
|
339
352
|
- `--stdio`: Use stdio for communication (default)
|
|
340
353
|
- `-v, --verbose`: Enable verbose logging
|
|
@@ -344,6 +357,7 @@ Start the Language Server Protocol server for editor integration
|
|
|
344
357
|
Install the rumdl VS Code extension
|
|
345
358
|
|
|
346
359
|
**Options:**
|
|
360
|
+
|
|
347
361
|
- `--force`: Force reinstall even if already installed
|
|
348
362
|
- `--status`: Show installation status without installing
|
|
349
363
|
|
|
@@ -431,6 +445,7 @@ rumdl can be configured in several ways:
|
|
|
431
445
|
rumdl provides seamless compatibility with existing markdownlint configurations:
|
|
432
446
|
|
|
433
447
|
**Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
|
|
448
|
+
|
|
434
449
|
- `.markdownlint.json` / `.markdownlint.jsonc`
|
|
435
450
|
- `.markdownlint.yaml` / `.markdownlint.yml`
|
|
436
451
|
- `markdownlint.json` / `markdownlint.yaml`
|
|
@@ -17,41 +17,6 @@
|
|
|
17
17
|
|
|
18
18
|
</div>
|
|
19
19
|
|
|
20
|
-
## Table of Contents
|
|
21
|
-
|
|
22
|
-
- [rumdl - A high-performance Markdown linter, written in Rust](#rumdl---a-high-performance-markdown-linter-written-in-rust)
|
|
23
|
-
- [A modern Markdown linter and formatter, built for speed with Rust](#a-modern-markdown-linter-and-formatter-built-for-speed-with-rust)
|
|
24
|
-
- [Table of Contents](#table-of-contents)
|
|
25
|
-
- [Quick Start](#quick-start)
|
|
26
|
-
- [Overview](#overview)
|
|
27
|
-
- [Performance](#performance)
|
|
28
|
-
- [Installation](#installation)
|
|
29
|
-
- [Using Cargo (Rust)](#using-cargo-rust)
|
|
30
|
-
- [Using pip (Python)](#using-pip-python)
|
|
31
|
-
- [Download binary](#download-binary)
|
|
32
|
-
- [VS Code Extension](#vs-code-extension)
|
|
33
|
-
- [Usage](#usage)
|
|
34
|
-
- [Pre-commit Integration](#pre-commit-integration)
|
|
35
|
-
- [Rules](#rules)
|
|
36
|
-
- [Command-line Interface](#command-line-interface)
|
|
37
|
-
- [Commands](#commands)
|
|
38
|
-
- [Usage Examples](#usage-examples)
|
|
39
|
-
- [Configuration](#configuration)
|
|
40
|
-
- [Configuration File Example](#configuration-file-example)
|
|
41
|
-
- [Initializing Configuration](#initializing-configuration)
|
|
42
|
-
- [Configuration in pyproject.toml](#configuration-in-pyprojecttoml)
|
|
43
|
-
- [Configuration Output](#configuration-output)
|
|
44
|
-
- [Effective Configuration (`rumdl config`)](#effective-configuration-rumdl-config)
|
|
45
|
-
- [Example output](#example-output)
|
|
46
|
-
- [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
|
|
47
|
-
- [Output Style](#output-style)
|
|
48
|
-
- [Output Format](#output-format)
|
|
49
|
-
- [Development](#development)
|
|
50
|
-
- [Prerequisites](#prerequisites)
|
|
51
|
-
- [Building](#building)
|
|
52
|
-
- [Testing](#testing)
|
|
53
|
-
- [License](#license)
|
|
54
|
-
|
|
55
20
|
## Quick Start
|
|
56
21
|
|
|
57
22
|
```bash
|
|
@@ -70,7 +35,9 @@ rumdl init
|
|
|
70
35
|
|
|
71
36
|
## Overview
|
|
72
37
|
|
|
73
|
-
rumdl is a high-performance Markdown linter and fixer that helps ensure consistency and best practices in your Markdown files.
|
|
38
|
+
rumdl is a high-performance Markdown linter and fixer that helps ensure consistency and best practices in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff)'s approach to Python linting, rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
|
|
39
|
+
|
|
40
|
+
It offers:
|
|
74
41
|
|
|
75
42
|
- ⚡️ **Built for speed** with Rust - significantly faster than alternatives
|
|
76
43
|
- 🔍 **54 lint rules** covering common Markdown issues
|
|
@@ -82,13 +49,37 @@ rumdl is a high-performance Markdown linter and fixer that helps ensure consiste
|
|
|
82
49
|
- 📏 **Modern CLI** with detailed error reporting
|
|
83
50
|
- 🔄 **CI/CD friendly** with non-zero exit code on errors
|
|
84
51
|
|
|
85
|
-
##
|
|
86
|
-
|
|
87
|
-
rumdl is designed for speed and efficiency:
|
|
88
|
-
|
|
89
|
-

|
|
52
|
+
## Table of Contents
|
|
90
53
|
|
|
91
|
-
|
|
54
|
+
- [Quick Start](#quick-start)
|
|
55
|
+
- [Overview](#overview)
|
|
56
|
+
- [Installation](#installation)
|
|
57
|
+
- [Using Cargo (Rust)](#using-cargo-rust)
|
|
58
|
+
- [Using pip (Python)](#using-pip-python)
|
|
59
|
+
- [Using uv](#using-uv)
|
|
60
|
+
- [Download binary](#download-binary)
|
|
61
|
+
- [VS Code Extension](#vs-code-extension)
|
|
62
|
+
- [Usage](#usage)
|
|
63
|
+
- [Pre-commit Integration](#pre-commit-integration)
|
|
64
|
+
- [Rules](#rules)
|
|
65
|
+
- [Command-line Interface](#command-line-interface)
|
|
66
|
+
- [Commands](#commands)
|
|
67
|
+
- [Usage Examples](#usage-examples)
|
|
68
|
+
- [Configuration](#configuration)
|
|
69
|
+
- [Configuration File Example](#configuration-file-example)
|
|
70
|
+
- [Initializing Configuration](#initializing-configuration)
|
|
71
|
+
- [Configuration in pyproject.toml](#configuration-in-pyprojecttoml)
|
|
72
|
+
- [Configuration Output](#configuration-output)
|
|
73
|
+
- [Effective Configuration (`rumdl config`)](#effective-configuration-rumdl-config)
|
|
74
|
+
- [Example output](#example-output)
|
|
75
|
+
- [Defaults Only (`rumdl config --defaults`)](#defaults-only-rumdl-config---defaults)
|
|
76
|
+
- [Output Style](#output-style)
|
|
77
|
+
- [Output Format](#output-format)
|
|
78
|
+
- [Development](#development)
|
|
79
|
+
- [Prerequisites](#prerequisites)
|
|
80
|
+
- [Building](#building)
|
|
81
|
+
- [Testing](#testing)
|
|
82
|
+
- [License](#license)
|
|
92
83
|
|
|
93
84
|
## Installation
|
|
94
85
|
|
|
@@ -106,6 +97,18 @@ cargo install rumdl
|
|
|
106
97
|
pip install rumdl
|
|
107
98
|
```
|
|
108
99
|
|
|
100
|
+
### Using uv
|
|
101
|
+
|
|
102
|
+
For faster installation and better dependency management with [uv](https://github.com/astral-sh/uv):
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Install directly
|
|
106
|
+
uv tool install rumdl
|
|
107
|
+
|
|
108
|
+
# Or run without installing
|
|
109
|
+
uv tool run rumdl check .
|
|
110
|
+
```
|
|
111
|
+
|
|
109
112
|
### Download binary
|
|
110
113
|
|
|
111
114
|
```bash
|
|
@@ -133,6 +136,7 @@ rumdl vscode --force
|
|
|
133
136
|
```
|
|
134
137
|
|
|
135
138
|
The extension provides:
|
|
139
|
+
|
|
136
140
|
- 🔍 Real-time linting as you type
|
|
137
141
|
- 💡 Quick fixes for common issues
|
|
138
142
|
- 🎨 Code formatting on save
|
|
@@ -244,9 +248,11 @@ rumdl <command> [options] [file or directory...]
|
|
|
244
248
|
Lint Markdown files and print warnings/errors (main subcommand)
|
|
245
249
|
|
|
246
250
|
**Arguments:**
|
|
251
|
+
|
|
247
252
|
- `[PATHS...]`: Files or directories to lint. If provided, these paths take precedence over include patterns
|
|
248
253
|
|
|
249
254
|
**Options:**
|
|
255
|
+
|
|
250
256
|
- `-f, --fix`: Automatically fix issues where possible
|
|
251
257
|
- `-l, --list-rules`: List all available rules
|
|
252
258
|
- `-d, --disable <rules>`: Disable specific rules (comma-separated)
|
|
@@ -266,6 +272,7 @@ Lint Markdown files and print warnings/errors (main subcommand)
|
|
|
266
272
|
Create a default configuration file in the current directory
|
|
267
273
|
|
|
268
274
|
**Options:**
|
|
275
|
+
|
|
269
276
|
- `--pyproject`: Generate configuration for `pyproject.toml` instead of `.rumdl.toml`
|
|
270
277
|
|
|
271
278
|
#### `import <FILE> [OPTIONS]`
|
|
@@ -273,9 +280,11 @@ Create a default configuration file in the current directory
|
|
|
273
280
|
Import and convert markdownlint configuration files to rumdl format
|
|
274
281
|
|
|
275
282
|
**Arguments:**
|
|
283
|
+
|
|
276
284
|
- `<FILE>`: Path to markdownlint config file (JSON/YAML)
|
|
277
285
|
|
|
278
286
|
**Options:**
|
|
287
|
+
|
|
279
288
|
- `-o, --output <path>`: Output file path (default: `.rumdl.toml`)
|
|
280
289
|
- `--format <format>`: Output format: `toml` or `json` (default: `toml`)
|
|
281
290
|
- `--dry-run`: Show converted config without writing to file
|
|
@@ -285,6 +294,7 @@ Import and convert markdownlint configuration files to rumdl format
|
|
|
285
294
|
Show information about a rule or list all rules
|
|
286
295
|
|
|
287
296
|
**Arguments:**
|
|
297
|
+
|
|
288
298
|
- `[rule]`: Rule name or ID (optional). If provided, shows details for that rule. If omitted, lists all available rules
|
|
289
299
|
|
|
290
300
|
#### `config [OPTIONS] [COMMAND]`
|
|
@@ -292,10 +302,12 @@ Show information about a rule or list all rules
|
|
|
292
302
|
Show configuration or query a specific key
|
|
293
303
|
|
|
294
304
|
**Options:**
|
|
305
|
+
|
|
295
306
|
- `--defaults`: Show only the default configuration values
|
|
296
307
|
- `--output <format>`: Output format (e.g. `toml`, `json`)
|
|
297
308
|
|
|
298
309
|
**Subcommands:**
|
|
310
|
+
|
|
299
311
|
- `get <key>`: Query a specific config key (e.g. `global.exclude` or `MD013.line_length`)
|
|
300
312
|
- `file`: Show the absolute path of the configuration file that was loaded
|
|
301
313
|
|
|
@@ -304,6 +316,7 @@ Show configuration or query a specific key
|
|
|
304
316
|
Start the Language Server Protocol server for editor integration
|
|
305
317
|
|
|
306
318
|
**Options:**
|
|
319
|
+
|
|
307
320
|
- `--port <PORT>`: TCP port to listen on (for debugging)
|
|
308
321
|
- `--stdio`: Use stdio for communication (default)
|
|
309
322
|
- `-v, --verbose`: Enable verbose logging
|
|
@@ -313,6 +326,7 @@ Start the Language Server Protocol server for editor integration
|
|
|
313
326
|
Install the rumdl VS Code extension
|
|
314
327
|
|
|
315
328
|
**Options:**
|
|
329
|
+
|
|
316
330
|
- `--force`: Force reinstall even if already installed
|
|
317
331
|
- `--status`: Show installation status without installing
|
|
318
332
|
|
|
@@ -400,6 +414,7 @@ rumdl can be configured in several ways:
|
|
|
400
414
|
rumdl provides seamless compatibility with existing markdownlint configurations:
|
|
401
415
|
|
|
402
416
|
**Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
|
|
417
|
+
|
|
403
418
|
- `.markdownlint.json` / `.markdownlint.jsonc`
|
|
404
419
|
- `.markdownlint.yaml` / `.markdownlint.yml`
|
|
405
420
|
- `markdownlint.json` / `markdownlint.yaml`
|
|
@@ -40,18 +40,38 @@ Ensures all images include alternative text (alt text) that describes the image
|
|
|
40
40
|
### 🔧 Fixed
|
|
41
41
|
|
|
42
42
|
```markdown
|
|
43
|
-
 <!-- Default placeholder added -->
|
|
44
44
|
|
|
45
|
-
 <!-- Needs meaningful description -->
|
|
46
46
|
|
|
47
|
-
 <!-- Needs meaningful description -->
|
|
48
48
|
|
|
49
|
-
 <!-- Needs meaningful description -->
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
## Configuration
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
```yaml
|
|
55
|
+
MD045:
|
|
56
|
+
placeholder_text: "TODO: Add image description" # Text to insert for missing alt text
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Options
|
|
60
|
+
|
|
61
|
+
- **placeholder_text** (default: `"TODO: Add image description"`) - The text to insert when fixing images with missing alt text. You can customize this to match your team's conventions.
|
|
62
|
+
|
|
63
|
+
### Example custom configuration
|
|
64
|
+
|
|
65
|
+
```yaml
|
|
66
|
+
MD045:
|
|
67
|
+
placeholder_text: "FIXME: Add alt text"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
This would change the fix behavior to:
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+

|
|
74
|
+
```
|
|
55
75
|
|
|
56
76
|
## Automatic fixes
|
|
57
77
|
|
|
@@ -911,7 +911,7 @@ impl<T: Clone> SourcedValue<T> {
|
|
|
911
911
|
new_value: T,
|
|
912
912
|
new_source: ConfigSource,
|
|
913
913
|
new_file: Option<String>,
|
|
914
|
-
|
|
914
|
+
new_line: Option<usize>,
|
|
915
915
|
) {
|
|
916
916
|
// Helper function to get precedence, defined locally or globally
|
|
917
917
|
fn source_precedence(src: ConfigSource) -> u8 {
|
|
@@ -931,7 +931,7 @@ impl<T: Clone> SourcedValue<T> {
|
|
|
931
931
|
value: new_value,
|
|
932
932
|
source: new_source,
|
|
933
933
|
file: new_file,
|
|
934
|
-
line:
|
|
934
|
+
line: new_line,
|
|
935
935
|
});
|
|
936
936
|
}
|
|
937
937
|
}
|
|
@@ -1006,21 +1006,25 @@ impl SourcedConfig {
|
|
|
1006
1006
|
fragment.global.enable.value,
|
|
1007
1007
|
fragment.global.enable.source,
|
|
1008
1008
|
fragment.global.enable.overrides.first().and_then(|o| o.file.clone()),
|
|
1009
|
+
fragment.global.enable.overrides.first().and_then(|o| o.line),
|
|
1009
1010
|
);
|
|
1010
1011
|
self.global.disable.merge_override(
|
|
1011
1012
|
fragment.global.disable.value,
|
|
1012
1013
|
fragment.global.disable.source,
|
|
1013
1014
|
fragment.global.disable.overrides.first().and_then(|o| o.file.clone()),
|
|
1015
|
+
fragment.global.disable.overrides.first().and_then(|o| o.line),
|
|
1014
1016
|
);
|
|
1015
1017
|
self.global.include.merge_override(
|
|
1016
1018
|
fragment.global.include.value,
|
|
1017
1019
|
fragment.global.include.source,
|
|
1018
1020
|
fragment.global.include.overrides.first().and_then(|o| o.file.clone()),
|
|
1021
|
+
fragment.global.include.overrides.first().and_then(|o| o.line),
|
|
1019
1022
|
);
|
|
1020
1023
|
self.global.exclude.merge_override(
|
|
1021
1024
|
fragment.global.exclude.value,
|
|
1022
1025
|
fragment.global.exclude.source,
|
|
1023
1026
|
fragment.global.exclude.overrides.first().and_then(|o| o.file.clone()),
|
|
1027
|
+
fragment.global.exclude.overrides.first().and_then(|o| o.line),
|
|
1024
1028
|
);
|
|
1025
1029
|
self.global.respect_gitignore.merge_override(
|
|
1026
1030
|
fragment.global.respect_gitignore.value,
|
|
@@ -1031,6 +1035,12 @@ impl SourcedConfig {
|
|
|
1031
1035
|
.overrides
|
|
1032
1036
|
.first()
|
|
1033
1037
|
.and_then(|o| o.file.clone()),
|
|
1038
|
+
fragment
|
|
1039
|
+
.global
|
|
1040
|
+
.respect_gitignore
|
|
1041
|
+
.overrides
|
|
1042
|
+
.first()
|
|
1043
|
+
.and_then(|o| o.line),
|
|
1034
1044
|
);
|
|
1035
1045
|
|
|
1036
1046
|
// Merge output_format if present
|
|
@@ -1040,6 +1050,7 @@ impl SourcedConfig {
|
|
|
1040
1050
|
output_format_fragment.value,
|
|
1041
1051
|
output_format_fragment.source,
|
|
1042
1052
|
output_format_fragment.overrides.first().and_then(|o| o.file.clone()),
|
|
1053
|
+
output_format_fragment.overrides.first().and_then(|o| o.line),
|
|
1043
1054
|
);
|
|
1044
1055
|
} else {
|
|
1045
1056
|
self.global.output_format = Some(output_format_fragment);
|
|
@@ -1056,10 +1067,12 @@ impl SourcedConfig {
|
|
|
1056
1067
|
.entry(key.clone())
|
|
1057
1068
|
.or_insert_with(|| SourcedValue::new(sourced_value_fragment.value.clone(), ConfigSource::Default));
|
|
1058
1069
|
let file_from_fragment = sourced_value_fragment.overrides.first().and_then(|o| o.file.clone());
|
|
1070
|
+
let line_from_fragment = sourced_value_fragment.overrides.first().and_then(|o| o.line);
|
|
1059
1071
|
sv_entry.merge_override(
|
|
1060
1072
|
sourced_value_fragment.value, // Use the value from the fragment
|
|
1061
1073
|
sourced_value_fragment.source, // Use the source from the fragment
|
|
1062
1074
|
file_from_fragment, // Pass the file path from the fragment override
|
|
1075
|
+
line_from_fragment, // Pass the line number from the fragment override
|
|
1063
1076
|
);
|
|
1064
1077
|
}
|
|
1065
1078
|
}
|
|
@@ -1202,23 +1215,24 @@ impl SourcedConfig {
|
|
|
1202
1215
|
sourced_config
|
|
1203
1216
|
.global
|
|
1204
1217
|
.enable
|
|
1205
|
-
.merge_override(cli.enable.value.clone(), ConfigSource::Cli, None);
|
|
1218
|
+
.merge_override(cli.enable.value.clone(), ConfigSource::Cli, None, None);
|
|
1206
1219
|
sourced_config
|
|
1207
1220
|
.global
|
|
1208
1221
|
.disable
|
|
1209
|
-
.merge_override(cli.disable.value.clone(), ConfigSource::Cli, None);
|
|
1222
|
+
.merge_override(cli.disable.value.clone(), ConfigSource::Cli, None, None);
|
|
1210
1223
|
sourced_config
|
|
1211
1224
|
.global
|
|
1212
1225
|
.exclude
|
|
1213
|
-
.merge_override(cli.exclude.value.clone(), ConfigSource::Cli, None);
|
|
1226
|
+
.merge_override(cli.exclude.value.clone(), ConfigSource::Cli, None, None);
|
|
1214
1227
|
sourced_config
|
|
1215
1228
|
.global
|
|
1216
1229
|
.include
|
|
1217
|
-
.merge_override(cli.include.value.clone(), ConfigSource::Cli, None);
|
|
1230
|
+
.merge_override(cli.include.value.clone(), ConfigSource::Cli, None, None);
|
|
1218
1231
|
sourced_config.global.respect_gitignore.merge_override(
|
|
1219
1232
|
cli.respect_gitignore.value,
|
|
1220
1233
|
ConfigSource::Cli,
|
|
1221
1234
|
None,
|
|
1235
|
+
None,
|
|
1222
1236
|
);
|
|
1223
1237
|
// No rule-specific CLI overrides implemented yet
|
|
1224
1238
|
}
|