rumdl 0.0.108__tar.gz → 0.0.110__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.108 → rumdl-0.0.110}/.config/nextest.toml +20 -4
- {rumdl-0.0.108 → rumdl-0.0.110}/.mise.toml +2 -1
- {rumdl-0.0.108 → rumdl-0.0.110}/.pre-commit-config.yaml +5 -5
- {rumdl-0.0.108 → rumdl-0.0.110}/CHANGELOG.md +7 -1
- {rumdl-0.0.108 → rumdl-0.0.110}/Cargo.lock +8 -8
- {rumdl-0.0.108 → rumdl-0.0.110}/Cargo.toml +1 -1
- {rumdl-0.0.108 → rumdl-0.0.110}/Makefile +24 -2
- {rumdl-0.0.108 → rumdl-0.0.110}/PKG-INFO +1 -1
- {rumdl-0.0.108 → rumdl-0.0.110}/src/lint_context.rs +27 -35
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md004_unordered_list_style.rs +8 -15
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md006_start_bullets.rs +49 -21
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md011_no_reversed_links.rs +15 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md029_ordered_list_prefix.rs +63 -19
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md032_blanks_around_lists.rs +38 -2
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md033_no_inline_html.rs +5 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md037_spaces_around_emphasis.rs +52 -8
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md042_no_empty_links.rs +36 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md046_code_block_style.rs +1 -81
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md051_link_fragments.rs +5 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/code_block_utils.rs +17 -3
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/document_structure.rs +23 -15
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/table_utils.rs +104 -5
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/cli_integration_tests.rs +6 -45
- rumdl-0.0.110/tests/common/cli_test_utils.rs +257 -0
- rumdl-0.0.110/tests/common/fixtures.rs +92 -0
- rumdl-0.0.110/tests/common/mod.rs +3 -0
- rumdl-0.0.110/tests/common/test_utils.rs +160 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/lsp_memory_leak_tests.rs +14 -14
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/markdownlint_cli_integration.rs +4 -15
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/markdownlintignore_test.rs +3 -10
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/list_rules_integration_test.rs +4 -6
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md032_test.rs +86 -1
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md046_test.rs +26 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/thread_safety_tests.rs +3 -3
- {rumdl-0.0.108 → rumdl-0.0.110}/.rumdl.toml +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/.rustfmt.toml +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/LICENSE +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/MANIFEST.in +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/README.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/assets/logo.png +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benches/range_performance.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benchmark/bin/bench_lint_context.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benchmark/bin/benchmark.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benchmark/bin/benchmark_rule.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benchmark/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/benchmark/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/RULES.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/global-settings.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md001.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md002.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md003.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md004.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md005.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md006.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md007.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md009.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md010.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md011.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md012.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md013.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md014.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md018.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md019.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md020.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md021.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md022.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md023.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md024.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md025.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md026.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md027.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md028.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md029.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md030.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md031.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md032.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md033.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md034.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md035.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md036.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md037.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md038.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md039.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md040.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md041.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md042.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md043.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md044.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md045.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md046.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md047.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md048.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md049.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md050.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md051.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md052.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md053.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md054.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md055.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md056.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md057.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/md058.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/parity_check.py +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/pyproject.toml +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/python/MANIFEST.in +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/rumdl.toml.example +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/rust-toolchain.toml +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/scripts/setup-pre-commit.sh +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/scripts/update-pre-commit-docs.sh +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/bin/debug_frontmatter.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/exit_codes.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/inline_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/lib.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/lsp/server.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/lsp/types.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/main.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/output/mod.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/parallel.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/performance.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/profiling.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/python.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rule.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rule_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/heading_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md013_line_length.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md036_no_emphasis_only_first.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/mod.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/fix_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/mod.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/utils/text_reflow.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/src/vscode.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/cli_explain_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/cli_flag_precedence_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/config_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/deeply_nested_lists_performance_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/escaped_brackets_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/init_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/inline_config_blocks_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/lib.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/md013_reflow_integration_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/nested_code_block_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/perf_check.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/python_bindings_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/emphasis_edge_cases_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/heading_edge_cases_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/inline_content_edge_cases_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/link_edge_cases_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md005_unicode_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md029_unicode_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md034_ipv6_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md038_nested_backticks_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md051_unicode_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/rules_mod_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/vscode_extension_fixes.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/vscode_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/vscode_tests.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/vscode_windows_comprehensive_test.rs +0 -0
- {rumdl-0.0.108 → rumdl-0.0.110}/tests/vscode_windows_test.rs +0 -0
|
@@ -36,8 +36,8 @@ retries = 0
|
|
|
36
36
|
# Quick profile for development
|
|
37
37
|
[profile.quick]
|
|
38
38
|
|
|
39
|
-
# Skip slow tests
|
|
40
|
-
default-filter = 'not test(/memory/) and not test(/stress/) and not test(/large/)'
|
|
39
|
+
# Skip slow tests and performance tests
|
|
40
|
+
default-filter = 'not test(/memory/) and not test(/stress/) and not test(/large/) and not test(/error_propagation/) and not test(/performance/) and not test(/comprehensive/) and not test(/deeply_nested/)'
|
|
41
41
|
|
|
42
42
|
# Even more parallel execution locally
|
|
43
43
|
test-threads = "num-cpus"
|
|
@@ -45,11 +45,27 @@ test-threads = "num-cpus"
|
|
|
45
45
|
# Less verbose output
|
|
46
46
|
status-level = "fail"
|
|
47
47
|
|
|
48
|
+
# Development profile - balance between speed and coverage
|
|
49
|
+
[profile.dev]
|
|
50
|
+
|
|
51
|
+
# Skip the slowest tests but include integration tests
|
|
52
|
+
default-filter = 'not test(/error_propagation/) and not test(/deeply_nested/) and not test(/memory/) and not test(/stress/) and not test(/large/) and not test(/performance/) and not test(/perf_check/)'
|
|
53
|
+
|
|
54
|
+
# Good parallelization for dev machines
|
|
55
|
+
test-threads = "num-cpus"
|
|
56
|
+
|
|
57
|
+
# Show failures immediately
|
|
58
|
+
failure-output = "immediate"
|
|
59
|
+
status-level = "fail"
|
|
60
|
+
|
|
61
|
+
# No retries for faster feedback
|
|
62
|
+
retries = 0
|
|
63
|
+
|
|
48
64
|
# Ultra-fast profile for pre-commit hooks
|
|
49
65
|
[profile.pre-commit]
|
|
50
66
|
|
|
51
67
|
# Only run unit tests in lib, skip all integration tests and binaries
|
|
52
|
-
default-filter = 'package(rumdl) and kind(lib) and not test(/slow|stress|large|integration|comprehensive|cli|config|advanced|commonmark|consistency|performance|benchmark|parity/)'
|
|
68
|
+
default-filter = 'package(rumdl) and kind(lib) and not test(/slow|stress|large|integration|comprehensive|cli|config|advanced|commonmark|consistency|performance|benchmark|parity|error_propagation|deeply_nested|memory/)'
|
|
53
69
|
|
|
54
70
|
# Maximum parallelism for speed
|
|
55
71
|
test-threads = "num-cpus"
|
|
@@ -63,4 +79,4 @@ success-output = "never"
|
|
|
63
79
|
retries = 0
|
|
64
80
|
|
|
65
81
|
# Fail fast on first failure
|
|
66
|
-
fail-fast = true
|
|
82
|
+
fail-fast = true
|
|
@@ -20,6 +20,7 @@ uv = "latest"
|
|
|
20
20
|
"cargo:cargo-watch" = "latest"
|
|
21
21
|
"cargo:maturin" = "latest"
|
|
22
22
|
"cargo:cargo-binstall" = "latest"
|
|
23
|
+
"cargo:cargo-zigbuild" = "latest" # For building static Linux binaries
|
|
23
24
|
|
|
24
25
|
# Zig for cross-compilation (used by maturin)
|
|
25
26
|
zig = "0.13"
|
|
@@ -104,4 +105,4 @@ make test-quick
|
|
|
104
105
|
# rust = "1.87.0"
|
|
105
106
|
#
|
|
106
107
|
# [tools.windows]
|
|
107
|
-
# rust = "1.87.0"
|
|
108
|
+
# rust = "1.87.0"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Pre-commit hooks for rumdl
|
|
2
|
-
# Install with:
|
|
2
|
+
# Install with:
|
|
3
3
|
# pre-commit install # Install commit hooks
|
|
4
4
|
# pre-commit install --hook-type pre-push # Install push hooks
|
|
5
|
-
# Run manually:
|
|
5
|
+
# Run manually:
|
|
6
6
|
# pre-commit run --all-files # Run commit hooks
|
|
7
7
|
# pre-commit run --hook-stage push --all-files # Run push hooks
|
|
8
8
|
|
|
@@ -64,7 +64,7 @@ repos:
|
|
|
64
64
|
language: system
|
|
65
65
|
types: [rust]
|
|
66
66
|
pass_filenames: false
|
|
67
|
-
stages: [push]
|
|
67
|
+
stages: [pre-push]
|
|
68
68
|
verbose: true
|
|
69
69
|
|
|
70
70
|
- id: cargo-lint-full
|
|
@@ -73,7 +73,7 @@ repos:
|
|
|
73
73
|
language: system
|
|
74
74
|
types: [rust]
|
|
75
75
|
pass_filenames: false
|
|
76
|
-
stages: [push]
|
|
76
|
+
stages: [pre-push]
|
|
77
77
|
verbose: true
|
|
78
78
|
|
|
79
79
|
- id: cargo-doc-check
|
|
@@ -82,5 +82,5 @@ repos:
|
|
|
82
82
|
language: system
|
|
83
83
|
types: [rust]
|
|
84
84
|
pass_filenames: false
|
|
85
|
-
stages: [push]
|
|
85
|
+
stages: [pre-push]
|
|
86
86
|
verbose: true
|
|
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.0.110] - 2025-08-08
|
|
11
|
+
|
|
12
|
+
## [0.0.110] - 2025-08-08
|
|
13
|
+
|
|
10
14
|
## [0.0.107] - 2025-08-06
|
|
11
15
|
|
|
12
16
|
## [0.0.107] - 2025-08-06
|
|
@@ -298,7 +302,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
298
302
|
|
|
299
303
|
- Initial implementation of remaining rules for markdownlint parity
|
|
300
304
|
|
|
301
|
-
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.
|
|
305
|
+
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.110...HEAD
|
|
306
|
+
[0.0.110]: https://github.com/rvben/rumdl/compare/v0.0.109...v0.0.110
|
|
307
|
+
[0.0.110]: https://github.com/rvben/rumdl/compare/v0.0.109...v0.0.110
|
|
302
308
|
[0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
|
|
303
309
|
[0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
|
|
304
310
|
[0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
|
|
@@ -220,9 +220,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
|
|
220
220
|
|
|
221
221
|
[[package]]
|
|
222
222
|
name = "cc"
|
|
223
|
-
version = "1.2.
|
|
223
|
+
version = "1.2.32"
|
|
224
224
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
225
|
-
checksum = "
|
|
225
|
+
checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e"
|
|
226
226
|
dependencies = [
|
|
227
227
|
"shlex",
|
|
228
228
|
]
|
|
@@ -672,9 +672,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
|
|
672
672
|
|
|
673
673
|
[[package]]
|
|
674
674
|
name = "hashbrown"
|
|
675
|
-
version = "0.15.
|
|
675
|
+
version = "0.15.5"
|
|
676
676
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
677
|
-
checksum = "
|
|
677
|
+
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
|
|
678
678
|
|
|
679
679
|
[[package]]
|
|
680
680
|
name = "heck"
|
|
@@ -848,7 +848,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
848
848
|
checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
|
|
849
849
|
dependencies = [
|
|
850
850
|
"equivalent",
|
|
851
|
-
"hashbrown 0.15.
|
|
851
|
+
"hashbrown 0.15.5",
|
|
852
852
|
]
|
|
853
853
|
|
|
854
854
|
[[package]]
|
|
@@ -1493,7 +1493,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
|
|
1493
1493
|
|
|
1494
1494
|
[[package]]
|
|
1495
1495
|
name = "rumdl"
|
|
1496
|
-
version = "0.0.
|
|
1496
|
+
version = "0.0.110"
|
|
1497
1497
|
dependencies = [
|
|
1498
1498
|
"anyhow",
|
|
1499
1499
|
"assert_cmd",
|
|
@@ -1689,9 +1689,9 @@ dependencies = [
|
|
|
1689
1689
|
|
|
1690
1690
|
[[package]]
|
|
1691
1691
|
name = "slab"
|
|
1692
|
-
version = "0.4.
|
|
1692
|
+
version = "0.4.11"
|
|
1693
1693
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1694
|
-
checksum = "
|
|
1694
|
+
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
|
|
1695
1695
|
|
|
1696
1696
|
[[package]]
|
|
1697
1697
|
name = "smallvec"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.PHONY: build test clean fmt check doc version-major version-minor version-patch build-python build-wheel dev-install setup-mise dev-setup dev-verify update-dependencies update-rust-version pre-release
|
|
1
|
+
.PHONY: build test clean fmt check doc version-major version-minor version-patch build-python build-wheel dev-install setup-mise dev-setup dev-verify update-dependencies update-rust-version pre-release build-static-linux-x64 build-static-linux-arm64 build-static-all
|
|
2
2
|
|
|
3
3
|
# Development environment setup
|
|
4
4
|
setup-mise:
|
|
@@ -60,12 +60,34 @@ ci-install-mise:
|
|
|
60
60
|
build:
|
|
61
61
|
cargo build --release
|
|
62
62
|
|
|
63
|
+
# Static binary builds for Linux (musl)
|
|
64
|
+
build-static-linux-x64:
|
|
65
|
+
@echo "Building static Linux x86_64 binary..."
|
|
66
|
+
rustup target add x86_64-unknown-linux-musl 2>/dev/null || true
|
|
67
|
+
mise exec -- cargo zigbuild --release --target x86_64-unknown-linux-musl
|
|
68
|
+
@echo "Static binary built at: target/x86_64-unknown-linux-musl/release/rumdl"
|
|
69
|
+
|
|
70
|
+
build-static-linux-arm64:
|
|
71
|
+
@echo "Building static Linux ARM64 binary..."
|
|
72
|
+
rustup target add aarch64-unknown-linux-musl 2>/dev/null || true
|
|
73
|
+
mise exec -- cargo zigbuild --release --target aarch64-unknown-linux-musl
|
|
74
|
+
@echo "Static binary built at: target/aarch64-unknown-linux-musl/release/rumdl"
|
|
75
|
+
|
|
76
|
+
build-static-all: build-static-linux-x64 build-static-linux-arm64
|
|
77
|
+
@echo "All static Linux binaries built successfully"
|
|
78
|
+
|
|
63
79
|
test:
|
|
80
|
+
cargo nextest run --profile dev
|
|
81
|
+
|
|
82
|
+
test-legacy:
|
|
64
83
|
cargo test
|
|
65
84
|
|
|
66
85
|
test-nextest:
|
|
67
86
|
cargo nextest run
|
|
68
87
|
|
|
88
|
+
test-dev:
|
|
89
|
+
cargo nextest run --profile dev
|
|
90
|
+
|
|
69
91
|
test-quick:
|
|
70
92
|
cargo nextest run --profile quick
|
|
71
93
|
|
|
@@ -100,7 +122,7 @@ doc:
|
|
|
100
122
|
cargo doc --no-deps
|
|
101
123
|
|
|
102
124
|
watch-test:
|
|
103
|
-
cargo watch -x
|
|
125
|
+
cargo watch -x "nextest run --profile quick"
|
|
104
126
|
|
|
105
127
|
all: fmt check test build
|
|
106
128
|
|
|
@@ -948,39 +948,18 @@ impl<'a> LintContext<'a> {
|
|
|
948
948
|
let leading_spaces = caps.get(1).map_or("", |m| m.as_str());
|
|
949
949
|
let marker = caps.get(2).map_or("", |m| m.as_str());
|
|
950
950
|
let spacing = caps.get(3).map_or("", |m| m.as_str());
|
|
951
|
-
let
|
|
951
|
+
let _content = caps.get(4).map_or("", |m| m.as_str());
|
|
952
952
|
let marker_column = blockquote_prefix_len + leading_spaces.len();
|
|
953
953
|
let content_column = marker_column + marker.len() + spacing.len();
|
|
954
954
|
|
|
955
|
-
//
|
|
955
|
+
// According to CommonMark spec, unordered list items MUST have at least one space
|
|
956
|
+
// after the marker (-, *, or +). Without a space, it's not a list item.
|
|
957
|
+
// This also naturally handles cases like:
|
|
958
|
+
// - *emphasis* (not a list)
|
|
959
|
+
// - **bold** (not a list)
|
|
960
|
+
// - --- (horizontal rule, not a list)
|
|
956
961
|
if spacing.is_empty() {
|
|
957
|
-
|
|
958
|
-
if marker == "*" && content.ends_with('*') && !content[..content.len() - 1].contains('*') {
|
|
959
|
-
// Likely emphasis like *text*
|
|
960
|
-
None
|
|
961
|
-
} else if marker == "*" && content.starts_with('*') {
|
|
962
|
-
// Likely bold emphasis like **text** or horizontal rule like ***
|
|
963
|
-
None
|
|
964
|
-
} else if (marker == "*" || marker == "-")
|
|
965
|
-
&& content.chars().all(|c| c == marker.chars().next().unwrap())
|
|
966
|
-
&& content.len() >= 2
|
|
967
|
-
{
|
|
968
|
-
// Likely horizontal rule like *** or ---
|
|
969
|
-
None
|
|
970
|
-
} else if !content.is_empty() && content.chars().next().unwrap().is_alphabetic() {
|
|
971
|
-
// Single word starting with marker, likely not intended as list
|
|
972
|
-
// This matches markdownlint behavior
|
|
973
|
-
None
|
|
974
|
-
} else {
|
|
975
|
-
// Other cases with no space - treat as malformed list item
|
|
976
|
-
Some(ListItemInfo {
|
|
977
|
-
marker: marker.to_string(),
|
|
978
|
-
is_ordered: false,
|
|
979
|
-
number: None,
|
|
980
|
-
marker_column,
|
|
981
|
-
content_column,
|
|
982
|
-
})
|
|
983
|
-
}
|
|
962
|
+
None
|
|
984
963
|
} else {
|
|
985
964
|
Some(ListItemInfo {
|
|
986
965
|
marker: marker.to_string(),
|
|
@@ -995,15 +974,14 @@ impl<'a> LintContext<'a> {
|
|
|
995
974
|
let number_str = caps.get(2).map_or("", |m| m.as_str());
|
|
996
975
|
let delimiter = caps.get(3).map_or("", |m| m.as_str());
|
|
997
976
|
let spacing = caps.get(4).map_or("", |m| m.as_str());
|
|
998
|
-
let
|
|
977
|
+
let _content = caps.get(5).map_or("", |m| m.as_str());
|
|
999
978
|
let marker = format!("{number_str}{delimiter}");
|
|
1000
979
|
let marker_column = blockquote_prefix_len + leading_spaces.len();
|
|
1001
980
|
let content_column = marker_column + marker.len() + spacing.len();
|
|
1002
981
|
|
|
1003
|
-
//
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
// This matches markdownlint behavior
|
|
982
|
+
// According to CommonMark spec, ordered list items MUST have at least one space
|
|
983
|
+
// after the marker (period or parenthesis). Without a space, it's not a list item.
|
|
984
|
+
if spacing.is_empty() {
|
|
1007
985
|
None
|
|
1008
986
|
} else {
|
|
1009
987
|
Some(ListItemInfo {
|
|
@@ -1343,6 +1321,9 @@ impl<'a> LintContext<'a> {
|
|
|
1343
1321
|
|
|
1344
1322
|
if let Some(ref mut block) = current_block {
|
|
1345
1323
|
// Check if this continues the current block
|
|
1324
|
+
// For nested lists, we need to check if this is a nested item (higher nesting level)
|
|
1325
|
+
// or a continuation at the same or lower level
|
|
1326
|
+
let is_nested = nesting > block.nesting_level;
|
|
1346
1327
|
let same_type =
|
|
1347
1328
|
(block.is_ordered && list_item.is_ordered) || (!block.is_ordered && !list_item.is_ordered);
|
|
1348
1329
|
let same_context = block.blockquote_prefix == blockquote_prefix;
|
|
@@ -1392,7 +1373,18 @@ impl<'a> LintContext<'a> {
|
|
|
1392
1373
|
found_non_list
|
|
1393
1374
|
};
|
|
1394
1375
|
|
|
1395
|
-
|
|
1376
|
+
// A list continues if:
|
|
1377
|
+
// 1. It's a nested item (indented more than the parent), OR
|
|
1378
|
+
// 2. It's the same type at the same level with reasonable distance
|
|
1379
|
+
let continues_list = if is_nested {
|
|
1380
|
+
// Nested items always continue the list if they're in the same context
|
|
1381
|
+
same_context && reasonable_distance && !has_non_list_content
|
|
1382
|
+
} else {
|
|
1383
|
+
// Same-level items need to match type and markers
|
|
1384
|
+
same_type && same_context && reasonable_distance && marker_compatible && !has_non_list_content
|
|
1385
|
+
};
|
|
1386
|
+
|
|
1387
|
+
if continues_list {
|
|
1396
1388
|
// Extend current block
|
|
1397
1389
|
block.end_line = line_num;
|
|
1398
1390
|
block.item_lines.push(line_num);
|
|
@@ -118,16 +118,12 @@ impl Rule for MD004UnorderedListStyle {
|
|
|
118
118
|
|
|
119
119
|
// Use centralized list blocks for better performance and accuracy
|
|
120
120
|
for list_block in &ctx.list_blocks {
|
|
121
|
-
// Skip ordered lists
|
|
122
|
-
if list_block.is_ordered {
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
121
|
// Check each list item in this block
|
|
122
|
+
// We need to check individual items even in mixed lists (ordered with nested unordered)
|
|
127
123
|
for &item_line in &list_block.item_lines {
|
|
128
124
|
if let Some(line_info) = ctx.line_info(item_line) {
|
|
129
125
|
if let Some(list_item) = &line_info.list_item {
|
|
130
|
-
// Skip ordered
|
|
126
|
+
// Skip ordered list items - we only care about unordered ones
|
|
131
127
|
if list_item.is_ordered {
|
|
132
128
|
continue;
|
|
133
129
|
}
|
|
@@ -245,16 +241,12 @@ impl Rule for MD004UnorderedListStyle {
|
|
|
245
241
|
|
|
246
242
|
// Use centralized list blocks
|
|
247
243
|
for list_block in &ctx.list_blocks {
|
|
248
|
-
// Skip ordered lists
|
|
249
|
-
if list_block.is_ordered {
|
|
250
|
-
continue;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
244
|
// Process each list item in this block
|
|
245
|
+
// We need to check individual items even in mixed lists
|
|
254
246
|
for &item_line in &list_block.item_lines {
|
|
255
247
|
if let Some(line_info) = ctx.line_info(item_line) {
|
|
256
248
|
if let Some(list_item) = &line_info.list_item {
|
|
257
|
-
// Skip ordered
|
|
249
|
+
// Skip ordered list items - we only care about unordered ones
|
|
258
250
|
if list_item.is_ordered {
|
|
259
251
|
continue;
|
|
260
252
|
}
|
|
@@ -615,12 +607,13 @@ mod tests {
|
|
|
615
607
|
#[test]
|
|
616
608
|
fn test_edge_case_marker_at_end() {
|
|
617
609
|
let rule = MD004UnorderedListStyle::new(UnorderedListStyle::Asterisk);
|
|
618
|
-
|
|
610
|
+
// These are valid list items with minimal content (just a space)
|
|
611
|
+
let content = "* \n- \n+ ";
|
|
619
612
|
let ctx = LintContext::new(content);
|
|
620
613
|
let result = rule.check(&ctx).unwrap();
|
|
621
|
-
assert_eq!(result.len(), 2);
|
|
614
|
+
assert_eq!(result.len(), 2); // Should flag - and + as wrong markers
|
|
622
615
|
let fixed = rule.fix(&ctx).unwrap();
|
|
623
|
-
assert_eq!(fixed, "
|
|
616
|
+
assert_eq!(fixed, "* \n* \n* ");
|
|
624
617
|
}
|
|
625
618
|
|
|
626
619
|
#[test]
|
|
@@ -16,21 +16,28 @@ use crate::utils::regex_cache::UNORDERED_LIST_MARKER_REGEX;
|
|
|
16
16
|
pub struct MD006StartBullets;
|
|
17
17
|
|
|
18
18
|
impl MD006StartBullets {
|
|
19
|
-
/// Check if a bullet is nested under an ordered list item
|
|
19
|
+
/// Check if a bullet is nested under an ordered list item (anywhere in the hierarchy)
|
|
20
20
|
fn is_nested_under_ordered_item(
|
|
21
21
|
&self,
|
|
22
22
|
ctx: &crate::lint_context::LintContext,
|
|
23
23
|
current_line: usize,
|
|
24
24
|
current_indent: usize,
|
|
25
25
|
) -> bool {
|
|
26
|
-
// Look backward from current line to find
|
|
26
|
+
// Look backward from current line to find any ordered ancestor
|
|
27
|
+
let mut check_indent = current_indent;
|
|
28
|
+
|
|
27
29
|
for line_idx in (1..current_line).rev() {
|
|
28
30
|
if let Some(line_info) = ctx.line_info(line_idx) {
|
|
29
31
|
if let Some(list_item) = &line_info.list_item {
|
|
30
|
-
// Found a list item - check if it's at a lower indentation (
|
|
31
|
-
if list_item.marker_column <
|
|
32
|
-
// This is
|
|
33
|
-
|
|
32
|
+
// Found a list item - check if it's at a lower indentation (ancestor level)
|
|
33
|
+
if list_item.marker_column < check_indent {
|
|
34
|
+
// This is an ancestor item
|
|
35
|
+
if list_item.is_ordered {
|
|
36
|
+
// Found an ordered ancestor
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
// Continue looking for higher-level ancestors
|
|
40
|
+
check_indent = list_item.marker_column;
|
|
34
41
|
}
|
|
35
42
|
}
|
|
36
43
|
// If we encounter non-blank, non-list content at column 0, stop looking
|
|
@@ -52,17 +59,17 @@ impl MD006StartBullets {
|
|
|
52
59
|
// Track which lines contain valid bullet items
|
|
53
60
|
let mut valid_bullet_lines = vec![false; lines.len()];
|
|
54
61
|
|
|
55
|
-
// Process each
|
|
62
|
+
// Process each list block
|
|
56
63
|
for list_block in &ctx.list_blocks {
|
|
57
|
-
// Skip ordered lists
|
|
58
|
-
if list_block.is_ordered {
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
64
|
// Check each list item in this block
|
|
65
|
+
// We need to check unordered items even in mixed lists
|
|
63
66
|
for &item_line in &list_block.item_lines {
|
|
64
67
|
if let Some(line_info) = ctx.line_info(item_line) {
|
|
65
68
|
if let Some(list_item) = &line_info.list_item {
|
|
69
|
+
// Skip ordered list items - we only care about unordered ones
|
|
70
|
+
if list_item.is_ordered {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
66
73
|
let line_idx = item_line - 1;
|
|
67
74
|
let indent = list_item.marker_column;
|
|
68
75
|
let line = &lines[line_idx];
|
|
@@ -73,9 +80,16 @@ impl MD006StartBullets {
|
|
|
73
80
|
// Top-level items are always valid
|
|
74
81
|
is_valid = true;
|
|
75
82
|
} else {
|
|
76
|
-
// Check if this is nested under an ordered item with correct indentation
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
// Check if this is nested under an ordered item with correct indentation
|
|
84
|
+
// For single-digit ordered lists (1.), need at least 3 spaces for proper nesting
|
|
85
|
+
// For double-digit (10.), need at least 4 spaces, etc.
|
|
86
|
+
// But MD006's purpose is to flag top-level indented lists, not validate nesting depth
|
|
87
|
+
if self.is_nested_under_ordered_item(ctx, item_line, indent) {
|
|
88
|
+
// It's nested under an ordered item
|
|
89
|
+
// Only flag if indentation is less than 3 (won't nest properly in CommonMark)
|
|
90
|
+
if indent >= 3 {
|
|
91
|
+
is_valid = true;
|
|
92
|
+
}
|
|
79
93
|
} else {
|
|
80
94
|
// Check if this is a valid nested item under another bullet
|
|
81
95
|
match Self::find_relevant_previous_bullet(&lines, line_idx) {
|
|
@@ -120,14 +134,28 @@ impl MD006StartBullets {
|
|
|
120
134
|
end_col - start_col,
|
|
121
135
|
);
|
|
122
136
|
|
|
137
|
+
// Generate appropriate message based on context
|
|
138
|
+
let message = if self.is_nested_under_ordered_item(ctx, item_line, indent) {
|
|
139
|
+
// It's trying to nest under an ordered item but has insufficient indentation
|
|
140
|
+
format!(
|
|
141
|
+
"Nested list needs at least 3 spaces of indentation under ordered item (found {indent})"
|
|
142
|
+
)
|
|
143
|
+
} else if indent > 0 {
|
|
144
|
+
// It's indented but not nested under anything - should start at column 0
|
|
145
|
+
format!(
|
|
146
|
+
"Consider starting bulleted lists at the beginning of the line (found {indent} leading spaces)"
|
|
147
|
+
)
|
|
148
|
+
} else {
|
|
149
|
+
// Shouldn't happen, but just in case
|
|
150
|
+
format!("List indentation issue (found {indent} leading spaces)")
|
|
151
|
+
};
|
|
152
|
+
|
|
123
153
|
result.push(LintWarning {
|
|
124
154
|
line: item_line,
|
|
125
155
|
column: start_col,
|
|
126
156
|
end_line: item_line,
|
|
127
157
|
end_column: end_col,
|
|
128
|
-
message
|
|
129
|
-
"Consider starting bulleted lists at the beginning of the line (found {indent} leading spaces)"
|
|
130
|
-
),
|
|
158
|
+
message,
|
|
131
159
|
severity: Severity::Warning,
|
|
132
160
|
rule_name: Some(self.name()),
|
|
133
161
|
fix: Some(Fix {
|
|
@@ -501,14 +529,14 @@ mod tests {
|
|
|
501
529
|
let content = "\
|
|
502
530
|
1. **Active Directory/LDAP**
|
|
503
531
|
- Wrong: only 2 spaces
|
|
504
|
-
|
|
532
|
+
- Wrong: only 1 space";
|
|
505
533
|
let ctx = crate::lint_context::LintContext::new(content);
|
|
506
534
|
let result = rule.check(&ctx).unwrap();
|
|
507
|
-
// Should flag the incorrect indentations
|
|
535
|
+
// Should flag the incorrect indentations (less than 3 spaces)
|
|
508
536
|
assert_eq!(
|
|
509
537
|
result.len(),
|
|
510
538
|
2,
|
|
511
|
-
"Expected warnings for bullets with
|
|
539
|
+
"Expected warnings for bullets with insufficient spacing under numbered items"
|
|
512
540
|
);
|
|
513
541
|
assert!(result.iter().any(|w| w.line == 2));
|
|
514
542
|
assert!(result.iter().any(|w| w.line == 3));
|
|
@@ -640,4 +640,19 @@ result = inspect.stack()[1]
|
|
|
640
640
|
assert_eq!(result.len(), 1, "Should only flag the actual reversed link");
|
|
641
641
|
assert_eq!(result[0].line, 4, "Should flag the reversed link on line 4");
|
|
642
642
|
}
|
|
643
|
+
|
|
644
|
+
#[test]
|
|
645
|
+
fn test_issue_26_specific_case() {
|
|
646
|
+
// Test for issue #26 - specific case reported
|
|
647
|
+
let rule = MD011NoReversedLinks;
|
|
648
|
+
|
|
649
|
+
let content = r#"The first thing I need to find is the name of the redacted key name, `doc.<key_name_omitted>`. I'll use `SUBSTRING(ATTRIBUTES(doc)[0], 0, 1) == '<c>'` as that test, where `<c>` is different characters. This gets the first attribute from `doc` and uses `SUBSTRING` to get the first character."#;
|
|
650
|
+
let ctx = LintContext::new(content);
|
|
651
|
+
let result = rule.check(&ctx).unwrap();
|
|
652
|
+
assert_eq!(
|
|
653
|
+
result.len(),
|
|
654
|
+
0,
|
|
655
|
+
"Should not flag ATTRIBUTES(doc)[0] inside inline code (issue #26)"
|
|
656
|
+
);
|
|
657
|
+
}
|
|
643
658
|
}
|