rumdl 0.0.131__tar.gz → 0.0.132__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.131 → rumdl-0.0.132}/CHANGELOG.md +7 -1
- {rumdl-0.0.131 → rumdl-0.0.132}/Cargo.lock +33 -15
- {rumdl-0.0.131 → rumdl-0.0.132}/Cargo.toml +2 -1
- {rumdl-0.0.131 → rumdl-0.0.132}/PKG-INFO +34 -2
- {rumdl-0.0.131 → rumdl-0.0.132}/README.md +33 -1
- {rumdl-0.0.131 → rumdl-0.0.132}/src/config.rs +206 -104
- {rumdl-0.0.131 → rumdl-0.0.132}/src/lint_context.rs +27 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/lsp/server.rs +228 -7
- {rumdl-0.0.131 → rumdl-0.0.132}/src/lsp/types.rs +10 -10
- {rumdl-0.0.131 → rumdl-0.0.132}/src/main.rs +10 -18
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/heading_utils.rs +6 -5
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/list_utils.rs +24 -7
- rumdl-0.0.132/src/rules/md011_no_reversed_links.rs +280 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md013_line_length/md013_config.rs +3 -18
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md013_line_length.rs +29 -68
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md014_commands_show_output.rs +27 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md030_list_marker_space.rs +70 -10
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md034_no_bare_urls.rs +13 -9
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md040_fenced_code_language.rs +3 -3
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md041_first_line_heading.rs +22 -5
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md043_required_headings.rs +27 -11
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md047_single_trailing_newline.rs +79 -14
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md050_strong_style.rs +3 -2
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md052_reference_links_images.rs +7 -6
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/fix_utils.rs +4 -18
- rumdl-0.0.132/src/utils/line_ending.rs +125 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mod.rs +5 -8
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/config_application_tests.rs +1 -1
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/config_tests.rs +190 -0
- rumdl-0.0.132/tests/lsp_formatting_tests.rs +500 -0
- rumdl-0.0.132/tests/lsp_initialization_options_test.rs +295 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/lsp_integration_tests.rs +2 -3
- rumdl-0.0.132/tests/lsp_mkdocs_flavor_test.rs +213 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/lsp_tests.rs +8 -4
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md001_test.rs +27 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md003_test.rs +28 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md011_test.rs +14 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md013_test.rs +56 -59
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md030_test.rs +38 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md043_test.rs +6 -3
- rumdl-0.0.131/src/rules/md011_no_reversed_links.rs +0 -796
- {rumdl-0.0.131 → rumdl-0.0.132}/.config/nextest.toml +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/.mise.toml +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/.pre-commit-config.yaml +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/.rumdl.toml +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/.rustfmt.toml +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/LICENSE +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/MANIFEST.in +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/Makefile +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/assets/logo.png +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benches/range_performance.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benchmark/bin/bench_lint_context.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benchmark/bin/benchmark.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benchmark/bin/benchmark_rule.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benchmark/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/benchmark/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/RULES.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/global-settings.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md001.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md002.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md003.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md004.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md005.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md006.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md007.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md009.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md010.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md011.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md012.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md013.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md014.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md018.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md019.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md020.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md021.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md022.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md023.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md024.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md025.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md026.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md027.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md028.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md029.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md030.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md031.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md032.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md033.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md034.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md035.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md036.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md037.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md038.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md039.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md040.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md041.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md042.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md043.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md044.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md045.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md046.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md047.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md048.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md049.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md050.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md051.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md052.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md053.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md054.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md055.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md056.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md057.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/md058.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/parity_check.py +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/pyproject.toml +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/python/MANIFEST.in +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/rumdl.toml.example +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/rust-toolchain.toml +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/scripts/generate-downloads-table.sh +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/scripts/pre-release.sh +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/scripts/setup-pre-commit.sh +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/scripts/update-pre-commit-docs.sh +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/exit_codes.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/inline_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/lib.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/output/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/parallel.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/performance.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/profiling.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/python.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rule.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rule_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md029_ordered_list_prefix.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md032_blanks_around_lists.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md036_no_emphasis_only_first.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md037_spaces_around_emphasis.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md051_link_fragments.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/anchor_styles/github.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/anchor_styles/jekyll.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/anchor_styles/kramdown.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/anchor_styles/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/header_id_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/kramdown_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocs_admonitions.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocs_common.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocs_critic.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocs_footnotes.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocs_patterns.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocs_snippets.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocs_tabs.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocs_test_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/mkdocstrings_refs.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/skip_context.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/table_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/utils/text_reflow.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/src/vscode.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/cli_explain_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/cli_flag_precedence_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/common/cli_test_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/common/fixtures.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/common/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/common/test_utils.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/config_upward_traversal_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/deeply_nested_lists_performance_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/escaped_brackets_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/fixable_unfixable_config_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/init_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/inline_config_blocks_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/kramdown_integration_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/lib.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/lsp_memory_leak_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/md013_reflow_integration_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/nested_code_block_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/perf_check.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/python_bindings_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/emphasis_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/heading_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/inline_content_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/link_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/list_rules_integration_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md005_dynamic_indent_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md005_unicode_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md026_kramdown_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md029_code_block_separation_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md029_fix_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md029_issue42_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md029_markdownlint_parity_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md029_unicode_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md031_kramdown_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md033_kramdown_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md034_ipv6_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md037_kramdown_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md038_nested_backticks_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_comprehensive_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_property_based_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_regression_prevention_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md051_unicode_security_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md058_kramdown_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/mkdocs_admonitions_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/mkdocs_edge_cases_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/mkdocs_extensions_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/mkdocs_snippets_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/rules_mod_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/skip_context_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/test_underscore_edge_cases.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/thread_safety_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/unfixable_rules_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/vscode_extension_fixes.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/vscode_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/vscode_tests.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/vscode_windows_comprehensive_test.rs +0 -0
- {rumdl-0.0.131 → rumdl-0.0.132}/tests/vscode_windows_test.rs +0 -0
|
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.0.132] - 2025-08-30
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **LSP**: Added "Fix all rumdl issues" code action for bulk fixes when multiple fixable diagnostics are present
|
|
14
|
+
|
|
10
15
|
## [0.0.131] - 2025-08-28
|
|
11
16
|
|
|
12
17
|
### Fixed
|
|
@@ -514,7 +519,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
514
519
|
|
|
515
520
|
- Initial implementation of remaining rules for markdownlint parity
|
|
516
521
|
|
|
517
|
-
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.
|
|
522
|
+
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.132...HEAD
|
|
523
|
+
[0.0.132]: https://github.com/rvben/rumdl/compare/v0.0.131...v0.0.132
|
|
518
524
|
[0.0.131]: https://github.com/rvben/rumdl/compare/v0.0.130...v0.0.131
|
|
519
525
|
[0.0.130]: https://github.com/rvben/rumdl/compare/v0.0.129...v0.0.130
|
|
520
526
|
[0.0.129]: https://github.com/rvben/rumdl/compare/v0.0.128...v0.0.129
|
|
@@ -505,6 +505,17 @@ dependencies = [
|
|
|
505
505
|
"windows-sys 0.60.2",
|
|
506
506
|
]
|
|
507
507
|
|
|
508
|
+
[[package]]
|
|
509
|
+
name = "etcetera"
|
|
510
|
+
version = "0.8.0"
|
|
511
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
512
|
+
checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943"
|
|
513
|
+
dependencies = [
|
|
514
|
+
"cfg-if",
|
|
515
|
+
"home",
|
|
516
|
+
"windows-sys 0.48.0",
|
|
517
|
+
]
|
|
518
|
+
|
|
508
519
|
[[package]]
|
|
509
520
|
name = "fancy-regex"
|
|
510
521
|
version = "0.14.0"
|
|
@@ -646,9 +657,9 @@ dependencies = [
|
|
|
646
657
|
|
|
647
658
|
[[package]]
|
|
648
659
|
name = "getopts"
|
|
649
|
-
version = "0.2.
|
|
660
|
+
version = "0.2.24"
|
|
650
661
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
651
|
-
checksum = "
|
|
662
|
+
checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df"
|
|
652
663
|
dependencies = [
|
|
653
664
|
"unicode-width",
|
|
654
665
|
]
|
|
@@ -662,7 +673,7 @@ dependencies = [
|
|
|
662
673
|
"cfg-if",
|
|
663
674
|
"libc",
|
|
664
675
|
"r-efi",
|
|
665
|
-
"wasi 0.14.
|
|
676
|
+
"wasi 0.14.3+wasi-0.2.4",
|
|
666
677
|
]
|
|
667
678
|
|
|
668
679
|
[[package]]
|
|
@@ -718,6 +729,15 @@ version = "0.5.2"
|
|
|
718
729
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
719
730
|
checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
|
|
720
731
|
|
|
732
|
+
[[package]]
|
|
733
|
+
name = "home"
|
|
734
|
+
version = "0.5.11"
|
|
735
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
736
|
+
checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"
|
|
737
|
+
dependencies = [
|
|
738
|
+
"windows-sys 0.59.0",
|
|
739
|
+
]
|
|
740
|
+
|
|
721
741
|
[[package]]
|
|
722
742
|
name = "httparse"
|
|
723
743
|
version = "1.10.1"
|
|
@@ -1319,9 +1339,9 @@ dependencies = [
|
|
|
1319
1339
|
|
|
1320
1340
|
[[package]]
|
|
1321
1341
|
name = "potential_utf"
|
|
1322
|
-
version = "0.1.
|
|
1342
|
+
version = "0.1.3"
|
|
1323
1343
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1324
|
-
checksum = "
|
|
1344
|
+
checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a"
|
|
1325
1345
|
dependencies = [
|
|
1326
1346
|
"zerovec",
|
|
1327
1347
|
]
|
|
@@ -1605,7 +1625,7 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
|
|
|
1605
1625
|
|
|
1606
1626
|
[[package]]
|
|
1607
1627
|
name = "rumdl"
|
|
1608
|
-
version = "0.0.
|
|
1628
|
+
version = "0.0.132"
|
|
1609
1629
|
dependencies = [
|
|
1610
1630
|
"anyhow",
|
|
1611
1631
|
"assert_cmd",
|
|
@@ -1615,6 +1635,7 @@ dependencies = [
|
|
|
1615
1635
|
"criterion",
|
|
1616
1636
|
"dyn-clone",
|
|
1617
1637
|
"env_logger",
|
|
1638
|
+
"etcetera",
|
|
1618
1639
|
"fancy-regex",
|
|
1619
1640
|
"globset",
|
|
1620
1641
|
"ignore",
|
|
@@ -2242,11 +2263,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
|
|
2242
2263
|
|
|
2243
2264
|
[[package]]
|
|
2244
2265
|
name = "wasi"
|
|
2245
|
-
version = "0.14.
|
|
2266
|
+
version = "0.14.3+wasi-0.2.4"
|
|
2246
2267
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2247
|
-
checksum = "
|
|
2268
|
+
checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95"
|
|
2248
2269
|
dependencies = [
|
|
2249
|
-
"wit-bindgen
|
|
2270
|
+
"wit-bindgen",
|
|
2250
2271
|
]
|
|
2251
2272
|
|
|
2252
2273
|
[[package]]
|
|
@@ -2608,13 +2629,10 @@ dependencies = [
|
|
|
2608
2629
|
]
|
|
2609
2630
|
|
|
2610
2631
|
[[package]]
|
|
2611
|
-
name = "wit-bindgen
|
|
2612
|
-
version = "0.
|
|
2632
|
+
name = "wit-bindgen"
|
|
2633
|
+
version = "0.45.0"
|
|
2613
2634
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2614
|
-
checksum = "
|
|
2615
|
-
dependencies = [
|
|
2616
|
-
"bitflags 2.9.3",
|
|
2617
|
-
]
|
|
2635
|
+
checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814"
|
|
2618
2636
|
|
|
2619
2637
|
[[package]]
|
|
2620
2638
|
name = "writeable"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "rumdl"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.132"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
rust-version = "1.89.0"
|
|
6
6
|
description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
|
|
@@ -117,6 +117,7 @@ env_logger = "0.11"
|
|
|
117
117
|
num_cpus = "1.16"
|
|
118
118
|
chrono = { version = "0.4", features = ["serde"] }
|
|
119
119
|
notify = "6.1"
|
|
120
|
+
etcetera = "0.8"
|
|
120
121
|
|
|
121
122
|
[features]
|
|
122
123
|
default = ["parallel"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rumdl
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.132
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -118,6 +118,7 @@ It offers:
|
|
|
118
118
|
- [Usage Examples](#usage-examples)
|
|
119
119
|
- [Configuration](#configuration)
|
|
120
120
|
- [Configuration Discovery](#configuration-discovery)
|
|
121
|
+
- [Global Configuration](#global-configuration)
|
|
121
122
|
- [Markdownlint Migration](#markdownlint-migration)
|
|
122
123
|
- [Configuration File Example](#configuration-file-example)
|
|
123
124
|
- [Initializing Configuration](#initializing-configuration)
|
|
@@ -342,7 +343,7 @@ rumdl implements 54 lint rules for Markdown files. Here are some key rule catego
|
|
|
342
343
|
For a complete list of rules and their descriptions, see our [documentation](https://github.com/rvben/rumdl/blob/main/docs/RULES.md) or run:
|
|
343
344
|
|
|
344
345
|
```bash
|
|
345
|
-
rumdl
|
|
346
|
+
rumdl rule
|
|
346
347
|
```
|
|
347
348
|
|
|
348
349
|
## Command-line Interface
|
|
@@ -577,6 +578,7 @@ The search follows these rules:
|
|
|
577
578
|
- Stops at the first configuration file found
|
|
578
579
|
- Stops searching when it encounters a `.git` directory (project boundary)
|
|
579
580
|
- Maximum traversal depth of 100 directories
|
|
581
|
+
- Falls back to user configuration if no project configuration is found (see Global Configuration below)
|
|
580
582
|
|
|
581
583
|
To disable all configuration discovery and use only built-in defaults, use the `--isolated` flag:
|
|
582
584
|
|
|
@@ -588,6 +590,36 @@ rumdl check .
|
|
|
588
590
|
rumdl check --isolated .
|
|
589
591
|
```
|
|
590
592
|
|
|
593
|
+
### Global Configuration
|
|
594
|
+
|
|
595
|
+
When no project configuration is found, rumdl will check for a user-level configuration file in your platform's standard config directory:
|
|
596
|
+
|
|
597
|
+
**Location:**
|
|
598
|
+
|
|
599
|
+
- **Linux/macOS**: `~/.config/rumdl/` (respects `XDG_CONFIG_HOME` if set)
|
|
600
|
+
- **Windows**: `%APPDATA%\rumdl\`
|
|
601
|
+
|
|
602
|
+
**Files checked (in order):**
|
|
603
|
+
|
|
604
|
+
1. `.rumdl.toml`
|
|
605
|
+
2. `rumdl.toml`
|
|
606
|
+
3. `pyproject.toml` (must contain `[tool.rumdl]` section)
|
|
607
|
+
|
|
608
|
+
This allows you to set personal preferences that apply to all projects without local configuration.
|
|
609
|
+
|
|
610
|
+
**Example:** Create `~/.config/rumdl/rumdl.toml`:
|
|
611
|
+
|
|
612
|
+
```toml
|
|
613
|
+
[global]
|
|
614
|
+
line-length = 100
|
|
615
|
+
disable = ["MD013", "MD041"]
|
|
616
|
+
|
|
617
|
+
[MD007]
|
|
618
|
+
indent = 2
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
**Note:** User configuration is only used when no project configuration exists. Project configurations always take precedence.
|
|
622
|
+
|
|
591
623
|
### Markdownlint Migration
|
|
592
624
|
|
|
593
625
|
rumdl provides seamless compatibility with existing markdownlint configurations:
|
|
@@ -89,6 +89,7 @@ It offers:
|
|
|
89
89
|
- [Usage Examples](#usage-examples)
|
|
90
90
|
- [Configuration](#configuration)
|
|
91
91
|
- [Configuration Discovery](#configuration-discovery)
|
|
92
|
+
- [Global Configuration](#global-configuration)
|
|
92
93
|
- [Markdownlint Migration](#markdownlint-migration)
|
|
93
94
|
- [Configuration File Example](#configuration-file-example)
|
|
94
95
|
- [Initializing Configuration](#initializing-configuration)
|
|
@@ -313,7 +314,7 @@ rumdl implements 54 lint rules for Markdown files. Here are some key rule catego
|
|
|
313
314
|
For a complete list of rules and their descriptions, see our [documentation](https://github.com/rvben/rumdl/blob/main/docs/RULES.md) or run:
|
|
314
315
|
|
|
315
316
|
```bash
|
|
316
|
-
rumdl
|
|
317
|
+
rumdl rule
|
|
317
318
|
```
|
|
318
319
|
|
|
319
320
|
## Command-line Interface
|
|
@@ -548,6 +549,7 @@ The search follows these rules:
|
|
|
548
549
|
- Stops at the first configuration file found
|
|
549
550
|
- Stops searching when it encounters a `.git` directory (project boundary)
|
|
550
551
|
- Maximum traversal depth of 100 directories
|
|
552
|
+
- Falls back to user configuration if no project configuration is found (see Global Configuration below)
|
|
551
553
|
|
|
552
554
|
To disable all configuration discovery and use only built-in defaults, use the `--isolated` flag:
|
|
553
555
|
|
|
@@ -559,6 +561,36 @@ rumdl check .
|
|
|
559
561
|
rumdl check --isolated .
|
|
560
562
|
```
|
|
561
563
|
|
|
564
|
+
### Global Configuration
|
|
565
|
+
|
|
566
|
+
When no project configuration is found, rumdl will check for a user-level configuration file in your platform's standard config directory:
|
|
567
|
+
|
|
568
|
+
**Location:**
|
|
569
|
+
|
|
570
|
+
- **Linux/macOS**: `~/.config/rumdl/` (respects `XDG_CONFIG_HOME` if set)
|
|
571
|
+
- **Windows**: `%APPDATA%\rumdl\`
|
|
572
|
+
|
|
573
|
+
**Files checked (in order):**
|
|
574
|
+
|
|
575
|
+
1. `.rumdl.toml`
|
|
576
|
+
2. `rumdl.toml`
|
|
577
|
+
3. `pyproject.toml` (must contain `[tool.rumdl]` section)
|
|
578
|
+
|
|
579
|
+
This allows you to set personal preferences that apply to all projects without local configuration.
|
|
580
|
+
|
|
581
|
+
**Example:** Create `~/.config/rumdl/rumdl.toml`:
|
|
582
|
+
|
|
583
|
+
```toml
|
|
584
|
+
[global]
|
|
585
|
+
line-length = 100
|
|
586
|
+
disable = ["MD013", "MD041"]
|
|
587
|
+
|
|
588
|
+
[MD007]
|
|
589
|
+
indent = 2
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
**Note:** User configuration is only used when no project configuration exists. Project configurations always take precedence.
|
|
593
|
+
|
|
562
594
|
### Markdownlint Migration
|
|
563
595
|
|
|
564
596
|
rumdl provides seamless compatibility with existing markdownlint configurations:
|
|
@@ -1339,6 +1339,60 @@ impl SourcedConfig {
|
|
|
1339
1339
|
None
|
|
1340
1340
|
}
|
|
1341
1341
|
|
|
1342
|
+
/// Discover user-level configuration file from platform-specific config directory.
|
|
1343
|
+
/// Returns the first configuration file found in the user config directory.
|
|
1344
|
+
fn user_configuration_path() -> Option<std::path::PathBuf> {
|
|
1345
|
+
use etcetera::{BaseStrategy, choose_base_strategy};
|
|
1346
|
+
|
|
1347
|
+
match choose_base_strategy() {
|
|
1348
|
+
Ok(strategy) => {
|
|
1349
|
+
let config_dir = strategy.config_dir().join("rumdl");
|
|
1350
|
+
|
|
1351
|
+
// Check for config files in precedence order (same as project discovery)
|
|
1352
|
+
const USER_CONFIG_FILES: &[&str] = &[".rumdl.toml", "rumdl.toml", "pyproject.toml"];
|
|
1353
|
+
|
|
1354
|
+
log::debug!(
|
|
1355
|
+
"[rumdl-config] Checking for user configuration in: {}",
|
|
1356
|
+
config_dir.display()
|
|
1357
|
+
);
|
|
1358
|
+
|
|
1359
|
+
for filename in USER_CONFIG_FILES {
|
|
1360
|
+
let config_path = config_dir.join(filename);
|
|
1361
|
+
|
|
1362
|
+
if config_path.exists() {
|
|
1363
|
+
// For pyproject.toml, verify it contains [tool.rumdl] section
|
|
1364
|
+
if *filename == "pyproject.toml" {
|
|
1365
|
+
if let Ok(content) = std::fs::read_to_string(&config_path) {
|
|
1366
|
+
if content.contains("[tool.rumdl]") || content.contains("tool.rumdl") {
|
|
1367
|
+
log::debug!(
|
|
1368
|
+
"[rumdl-config] Found user configuration at: {}",
|
|
1369
|
+
config_path.display()
|
|
1370
|
+
);
|
|
1371
|
+
return Some(config_path);
|
|
1372
|
+
}
|
|
1373
|
+
log::debug!("[rumdl-config] Found user pyproject.toml but no [tool.rumdl] section");
|
|
1374
|
+
continue;
|
|
1375
|
+
}
|
|
1376
|
+
} else {
|
|
1377
|
+
log::debug!("[rumdl-config] Found user configuration at: {}", config_path.display());
|
|
1378
|
+
return Some(config_path);
|
|
1379
|
+
}
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
log::debug!(
|
|
1384
|
+
"[rumdl-config] No user configuration found in: {}",
|
|
1385
|
+
config_dir.display()
|
|
1386
|
+
);
|
|
1387
|
+
None
|
|
1388
|
+
}
|
|
1389
|
+
Err(e) => {
|
|
1390
|
+
log::debug!("[rumdl-config] Failed to determine user config directory: {e}");
|
|
1391
|
+
None
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1342
1396
|
/// Load and merge configurations from files and CLI overrides.
|
|
1343
1397
|
/// If skip_auto_discovery is true, only explicit config paths are loaded.
|
|
1344
1398
|
pub fn load_with_discovery(
|
|
@@ -1409,7 +1463,36 @@ impl SourcedConfig {
|
|
|
1409
1463
|
|
|
1410
1464
|
// Only perform auto-discovery if not skipped AND no explicit config path provided
|
|
1411
1465
|
if !skip_auto_discovery && config_path.is_none() {
|
|
1412
|
-
//
|
|
1466
|
+
// Step 1: Load user configuration first (as a base)
|
|
1467
|
+
if let Some(user_config_path) = Self::user_configuration_path() {
|
|
1468
|
+
let path_str = user_config_path.display().to_string();
|
|
1469
|
+
let filename = user_config_path.file_name().and_then(|n| n.to_str()).unwrap_or("");
|
|
1470
|
+
|
|
1471
|
+
log::debug!("[rumdl-config] Loading user configuration file: {path_str}");
|
|
1472
|
+
|
|
1473
|
+
if filename == "pyproject.toml" {
|
|
1474
|
+
let content = std::fs::read_to_string(&user_config_path).map_err(|e| ConfigError::IoError {
|
|
1475
|
+
source: e,
|
|
1476
|
+
path: path_str.clone(),
|
|
1477
|
+
})?;
|
|
1478
|
+
if let Some(fragment) = parse_pyproject_toml(&content, &path_str)? {
|
|
1479
|
+
sourced_config.merge(fragment);
|
|
1480
|
+
sourced_config.loaded_files.push(path_str);
|
|
1481
|
+
}
|
|
1482
|
+
} else {
|
|
1483
|
+
let content = std::fs::read_to_string(&user_config_path).map_err(|e| ConfigError::IoError {
|
|
1484
|
+
source: e,
|
|
1485
|
+
path: path_str.clone(),
|
|
1486
|
+
})?;
|
|
1487
|
+
let fragment = parse_rumdl_toml(&content, &path_str)?;
|
|
1488
|
+
sourced_config.merge(fragment);
|
|
1489
|
+
sourced_config.loaded_files.push(path_str);
|
|
1490
|
+
}
|
|
1491
|
+
} else {
|
|
1492
|
+
log::debug!("[rumdl-config] No user configuration file found");
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
// Step 2: Look for project configuration files (override user config)
|
|
1413
1496
|
if let Some(config_file) = Self::discover_config_upward() {
|
|
1414
1497
|
let path_str = config_file.display().to_string();
|
|
1415
1498
|
let filename = config_file.file_name().and_then(|n| n.to_str()).unwrap_or("");
|
|
@@ -1437,13 +1520,15 @@ impl SourcedConfig {
|
|
|
1437
1520
|
} else {
|
|
1438
1521
|
log::debug!("[rumdl-config] No configuration file found via upward traversal");
|
|
1439
1522
|
|
|
1440
|
-
//
|
|
1523
|
+
// Step 3: If no project config found, fallback to markdownlint config in current directory
|
|
1524
|
+
let mut found_markdownlint = false;
|
|
1441
1525
|
for filename in MARKDOWNLINT_CONFIG_FILES {
|
|
1442
1526
|
if std::path::Path::new(filename).exists() {
|
|
1443
1527
|
match load_from_markdownlint(filename) {
|
|
1444
1528
|
Ok(fragment) => {
|
|
1445
1529
|
sourced_config.merge(fragment);
|
|
1446
1530
|
sourced_config.loaded_files.push(filename.to_string());
|
|
1531
|
+
found_markdownlint = true;
|
|
1447
1532
|
break; // Load only the first one found
|
|
1448
1533
|
}
|
|
1449
1534
|
Err(_e) => {
|
|
@@ -1452,6 +1537,10 @@ impl SourcedConfig {
|
|
|
1452
1537
|
}
|
|
1453
1538
|
}
|
|
1454
1539
|
}
|
|
1540
|
+
|
|
1541
|
+
if !found_markdownlint {
|
|
1542
|
+
log::debug!("[rumdl-config] No markdownlint configuration file found");
|
|
1543
|
+
}
|
|
1455
1544
|
}
|
|
1456
1545
|
}
|
|
1457
1546
|
|
|
@@ -1739,120 +1828,133 @@ fn parse_pyproject_toml(content: &str, path: &str) -> Result<Option<SourcedConfi
|
|
|
1739
1828
|
let source = ConfigSource::PyprojectToml;
|
|
1740
1829
|
let file = Some(path.to_string());
|
|
1741
1830
|
|
|
1742
|
-
// 1. Handle [tool.rumdl]
|
|
1831
|
+
// 1. Handle [tool.rumdl] and [tool.rumdl.global] sections
|
|
1743
1832
|
if let Some(rumdl_config) = doc.get("tool").and_then(|t| t.get("rumdl"))
|
|
1744
1833
|
&& let Some(rumdl_table) = rumdl_config.as_table()
|
|
1745
1834
|
{
|
|
1746
|
-
//
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
.
|
|
1754
|
-
.enable
|
|
1755
|
-
.push_override(normalized_values, source, file.clone(), None);
|
|
1756
|
-
}
|
|
1757
|
-
if let Some(disable) = rumdl_table.get("disable")
|
|
1758
|
-
&& let Ok(values) = Vec::<String>::deserialize(disable.clone())
|
|
1759
|
-
{
|
|
1760
|
-
// Re-enable normalization
|
|
1761
|
-
let normalized_values: Vec<String> = values.into_iter().map(|s| normalize_key(&s)).collect();
|
|
1762
|
-
fragment
|
|
1763
|
-
.global
|
|
1764
|
-
.disable
|
|
1765
|
-
.push_override(normalized_values, source, file.clone(), None);
|
|
1766
|
-
}
|
|
1767
|
-
if let Some(include) = rumdl_table.get("include")
|
|
1768
|
-
&& let Ok(values) = Vec::<String>::deserialize(include.clone())
|
|
1769
|
-
{
|
|
1770
|
-
fragment
|
|
1771
|
-
.global
|
|
1772
|
-
.include
|
|
1773
|
-
.push_override(values, source, file.clone(), None);
|
|
1774
|
-
}
|
|
1775
|
-
if let Some(exclude) = rumdl_table.get("exclude")
|
|
1776
|
-
&& let Ok(values) = Vec::<String>::deserialize(exclude.clone())
|
|
1777
|
-
{
|
|
1778
|
-
fragment
|
|
1779
|
-
.global
|
|
1780
|
-
.exclude
|
|
1781
|
-
.push_override(values, source, file.clone(), None);
|
|
1782
|
-
}
|
|
1783
|
-
if let Some(respect_gitignore) = rumdl_table
|
|
1784
|
-
.get("respect-gitignore")
|
|
1785
|
-
.or_else(|| rumdl_table.get("respect_gitignore"))
|
|
1786
|
-
&& let Ok(value) = bool::deserialize(respect_gitignore.clone())
|
|
1787
|
-
{
|
|
1788
|
-
fragment
|
|
1789
|
-
.global
|
|
1790
|
-
.respect_gitignore
|
|
1791
|
-
.push_override(value, source, file.clone(), None);
|
|
1792
|
-
}
|
|
1793
|
-
if let Some(output_format) = rumdl_table
|
|
1794
|
-
.get("output-format")
|
|
1795
|
-
.or_else(|| rumdl_table.get("output_format"))
|
|
1796
|
-
&& let Ok(value) = String::deserialize(output_format.clone())
|
|
1797
|
-
{
|
|
1798
|
-
if fragment.global.output_format.is_none() {
|
|
1799
|
-
fragment.global.output_format = Some(SourcedValue::new(value.clone(), source));
|
|
1800
|
-
} else {
|
|
1835
|
+
// Helper function to extract global config from a table
|
|
1836
|
+
let extract_global_config = |fragment: &mut SourcedConfigFragment, table: &toml::value::Table| {
|
|
1837
|
+
// Extract global options from the given table
|
|
1838
|
+
if let Some(enable) = table.get("enable")
|
|
1839
|
+
&& let Ok(values) = Vec::<String>::deserialize(enable.clone())
|
|
1840
|
+
{
|
|
1841
|
+
// Normalize rule names in the list
|
|
1842
|
+
let normalized_values = values.into_iter().map(|s| normalize_key(&s)).collect();
|
|
1801
1843
|
fragment
|
|
1802
1844
|
.global
|
|
1803
|
-
.
|
|
1804
|
-
.
|
|
1805
|
-
|
|
1845
|
+
.enable
|
|
1846
|
+
.push_override(normalized_values, source, file.clone(), None);
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1849
|
+
if let Some(disable) = table.get("disable")
|
|
1850
|
+
&& let Ok(values) = Vec::<String>::deserialize(disable.clone())
|
|
1851
|
+
{
|
|
1852
|
+
// Re-enable normalization
|
|
1853
|
+
let normalized_values: Vec<String> = values.into_iter().map(|s| normalize_key(&s)).collect();
|
|
1854
|
+
fragment
|
|
1855
|
+
.global
|
|
1856
|
+
.disable
|
|
1857
|
+
.push_override(normalized_values, source, file.clone(), None);
|
|
1858
|
+
}
|
|
1859
|
+
|
|
1860
|
+
if let Some(include) = table.get("include")
|
|
1861
|
+
&& let Ok(values) = Vec::<String>::deserialize(include.clone())
|
|
1862
|
+
{
|
|
1863
|
+
fragment
|
|
1864
|
+
.global
|
|
1865
|
+
.include
|
|
1866
|
+
.push_override(values, source, file.clone(), None);
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
if let Some(exclude) = table.get("exclude")
|
|
1870
|
+
&& let Ok(values) = Vec::<String>::deserialize(exclude.clone())
|
|
1871
|
+
{
|
|
1872
|
+
fragment
|
|
1873
|
+
.global
|
|
1874
|
+
.exclude
|
|
1875
|
+
.push_override(values, source, file.clone(), None);
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1878
|
+
if let Some(respect_gitignore) = table
|
|
1879
|
+
.get("respect-gitignore")
|
|
1880
|
+
.or_else(|| table.get("respect_gitignore"))
|
|
1881
|
+
&& let Ok(value) = bool::deserialize(respect_gitignore.clone())
|
|
1882
|
+
{
|
|
1883
|
+
fragment
|
|
1884
|
+
.global
|
|
1885
|
+
.respect_gitignore
|
|
1806
1886
|
.push_override(value, source, file.clone(), None);
|
|
1807
1887
|
}
|
|
1808
|
-
}
|
|
1809
|
-
if let Some(fixable) = rumdl_table.get("fixable")
|
|
1810
|
-
&& let Ok(values) = Vec::<String>::deserialize(fixable.clone())
|
|
1811
|
-
{
|
|
1812
|
-
let normalized_values = values.into_iter().map(|s| normalize_key(&s)).collect();
|
|
1813
|
-
fragment
|
|
1814
|
-
.global
|
|
1815
|
-
.fixable
|
|
1816
|
-
.push_override(normalized_values, source, file.clone(), None);
|
|
1817
|
-
}
|
|
1818
|
-
if let Some(unfixable) = rumdl_table.get("unfixable")
|
|
1819
|
-
&& let Ok(values) = Vec::<String>::deserialize(unfixable.clone())
|
|
1820
|
-
{
|
|
1821
|
-
let normalized_values = values.into_iter().map(|s| normalize_key(&s)).collect();
|
|
1822
|
-
fragment
|
|
1823
|
-
.global
|
|
1824
|
-
.unfixable
|
|
1825
|
-
.push_override(normalized_values, source, file.clone(), None);
|
|
1826
|
-
}
|
|
1827
|
-
if let Some(flavor) = rumdl_table.get("flavor")
|
|
1828
|
-
&& let Ok(value) = MarkdownFlavor::deserialize(flavor.clone())
|
|
1829
|
-
{
|
|
1830
|
-
fragment.global.flavor.push_override(value, source, file.clone(), None);
|
|
1831
|
-
}
|
|
1832
1888
|
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
if val.is_integer() {
|
|
1839
|
-
found_line_length_val = Some(val.clone());
|
|
1840
|
-
break;
|
|
1889
|
+
if let Some(output_format) = table.get("output-format").or_else(|| table.get("output_format"))
|
|
1890
|
+
&& let Ok(value) = String::deserialize(output_format.clone())
|
|
1891
|
+
{
|
|
1892
|
+
if fragment.global.output_format.is_none() {
|
|
1893
|
+
fragment.global.output_format = Some(SourcedValue::new(value.clone(), source));
|
|
1841
1894
|
} else {
|
|
1842
|
-
|
|
1895
|
+
fragment
|
|
1896
|
+
.global
|
|
1897
|
+
.output_format
|
|
1898
|
+
.as_mut()
|
|
1899
|
+
.unwrap()
|
|
1900
|
+
.push_override(value, source, file.clone(), None);
|
|
1843
1901
|
}
|
|
1844
1902
|
}
|
|
1903
|
+
|
|
1904
|
+
if let Some(fixable) = table.get("fixable")
|
|
1905
|
+
&& let Ok(values) = Vec::<String>::deserialize(fixable.clone())
|
|
1906
|
+
{
|
|
1907
|
+
let normalized_values = values.into_iter().map(|s| normalize_key(&s)).collect();
|
|
1908
|
+
fragment
|
|
1909
|
+
.global
|
|
1910
|
+
.fixable
|
|
1911
|
+
.push_override(normalized_values, source, file.clone(), None);
|
|
1912
|
+
}
|
|
1913
|
+
|
|
1914
|
+
if let Some(unfixable) = table.get("unfixable")
|
|
1915
|
+
&& let Ok(values) = Vec::<String>::deserialize(unfixable.clone())
|
|
1916
|
+
{
|
|
1917
|
+
let normalized_values = values.into_iter().map(|s| normalize_key(&s)).collect();
|
|
1918
|
+
fragment
|
|
1919
|
+
.global
|
|
1920
|
+
.unfixable
|
|
1921
|
+
.push_override(normalized_values, source, file.clone(), None);
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1924
|
+
if let Some(flavor) = table.get("flavor")
|
|
1925
|
+
&& let Ok(value) = MarkdownFlavor::deserialize(flavor.clone())
|
|
1926
|
+
{
|
|
1927
|
+
fragment.global.flavor.push_override(value, source, file.clone(), None);
|
|
1928
|
+
}
|
|
1929
|
+
|
|
1930
|
+
// Handle line-length special case - this should set the global line_length
|
|
1931
|
+
if let Some(line_length) = table.get("line-length").or_else(|| table.get("line_length"))
|
|
1932
|
+
&& let Ok(value) = u64::deserialize(line_length.clone())
|
|
1933
|
+
{
|
|
1934
|
+
fragment
|
|
1935
|
+
.global
|
|
1936
|
+
.line_length
|
|
1937
|
+
.push_override(value, source, file.clone(), None);
|
|
1938
|
+
|
|
1939
|
+
// Also add to MD013 rule config for backward compatibility
|
|
1940
|
+
let norm_md013_key = normalize_key("MD013");
|
|
1941
|
+
let rule_entry = fragment.rules.entry(norm_md013_key).or_default();
|
|
1942
|
+
let norm_line_length_key = normalize_key("line-length");
|
|
1943
|
+
let sv = rule_entry
|
|
1944
|
+
.values
|
|
1945
|
+
.entry(norm_line_length_key)
|
|
1946
|
+
.or_insert_with(|| SourcedValue::new(line_length.clone(), ConfigSource::Default));
|
|
1947
|
+
sv.push_override(line_length.clone(), source, file.clone(), None);
|
|
1948
|
+
}
|
|
1949
|
+
};
|
|
1950
|
+
|
|
1951
|
+
// First, check for [tool.rumdl.global] section
|
|
1952
|
+
if let Some(global_table) = rumdl_table.get("global").and_then(|g| g.as_table()) {
|
|
1953
|
+
extract_global_config(&mut fragment, global_table);
|
|
1845
1954
|
}
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
let norm_line_length_key = normalize_key("line-length"); // Ensure "line-length"
|
|
1850
|
-
let sv = rule_entry
|
|
1851
|
-
.values
|
|
1852
|
-
.entry(norm_line_length_key)
|
|
1853
|
-
.or_insert_with(|| SourcedValue::new(line_length_val.clone(), ConfigSource::Default));
|
|
1854
|
-
sv.push_override(line_length_val, source, file.clone(), None);
|
|
1855
|
-
}
|
|
1955
|
+
|
|
1956
|
+
// Also extract global options from [tool.rumdl] directly (for flat structure)
|
|
1957
|
+
extract_global_config(&mut fragment, rumdl_table);
|
|
1856
1958
|
|
|
1857
1959
|
// --- Extract rule-specific configurations ---
|
|
1858
1960
|
for (key, value) in rumdl_table {
|