rumdl 0.0.119__tar.gz → 0.0.120__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.119 → rumdl-0.0.120}/CHANGELOG.md +4 -1
- {rumdl-0.0.119 → rumdl-0.0.120}/Cargo.lock +13 -13
- {rumdl-0.0.119 → rumdl-0.0.120}/Cargo.toml +1 -1
- {rumdl-0.0.119 → rumdl-0.0.120}/PKG-INFO +1 -1
- {rumdl-0.0.119 → rumdl-0.0.120}/src/lint_context.rs +244 -56
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md029_ordered_list_prefix.rs +81 -48
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/code_block_utils.rs +113 -0
- rumdl-0.0.120/tests/rules/md029_code_block_separation_test.rs +304 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md029_issue42_test.rs +21 -20
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md029_test.rs +317 -12
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md029_unicode_test.rs +2 -2
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/mod.rs +2 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/.config/nextest.toml +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/.mise.toml +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/.pre-commit-config.yaml +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/.rumdl.toml +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/.rustfmt.toml +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/LICENSE +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/MANIFEST.in +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/Makefile +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/README.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/assets/logo.png +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benches/range_performance.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benchmark/bin/bench_lint_context.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benchmark/bin/benchmark.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benchmark/bin/benchmark_rule.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benchmark/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/benchmark/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/RULES.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/global-settings.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md001.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md002.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md003.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md004.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md005.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md006.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md007.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md009.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md010.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md011.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md012.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md013.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md014.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md018.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md019.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md020.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md021.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md022.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md023.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md024.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md025.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md026.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md027.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md028.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md029.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md030.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md031.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md032.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md033.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md034.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md035.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md036.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md037.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md038.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md039.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md040.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md041.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md042.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md043.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md044.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md045.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md046.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md047.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md048.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md049.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md050.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md051.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md052.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md053.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md054.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md055.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md056.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md057.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/md058.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/parity_check.py +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/pyproject.toml +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/python/MANIFEST.in +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/rumdl.toml.example +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/rust-toolchain.toml +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/scripts/generate-downloads-table.sh +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/scripts/pre-release.sh +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/scripts/setup-pre-commit.sh +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/scripts/update-pre-commit-docs.sh +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/exit_codes.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/inline_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/lib.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/lsp/server.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/lsp/types.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/main.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/output/mod.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/parallel.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/performance.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/profiling.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/python.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rule.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rule_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/heading_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md011_no_reversed_links.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md013_line_length.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md032_blanks_around_lists.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md036_no_emphasis_only_first.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md037_spaces_around_emphasis.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md051_link_fragments.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/mod.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/fix_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/header_id_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/kramdown_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/mod.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/skip_context.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/table_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/utils/text_reflow.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/src/vscode.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/cli_explain_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/cli_flag_precedence_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/common/cli_test_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/common/fixtures.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/common/mod.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/common/test_utils.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/config_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/deeply_nested_lists_performance_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/escaped_brackets_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/fixable_unfixable_config_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/init_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/inline_config_blocks_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/kramdown_integration_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/lib.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/lsp_memory_leak_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/md013_reflow_integration_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/nested_code_block_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/perf_check.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/python_bindings_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/emphasis_edge_cases_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/heading_edge_cases_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/inline_content_edge_cases_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/link_edge_cases_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/list_rules_integration_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md005_unicode_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md026_kramdown_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md031_kramdown_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md033_kramdown_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md034_ipv6_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md037_kramdown_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md038_nested_backticks_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md051_unicode_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md058_kramdown_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/rules_mod_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/skip_context_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/thread_safety_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/vscode_extension_fixes.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/vscode_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/vscode_tests.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/vscode_windows_comprehensive_test.rs +0 -0
- {rumdl-0.0.119 → rumdl-0.0.120}/tests/vscode_windows_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.120] - 2025-08-16
|
|
11
|
+
|
|
10
12
|
## [0.0.119] - 2025-08-15
|
|
11
13
|
|
|
12
14
|
### Fixed
|
|
@@ -351,7 +353,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
351
353
|
|
|
352
354
|
- Initial implementation of remaining rules for markdownlint parity
|
|
353
355
|
|
|
354
|
-
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.
|
|
356
|
+
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.120...HEAD
|
|
357
|
+
[0.0.120]: https://github.com/rvben/rumdl/compare/v0.0.119...v0.0.120
|
|
355
358
|
[0.0.119]: https://github.com/rvben/rumdl/compare/v0.0.118...v0.0.119
|
|
356
359
|
[0.0.118]: https://github.com/rvben/rumdl/compare/v0.0.117...v0.0.118
|
|
357
360
|
[0.0.117]: https://github.com/rvben/rumdl/compare/v0.0.116...v0.0.117
|
|
@@ -185,9 +185,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
|
185
185
|
|
|
186
186
|
[[package]]
|
|
187
187
|
name = "bitflags"
|
|
188
|
-
version = "2.9.
|
|
188
|
+
version = "2.9.2"
|
|
189
189
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
190
|
-
checksum = "
|
|
190
|
+
checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29"
|
|
191
191
|
|
|
192
192
|
[[package]]
|
|
193
193
|
name = "bstr"
|
|
@@ -220,9 +220,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
|
|
220
220
|
|
|
221
221
|
[[package]]
|
|
222
222
|
name = "cc"
|
|
223
|
-
version = "1.2.
|
|
223
|
+
version = "1.2.33"
|
|
224
224
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
225
|
-
checksum = "
|
|
225
|
+
checksum = "3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f"
|
|
226
226
|
dependencies = [
|
|
227
227
|
"shlex",
|
|
228
228
|
]
|
|
@@ -863,7 +863,7 @@ version = "0.7.9"
|
|
|
863
863
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
864
864
|
checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
|
|
865
865
|
dependencies = [
|
|
866
|
-
"bitflags 2.9.
|
|
866
|
+
"bitflags 2.9.2",
|
|
867
867
|
"cfg-if",
|
|
868
868
|
"libc",
|
|
869
869
|
]
|
|
@@ -1280,7 +1280,7 @@ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f"
|
|
|
1280
1280
|
dependencies = [
|
|
1281
1281
|
"bit-set",
|
|
1282
1282
|
"bit-vec",
|
|
1283
|
-
"bitflags 2.9.
|
|
1283
|
+
"bitflags 2.9.2",
|
|
1284
1284
|
"lazy_static",
|
|
1285
1285
|
"num-traits",
|
|
1286
1286
|
"rand",
|
|
@@ -1298,7 +1298,7 @@ version = "0.12.2"
|
|
|
1298
1298
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1299
1299
|
checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14"
|
|
1300
1300
|
dependencies = [
|
|
1301
|
-
"bitflags 2.9.
|
|
1301
|
+
"bitflags 2.9.2",
|
|
1302
1302
|
"getopts",
|
|
1303
1303
|
"memchr",
|
|
1304
1304
|
"pulldown-cmark-escape",
|
|
@@ -1459,7 +1459,7 @@ version = "0.5.17"
|
|
|
1459
1459
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1460
1460
|
checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
|
|
1461
1461
|
dependencies = [
|
|
1462
|
-
"bitflags 2.9.
|
|
1462
|
+
"bitflags 2.9.2",
|
|
1463
1463
|
]
|
|
1464
1464
|
|
|
1465
1465
|
[[package]]
|
|
@@ -1493,7 +1493,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
|
|
1493
1493
|
|
|
1494
1494
|
[[package]]
|
|
1495
1495
|
name = "rumdl"
|
|
1496
|
-
version = "0.0.
|
|
1496
|
+
version = "0.0.120"
|
|
1497
1497
|
dependencies = [
|
|
1498
1498
|
"anyhow",
|
|
1499
1499
|
"assert_cmd",
|
|
@@ -1555,7 +1555,7 @@ version = "1.0.8"
|
|
|
1555
1555
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1556
1556
|
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
|
|
1557
1557
|
dependencies = [
|
|
1558
|
-
"bitflags 2.9.
|
|
1558
|
+
"bitflags 2.9.2",
|
|
1559
1559
|
"errno",
|
|
1560
1560
|
"libc",
|
|
1561
1561
|
"linux-raw-sys",
|
|
@@ -1723,9 +1723,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
|
|
1723
1723
|
|
|
1724
1724
|
[[package]]
|
|
1725
1725
|
name = "syn"
|
|
1726
|
-
version = "2.0.
|
|
1726
|
+
version = "2.0.106"
|
|
1727
1727
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1728
|
-
checksum = "
|
|
1728
|
+
checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
|
|
1729
1729
|
dependencies = [
|
|
1730
1730
|
"proc-macro2",
|
|
1731
1731
|
"quote",
|
|
@@ -2434,7 +2434,7 @@ version = "0.39.0"
|
|
|
2434
2434
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2435
2435
|
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
|
|
2436
2436
|
dependencies = [
|
|
2437
|
-
"bitflags 2.9.
|
|
2437
|
+
"bitflags 2.9.2",
|
|
2438
2438
|
]
|
|
2439
2439
|
|
|
2440
2440
|
[[package]]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
use crate::utils::code_block_utils::CodeBlockUtils;
|
|
1
|
+
use crate::utils::code_block_utils::{CodeBlockContext, CodeBlockUtils};
|
|
2
2
|
use lazy_static::lazy_static;
|
|
3
3
|
use regex::Regex;
|
|
4
4
|
|
|
@@ -1352,31 +1352,37 @@ impl<'a> LintContext<'a> {
|
|
|
1352
1352
|
for (line_idx, line_info) in lines.iter().enumerate() {
|
|
1353
1353
|
let line_num = line_idx + 1;
|
|
1354
1354
|
|
|
1355
|
-
//
|
|
1355
|
+
// Enhanced code block handling using Design #3's context analysis
|
|
1356
1356
|
if line_info.in_code_block {
|
|
1357
1357
|
if let Some(ref mut block) = current_block {
|
|
1358
|
-
// For code blocks to continue a list, they need to be indented
|
|
1359
|
-
// at least 2 spaces beyond the list marker
|
|
1360
1358
|
// Calculate minimum indentation for list continuation
|
|
1361
|
-
|
|
1362
|
-
// For unordered lists like "- ", content starts at column 2, so continuations need at least 2 spaces
|
|
1363
|
-
let min_continuation_indent = if block.is_ordered {
|
|
1364
|
-
current_indent_level + last_marker_width
|
|
1365
|
-
} else {
|
|
1366
|
-
current_indent_level + 2 // Unordered lists need at least 2 spaces (e.g., "- " = 2 chars)
|
|
1367
|
-
};
|
|
1359
|
+
let min_continuation_indent = CodeBlockUtils::calculate_min_continuation_indent(lines, line_idx);
|
|
1368
1360
|
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1361
|
+
// Analyze code block context using the three-tier classification
|
|
1362
|
+
let context = CodeBlockUtils::analyze_code_block_context(lines, line_idx, min_continuation_indent);
|
|
1363
|
+
|
|
1364
|
+
match context {
|
|
1365
|
+
CodeBlockContext::Indented => {
|
|
1366
|
+
// Code block is properly indented - continues the list
|
|
1367
|
+
block.end_line = line_num;
|
|
1368
|
+
continue;
|
|
1369
|
+
}
|
|
1370
|
+
CodeBlockContext::Standalone => {
|
|
1371
|
+
// Code block separates lists - end current block
|
|
1372
|
+
let completed_block = current_block.take().unwrap();
|
|
1373
|
+
list_blocks.push(completed_block);
|
|
1374
|
+
continue;
|
|
1375
|
+
}
|
|
1376
|
+
CodeBlockContext::Adjacent => {
|
|
1377
|
+
// Edge case - use conservative behavior (continue list)
|
|
1378
|
+
block.end_line = line_num;
|
|
1379
|
+
continue;
|
|
1380
|
+
}
|
|
1373
1381
|
}
|
|
1382
|
+
} else {
|
|
1383
|
+
// No current list block - skip code block lines
|
|
1384
|
+
continue;
|
|
1374
1385
|
}
|
|
1375
|
-
// If we have a current block and hit a non-indented code block, end it
|
|
1376
|
-
if let Some(block) = current_block.take() {
|
|
1377
|
-
list_blocks.push(block);
|
|
1378
|
-
}
|
|
1379
|
-
continue;
|
|
1380
1386
|
}
|
|
1381
1387
|
|
|
1382
1388
|
// Extract blockquote prefix if any
|
|
@@ -1409,17 +1415,18 @@ impl<'a> LintContext<'a> {
|
|
|
1409
1415
|
// Check if there's non-list content between the last item and this one
|
|
1410
1416
|
let has_non_list_content = {
|
|
1411
1417
|
let mut found_non_list = false;
|
|
1412
|
-
|
|
1418
|
+
// Use the last item from the current block, not the global last_list_item_line
|
|
1419
|
+
let block_last_item_line = block.item_lines.last().copied().unwrap_or(block.end_line);
|
|
1420
|
+
for check_line in (block_last_item_line + 1)..line_num {
|
|
1413
1421
|
let check_idx = check_line - 1;
|
|
1414
1422
|
if check_idx < lines.len() {
|
|
1415
1423
|
let check_info = &lines[check_idx];
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
//
|
|
1419
|
-
// Get the marker width of the last list item
|
|
1424
|
+
// Check for content that breaks the list
|
|
1425
|
+
let is_list_breaking_content = if check_info.in_code_block {
|
|
1426
|
+
// Use enhanced code block classification for list separation
|
|
1420
1427
|
let last_item_marker_width =
|
|
1421
|
-
if
|
|
1422
|
-
lines[
|
|
1428
|
+
if block_last_item_line > 0 && block_last_item_line <= lines.len() {
|
|
1429
|
+
lines[block_last_item_line - 1]
|
|
1423
1430
|
.list_item
|
|
1424
1431
|
.as_ref()
|
|
1425
1432
|
.map(|li| {
|
|
@@ -1435,11 +1442,61 @@ impl<'a> LintContext<'a> {
|
|
|
1435
1442
|
};
|
|
1436
1443
|
|
|
1437
1444
|
let min_continuation = if block.is_ordered { last_item_marker_width } else { 2 };
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1445
|
+
|
|
1446
|
+
// Analyze code block context using our enhanced classification
|
|
1447
|
+
let context = CodeBlockUtils::analyze_code_block_context(
|
|
1448
|
+
lines,
|
|
1449
|
+
check_line - 1,
|
|
1450
|
+
min_continuation,
|
|
1451
|
+
);
|
|
1452
|
+
|
|
1453
|
+
// Standalone code blocks break lists, indented ones continue them
|
|
1454
|
+
matches!(context, CodeBlockContext::Standalone)
|
|
1455
|
+
} else if !check_info.is_blank && check_info.list_item.is_none() {
|
|
1456
|
+
// Check for structural separators that should break lists (from issue #42)
|
|
1457
|
+
let line_content = check_info.content.trim();
|
|
1458
|
+
|
|
1459
|
+
// Any of these structural separators break lists
|
|
1460
|
+
if check_info.heading.is_some()
|
|
1461
|
+
|| line_content.starts_with("---")
|
|
1462
|
+
|| line_content.starts_with("***")
|
|
1463
|
+
|| line_content.starts_with("___")
|
|
1464
|
+
|| line_content.contains('|')
|
|
1465
|
+
|| line_content.starts_with(">")
|
|
1466
|
+
{
|
|
1467
|
+
true
|
|
1468
|
+
}
|
|
1469
|
+
// Other non-list content - check if properly indented
|
|
1470
|
+
else {
|
|
1471
|
+
let last_item_marker_width =
|
|
1472
|
+
if block_last_item_line > 0 && block_last_item_line <= lines.len() {
|
|
1473
|
+
lines[block_last_item_line - 1]
|
|
1474
|
+
.list_item
|
|
1475
|
+
.as_ref()
|
|
1476
|
+
.map(|li| {
|
|
1477
|
+
if li.is_ordered {
|
|
1478
|
+
li.marker.len() + 1 // Add 1 for the space after ordered list markers
|
|
1479
|
+
} else {
|
|
1480
|
+
li.marker.len()
|
|
1481
|
+
}
|
|
1482
|
+
})
|
|
1483
|
+
.unwrap_or(3) // fallback to 3 if no list item found
|
|
1484
|
+
} else {
|
|
1485
|
+
3 // fallback
|
|
1486
|
+
};
|
|
1487
|
+
|
|
1488
|
+
let min_continuation =
|
|
1489
|
+
if block.is_ordered { last_item_marker_width } else { 2 };
|
|
1490
|
+
check_info.indent < min_continuation
|
|
1442
1491
|
}
|
|
1492
|
+
} else {
|
|
1493
|
+
false
|
|
1494
|
+
};
|
|
1495
|
+
|
|
1496
|
+
if is_list_breaking_content {
|
|
1497
|
+
// Not indented enough, so it breaks the list
|
|
1498
|
+
found_non_list = true;
|
|
1499
|
+
break;
|
|
1443
1500
|
}
|
|
1444
1501
|
}
|
|
1445
1502
|
}
|
|
@@ -1574,8 +1631,9 @@ impl<'a> LintContext<'a> {
|
|
|
1574
1631
|
&& item.is_ordered == block.is_ordered
|
|
1575
1632
|
&& block.blockquote_prefix.trim() == next_blockquote_prefix.trim()
|
|
1576
1633
|
{
|
|
1577
|
-
// Check if there was meaningful content between the list items
|
|
1578
|
-
|
|
1634
|
+
// Check if there was meaningful content between the list items (unused now)
|
|
1635
|
+
// This variable is kept for potential future use but is currently replaced by has_structural_separators
|
|
1636
|
+
let _has_meaningful_content = (line_idx + 1..check_idx).any(|idx| {
|
|
1579
1637
|
if let Some(between_line) = lines.get(idx) {
|
|
1580
1638
|
let trimmed = between_line.content.trim();
|
|
1581
1639
|
// Skip empty lines
|
|
@@ -1585,21 +1643,72 @@ impl<'a> LintContext<'a> {
|
|
|
1585
1643
|
// Check for meaningful content
|
|
1586
1644
|
let line_indent =
|
|
1587
1645
|
between_line.content.len() - between_line.content.trim_start().len();
|
|
1588
|
-
|
|
1589
|
-
|
|
1646
|
+
|
|
1647
|
+
// Structural separators (code fences, headings, etc.) are meaningful and should BREAK lists
|
|
1648
|
+
if trimmed.starts_with("```")
|
|
1590
1649
|
|| trimmed.starts_with("~~~")
|
|
1591
|
-
||
|
|
1650
|
+
|| trimmed.starts_with("---")
|
|
1651
|
+
|| trimmed.starts_with("***")
|
|
1652
|
+
|| trimmed.starts_with("___")
|
|
1653
|
+
|| trimmed.starts_with(">")
|
|
1654
|
+
|| trimmed.contains('|') // Tables
|
|
1655
|
+
|| between_line.heading.is_some()
|
|
1656
|
+
{
|
|
1657
|
+
return true; // These are structural separators - meaningful content that breaks lists
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1660
|
+
// Only properly indented content continues the list
|
|
1661
|
+
line_indent >= min_continuation_indent
|
|
1592
1662
|
} else {
|
|
1593
1663
|
false
|
|
1594
1664
|
}
|
|
1595
1665
|
});
|
|
1596
1666
|
|
|
1597
1667
|
if block.is_ordered {
|
|
1598
|
-
// For ordered lists:
|
|
1599
|
-
|
|
1668
|
+
// For ordered lists: don't continue if there are structural separators
|
|
1669
|
+
// Check if there are structural separators between the list items
|
|
1670
|
+
let has_structural_separators = (line_idx + 1..check_idx).any(|idx| {
|
|
1671
|
+
if let Some(between_line) = lines.get(idx) {
|
|
1672
|
+
let trimmed = between_line.content.trim();
|
|
1673
|
+
if trimmed.is_empty() {
|
|
1674
|
+
return false;
|
|
1675
|
+
}
|
|
1676
|
+
// Check for structural separators that break lists
|
|
1677
|
+
trimmed.starts_with("```")
|
|
1678
|
+
|| trimmed.starts_with("~~~")
|
|
1679
|
+
|| trimmed.starts_with("---")
|
|
1680
|
+
|| trimmed.starts_with("***")
|
|
1681
|
+
|| trimmed.starts_with("___")
|
|
1682
|
+
|| trimmed.starts_with(">")
|
|
1683
|
+
|| trimmed.contains('|') // Tables
|
|
1684
|
+
|| between_line.heading.is_some()
|
|
1685
|
+
} else {
|
|
1686
|
+
false
|
|
1687
|
+
}
|
|
1688
|
+
});
|
|
1689
|
+
found_continuation = !has_structural_separators;
|
|
1600
1690
|
} else {
|
|
1601
|
-
// For unordered lists:
|
|
1602
|
-
|
|
1691
|
+
// For unordered lists: also check for structural separators
|
|
1692
|
+
let has_structural_separators = (line_idx + 1..check_idx).any(|idx| {
|
|
1693
|
+
if let Some(between_line) = lines.get(idx) {
|
|
1694
|
+
let trimmed = between_line.content.trim();
|
|
1695
|
+
if trimmed.is_empty() {
|
|
1696
|
+
return false;
|
|
1697
|
+
}
|
|
1698
|
+
// Check for structural separators that break lists
|
|
1699
|
+
trimmed.starts_with("```")
|
|
1700
|
+
|| trimmed.starts_with("~~~")
|
|
1701
|
+
|| trimmed.starts_with("---")
|
|
1702
|
+
|| trimmed.starts_with("***")
|
|
1703
|
+
|| trimmed.starts_with("___")
|
|
1704
|
+
|| trimmed.starts_with(">")
|
|
1705
|
+
|| trimmed.contains('|') // Tables
|
|
1706
|
+
|| between_line.heading.is_some()
|
|
1707
|
+
} else {
|
|
1708
|
+
false
|
|
1709
|
+
}
|
|
1710
|
+
});
|
|
1711
|
+
found_continuation = !has_structural_separators;
|
|
1603
1712
|
}
|
|
1604
1713
|
}
|
|
1605
1714
|
}
|
|
@@ -1625,8 +1734,19 @@ impl<'a> LintContext<'a> {
|
|
|
1625
1734
|
// For lazy continuation to apply, the line must either:
|
|
1626
1735
|
// 1. Have no indentation (true lazy continuation)
|
|
1627
1736
|
// 2. Have sufficient indentation for the list type
|
|
1737
|
+
// BUT structural separators (headings, code blocks, etc.) should never be lazy continuations
|
|
1738
|
+
let line_content = line_info.content.trim();
|
|
1739
|
+
let is_structural_separator = line_info.heading.is_some()
|
|
1740
|
+
|| line_content.starts_with("```")
|
|
1741
|
+
|| line_content.starts_with("~~~")
|
|
1742
|
+
|| line_content.starts_with("---")
|
|
1743
|
+
|| line_content.starts_with("***")
|
|
1744
|
+
|| line_content.starts_with("___")
|
|
1745
|
+
|| line_content.starts_with(">")
|
|
1746
|
+
|| line_content.contains('|'); // Tables
|
|
1747
|
+
|
|
1628
1748
|
let is_lazy_continuation = last_list_item_line == line_num - 1
|
|
1629
|
-
&&
|
|
1749
|
+
&& !is_structural_separator
|
|
1630
1750
|
&& !line_info.is_blank
|
|
1631
1751
|
&& (line_info.indent == 0 || line_info.indent >= min_required_indent);
|
|
1632
1752
|
|
|
@@ -2075,14 +2195,25 @@ impl<'a> ListBlockMerger<'a> {
|
|
|
2075
2195
|
|
|
2076
2196
|
/// Check if unordered lists can be merged with a single blank line between
|
|
2077
2197
|
fn can_merge_with_blank_between(&self, current: &ListBlock, next: &ListBlock) -> bool {
|
|
2198
|
+
// Check if there are structural separators between the blocks
|
|
2199
|
+
// If has_meaningful_content_between returns true, it means there are structural separators
|
|
2200
|
+
if has_meaningful_content_between(current, next, self.lines) {
|
|
2201
|
+
return false; // Structural separators prevent merging
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2078
2204
|
// Only merge unordered lists with same marker across single blank
|
|
2079
2205
|
!current.is_ordered && current.marker == next.marker
|
|
2080
2206
|
}
|
|
2081
2207
|
|
|
2082
2208
|
/// Check if ordered lists can be merged when there's content between them
|
|
2083
2209
|
fn can_merge_with_content_between(&self, current: &ListBlock, next: &ListBlock) -> bool {
|
|
2084
|
-
//
|
|
2085
|
-
|
|
2210
|
+
// Do not merge lists if there are structural separators between them
|
|
2211
|
+
if has_meaningful_content_between(current, next, self.lines) {
|
|
2212
|
+
return false; // Structural separators prevent merging
|
|
2213
|
+
}
|
|
2214
|
+
|
|
2215
|
+
// Only consider merging ordered lists if there's no structural content between
|
|
2216
|
+
current.is_ordered && next.is_ordered
|
|
2086
2217
|
}
|
|
2087
2218
|
|
|
2088
2219
|
/// Check if there are only blank lines between blocks
|
|
@@ -2141,33 +2272,90 @@ fn has_meaningful_content_between(current: &ListBlock, next: &ListBlock, lines:
|
|
|
2141
2272
|
continue;
|
|
2142
2273
|
}
|
|
2143
2274
|
|
|
2275
|
+
// Check for structural separators that should separate lists (CommonMark compliant)
|
|
2276
|
+
|
|
2277
|
+
// Headings separate lists
|
|
2278
|
+
if line_info.heading.is_some() {
|
|
2279
|
+
return true; // Has meaningful content - headings separate lists
|
|
2280
|
+
}
|
|
2281
|
+
|
|
2282
|
+
// Horizontal rules separate lists (---, ***, ___)
|
|
2283
|
+
if is_horizontal_rule(trimmed) {
|
|
2284
|
+
return true; // Has meaningful content - horizontal rules separate lists
|
|
2285
|
+
}
|
|
2286
|
+
|
|
2287
|
+
// Tables separate lists (lines containing |)
|
|
2288
|
+
if trimmed.contains('|') && trimmed.len() > 1 {
|
|
2289
|
+
return true; // Has meaningful content - tables separate lists
|
|
2290
|
+
}
|
|
2291
|
+
|
|
2292
|
+
// Blockquotes separate lists
|
|
2293
|
+
if trimmed.starts_with('>') {
|
|
2294
|
+
return true; // Has meaningful content - blockquotes separate lists
|
|
2295
|
+
}
|
|
2296
|
+
|
|
2297
|
+
// Code block fences separate lists (unless properly indented as list content)
|
|
2298
|
+
if trimmed.starts_with("```") || trimmed.starts_with("~~~") {
|
|
2299
|
+
let line_indent = line_info.content.len() - line_info.content.trim_start().len();
|
|
2300
|
+
|
|
2301
|
+
// Check if this code block is properly indented as list continuation
|
|
2302
|
+
let min_continuation_indent = if current.is_ordered {
|
|
2303
|
+
current.nesting_level + current.max_marker_width
|
|
2304
|
+
} else {
|
|
2305
|
+
current.nesting_level + 2
|
|
2306
|
+
};
|
|
2307
|
+
|
|
2308
|
+
if line_indent < min_continuation_indent {
|
|
2309
|
+
// This is a standalone code block that separates lists
|
|
2310
|
+
return true; // Has meaningful content - standalone code blocks separate lists
|
|
2311
|
+
}
|
|
2312
|
+
}
|
|
2313
|
+
|
|
2144
2314
|
// Check if this line has proper indentation for list continuation
|
|
2145
2315
|
let line_indent = line_info.content.len() - line_info.content.trim_start().len();
|
|
2146
2316
|
|
|
2147
|
-
//
|
|
2148
|
-
// For ordered lists, use actual marker width; for unordered, 2 spaces
|
|
2317
|
+
// Calculate minimum indentation needed to be list continuation
|
|
2149
2318
|
let min_indent = if current.is_ordered {
|
|
2150
2319
|
current.nesting_level + current.max_marker_width
|
|
2151
2320
|
} else {
|
|
2152
2321
|
current.nesting_level + 2
|
|
2153
2322
|
};
|
|
2154
2323
|
|
|
2155
|
-
//
|
|
2156
|
-
if line_indent
|
|
2157
|
-
return true;
|
|
2158
|
-
}
|
|
2159
|
-
|
|
2160
|
-
// Code fences are meaningful content
|
|
2161
|
-
if trimmed.starts_with("```") || trimmed.starts_with("~~~") {
|
|
2162
|
-
return true;
|
|
2324
|
+
// If the line is not indented enough to be list continuation, it's meaningful content
|
|
2325
|
+
if line_indent < min_indent {
|
|
2326
|
+
return true; // Has meaningful content - content not indented as list continuation
|
|
2163
2327
|
}
|
|
2164
2328
|
|
|
2165
|
-
//
|
|
2166
|
-
|
|
2329
|
+
// If we reach here, the line is properly indented as list continuation
|
|
2330
|
+
// Continue checking other lines
|
|
2167
2331
|
}
|
|
2168
2332
|
}
|
|
2169
2333
|
|
|
2170
|
-
// Only blank lines
|
|
2334
|
+
// Only blank lines or properly indented list continuation content between blocks
|
|
2335
|
+
false
|
|
2336
|
+
}
|
|
2337
|
+
|
|
2338
|
+
/// Check if a line is a horizontal rule (---, ***, ___)
|
|
2339
|
+
fn is_horizontal_rule(trimmed: &str) -> bool {
|
|
2340
|
+
if trimmed.len() < 3 {
|
|
2341
|
+
return false;
|
|
2342
|
+
}
|
|
2343
|
+
|
|
2344
|
+
// Check for three or more consecutive -, *, or _ characters (with optional spaces)
|
|
2345
|
+
let chars: Vec<char> = trimmed.chars().collect();
|
|
2346
|
+
if let Some(&first_char) = chars.first()
|
|
2347
|
+
&& (first_char == '-' || first_char == '*' || first_char == '_')
|
|
2348
|
+
{
|
|
2349
|
+
let mut count = 0;
|
|
2350
|
+
for &ch in &chars {
|
|
2351
|
+
if ch == first_char {
|
|
2352
|
+
count += 1;
|
|
2353
|
+
} else if ch != ' ' && ch != '\t' {
|
|
2354
|
+
return false; // Non-matching, non-whitespace character
|
|
2355
|
+
}
|
|
2356
|
+
}
|
|
2357
|
+
return count >= 3;
|
|
2358
|
+
}
|
|
2171
2359
|
false
|
|
2172
2360
|
}
|
|
2173
2361
|
|