rumdl 0.0.106__tar.gz → 0.0.108__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.106 → rumdl-0.0.108}/.config/nextest.toml +21 -1
- {rumdl-0.0.106 → rumdl-0.0.108}/.pre-commit-config.yaml +38 -11
- {rumdl-0.0.106 → rumdl-0.0.108}/CHANGELOG.md +12 -1
- {rumdl-0.0.106 → rumdl-0.0.108}/Cargo.lock +15 -15
- {rumdl-0.0.106 → rumdl-0.0.108}/Cargo.toml +1 -1
- {rumdl-0.0.106 → rumdl-0.0.108}/Makefile +11 -1
- {rumdl-0.0.106 → rumdl-0.0.108}/PKG-INFO +1 -1
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md036.md +16 -13
- rumdl-0.0.108/src/bin/debug_frontmatter.rs +42 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/config.rs +40 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/lib.rs +11 -2
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md011_no_reversed_links.rs +53 -6
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md029_ordered_list_prefix.rs +125 -147
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md036_no_emphasis_only_first.rs +64 -99
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md037_spaces_around_emphasis.rs +100 -1
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md044_proper_names.rs +107 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md046_code_block_style.rs +130 -1
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md049_emphasis_style.rs +74 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md050_strong_style.rs +83 -6
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md052_reference_links_images.rs +155 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md058_blanks_around_tables.rs +30 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/table_utils.rs +36 -11
- {rumdl-0.0.106 → rumdl-0.0.108}/src/vscode.rs +31 -6
- rumdl-0.0.108/tests/cli_duplication_test.rs +58 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/init_tests.rs +27 -50
- rumdl-0.0.108/tests/integration_tests.rs +29 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/emphasis_edge_cases_test.rs +9 -7
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/inline_content_edge_cases_test.rs +4 -2
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md029_test.rs +71 -3
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md036_test.rs +19 -23
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md044_test.rs +2 -1
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md046_test.rs +123 -0
- rumdl-0.0.108/tests/vscode_windows_comprehensive_test.rs +263 -0
- rumdl-0.0.108/tests/vscode_windows_test.rs +113 -0
- rumdl-0.0.106/src/init.rs +0 -337
- rumdl-0.0.106/tests/cli_duplication_test.rs +0 -39
- rumdl-0.0.106/tests/integration_tests.rs +0 -18
- {rumdl-0.0.106 → rumdl-0.0.108}/.mise.toml +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/.rumdl.toml +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/.rustfmt.toml +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/LICENSE +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/MANIFEST.in +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/README.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/assets/logo.png +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benches/range_performance.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/bench_lint_context.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/benchmark.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/benchmark_rule.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/benchmark/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/RULES.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/global-settings.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md001.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md002.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md003.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md004.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md005.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md006.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md007.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md009.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md010.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md011.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md012.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md013.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md014.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md018.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md019.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md020.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md021.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md022.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md023.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md024.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md025.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md026.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md027.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md028.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md029.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md030.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md031.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md032.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md033.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md034.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md035.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md037.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md038.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md039.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md040.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md041.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md042.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md043.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md044.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md045.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md046.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md047.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md048.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md049.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md050.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md051.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md052.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md053.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md054.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md055.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md056.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md057.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/md058.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/parity_check.py +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/pyproject.toml +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/python/MANIFEST.in +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/rumdl.toml.example +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/rust-toolchain.toml +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/scripts/setup-pre-commit.sh +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/scripts/update-pre-commit-docs.sh +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/exit_codes.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/inline_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/lint_context.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/lsp/server.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/lsp/types.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/main.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/output/mod.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/parallel.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/performance.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/profiling.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/python.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rule.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rule_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/heading_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md013_line_length.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md032_blanks_around_lists.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md051_link_fragments.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/mod.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/fix_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/mod.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/src/utils/text_reflow.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_explain_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_flag_precedence_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/config_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/deeply_nested_lists_performance_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/escaped_brackets_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/inline_config_blocks_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/lib.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/lsp_memory_leak_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/md013_reflow_integration_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/nested_code_block_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/perf_check.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/python_bindings_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/heading_edge_cases_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/link_edge_cases_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/list_rules_integration_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md005_unicode_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md029_unicode_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md034_ipv6_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md038_nested_backticks_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md051_unicode_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/rules_mod_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/thread_safety_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/vscode_extension_fixes.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/vscode_test.rs +0 -0
- {rumdl-0.0.106 → rumdl-0.0.108}/tests/vscode_tests.rs +0 -0
|
@@ -43,4 +43,24 @@ default-filter = 'not test(/memory/) and not test(/stress/) and not test(/large/
|
|
|
43
43
|
test-threads = "num-cpus"
|
|
44
44
|
|
|
45
45
|
# Less verbose output
|
|
46
|
-
status-level = "fail"
|
|
46
|
+
status-level = "fail"
|
|
47
|
+
|
|
48
|
+
# Ultra-fast profile for pre-commit hooks
|
|
49
|
+
[profile.pre-commit]
|
|
50
|
+
|
|
51
|
+
# 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/)'
|
|
53
|
+
|
|
54
|
+
# Maximum parallelism for speed
|
|
55
|
+
test-threads = "num-cpus"
|
|
56
|
+
|
|
57
|
+
# Minimal output for speed
|
|
58
|
+
status-level = "fail"
|
|
59
|
+
failure-output = "immediate"
|
|
60
|
+
success-output = "never"
|
|
61
|
+
|
|
62
|
+
# No retries to save time
|
|
63
|
+
retries = 0
|
|
64
|
+
|
|
65
|
+
# Fail fast on first failure
|
|
66
|
+
fail-fast = true
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Pre-commit hooks for rumdl
|
|
2
|
-
# Install with:
|
|
3
|
-
#
|
|
2
|
+
# Install with:
|
|
3
|
+
# pre-commit install # Install commit hooks
|
|
4
|
+
# pre-commit install --hook-type pre-push # Install push hooks
|
|
5
|
+
# Run manually:
|
|
6
|
+
# pre-commit run --all-files # Run commit hooks
|
|
7
|
+
# pre-commit run --hook-stage push --all-files # Run push hooks
|
|
4
8
|
|
|
5
9
|
repos:
|
|
6
10
|
# Rust formatting and linting
|
|
@@ -15,26 +19,19 @@ repos:
|
|
|
15
19
|
|
|
16
20
|
- id: cargo-clippy
|
|
17
21
|
name: cargo clippy
|
|
18
|
-
entry: make lint
|
|
22
|
+
entry: make lint-fast
|
|
19
23
|
language: system
|
|
20
24
|
types: [rust]
|
|
21
25
|
pass_filenames: false
|
|
22
26
|
|
|
23
27
|
- id: cargo-test-quick
|
|
24
28
|
name: cargo test (quick)
|
|
25
|
-
entry: make test-
|
|
29
|
+
entry: make test-pre-commit
|
|
26
30
|
language: system
|
|
27
31
|
types: [rust]
|
|
28
32
|
pass_filenames: false
|
|
29
33
|
stages: [pre-commit]
|
|
30
34
|
|
|
31
|
-
- id: cargo-check
|
|
32
|
-
name: cargo check
|
|
33
|
-
entry: cargo check --all-targets --all-features
|
|
34
|
-
language: system
|
|
35
|
-
types: [rust]
|
|
36
|
-
pass_filenames: false
|
|
37
|
-
|
|
38
35
|
# General file quality checks
|
|
39
36
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
40
37
|
rev: v4.6.0
|
|
@@ -57,3 +54,33 @@ repos:
|
|
|
57
54
|
hooks:
|
|
58
55
|
- id: rumdl
|
|
59
56
|
exclude: ^(test_tmp|benchmark/test-data|docs/temp|CHANGELOG\.md)
|
|
57
|
+
|
|
58
|
+
# Pre-push hooks for comprehensive validation
|
|
59
|
+
- repo: local
|
|
60
|
+
hooks:
|
|
61
|
+
- id: cargo-test-full
|
|
62
|
+
name: cargo test (full suite)
|
|
63
|
+
entry: make test-push
|
|
64
|
+
language: system
|
|
65
|
+
types: [rust]
|
|
66
|
+
pass_filenames: false
|
|
67
|
+
stages: [push]
|
|
68
|
+
verbose: true
|
|
69
|
+
|
|
70
|
+
- id: cargo-lint-full
|
|
71
|
+
name: cargo clippy (all targets)
|
|
72
|
+
entry: make lint
|
|
73
|
+
language: system
|
|
74
|
+
types: [rust]
|
|
75
|
+
pass_filenames: false
|
|
76
|
+
stages: [push]
|
|
77
|
+
verbose: true
|
|
78
|
+
|
|
79
|
+
- id: cargo-doc-check
|
|
80
|
+
name: cargo doc (check)
|
|
81
|
+
entry: cargo doc --no-deps --all-features
|
|
82
|
+
language: system
|
|
83
|
+
types: [rust]
|
|
84
|
+
pass_filenames: false
|
|
85
|
+
stages: [push]
|
|
86
|
+
verbose: true
|
|
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.0.107] - 2025-08-06
|
|
11
|
+
|
|
12
|
+
## [0.0.107] - 2025-08-06
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- MD036: Remove automatic fix to prevent document corruption when bold/italic text is used as image captions, labels, or warnings (#23)
|
|
16
|
+
- MD011: No longer flags patterns like `()[1]` inside inline code as reversed links (#19)
|
|
17
|
+
- MD052: No longer flags reference patterns inside HTML comments as undefined references (#20)
|
|
18
|
+
|
|
10
19
|
## [0.0.106] - 2025-08-05
|
|
11
20
|
|
|
12
21
|
### Changed
|
|
@@ -289,7 +298,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
289
298
|
|
|
290
299
|
- Initial implementation of remaining rules for markdownlint parity
|
|
291
300
|
|
|
292
|
-
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.
|
|
301
|
+
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.107...HEAD
|
|
302
|
+
[0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
|
|
303
|
+
[0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
|
|
293
304
|
[0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
|
|
294
305
|
[0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
|
|
295
306
|
[0.0.104]: https://github.com/rvben/rumdl/compare/v0.0.103...v0.0.104
|
|
@@ -49,9 +49,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
|
|
|
49
49
|
|
|
50
50
|
[[package]]
|
|
51
51
|
name = "anstream"
|
|
52
|
-
version = "0.6.
|
|
52
|
+
version = "0.6.20"
|
|
53
53
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
54
|
-
checksum = "
|
|
54
|
+
checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192"
|
|
55
55
|
dependencies = [
|
|
56
56
|
"anstyle",
|
|
57
57
|
"anstyle-parse",
|
|
@@ -79,22 +79,22 @@ dependencies = [
|
|
|
79
79
|
|
|
80
80
|
[[package]]
|
|
81
81
|
name = "anstyle-query"
|
|
82
|
-
version = "1.1.
|
|
82
|
+
version = "1.1.4"
|
|
83
83
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
84
|
-
checksum = "
|
|
84
|
+
checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2"
|
|
85
85
|
dependencies = [
|
|
86
|
-
"windows-sys 0.
|
|
86
|
+
"windows-sys 0.60.2",
|
|
87
87
|
]
|
|
88
88
|
|
|
89
89
|
[[package]]
|
|
90
90
|
name = "anstyle-wincon"
|
|
91
|
-
version = "3.0.
|
|
91
|
+
version = "3.0.10"
|
|
92
92
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
93
|
-
checksum = "
|
|
93
|
+
checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a"
|
|
94
94
|
dependencies = [
|
|
95
95
|
"anstyle",
|
|
96
96
|
"once_cell_polyfill",
|
|
97
|
-
"windows-sys 0.
|
|
97
|
+
"windows-sys 0.60.2",
|
|
98
98
|
]
|
|
99
99
|
|
|
100
100
|
[[package]]
|
|
@@ -277,9 +277,9 @@ dependencies = [
|
|
|
277
277
|
|
|
278
278
|
[[package]]
|
|
279
279
|
name = "clap"
|
|
280
|
-
version = "4.5.
|
|
280
|
+
version = "4.5.43"
|
|
281
281
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
282
|
-
checksum = "
|
|
282
|
+
checksum = "50fd97c9dc2399518aa331917ac6f274280ec5eb34e555dd291899745c48ec6f"
|
|
283
283
|
dependencies = [
|
|
284
284
|
"clap_builder",
|
|
285
285
|
"clap_derive",
|
|
@@ -287,9 +287,9 @@ dependencies = [
|
|
|
287
287
|
|
|
288
288
|
[[package]]
|
|
289
289
|
name = "clap_builder"
|
|
290
|
-
version = "4.5.
|
|
290
|
+
version = "4.5.43"
|
|
291
291
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
292
|
-
checksum = "
|
|
292
|
+
checksum = "c35b5830294e1fa0462034af85cc95225a4cb07092c088c55bda3147cfcd8f65"
|
|
293
293
|
dependencies = [
|
|
294
294
|
"anstream",
|
|
295
295
|
"anstyle",
|
|
@@ -1493,7 +1493,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
|
|
1493
1493
|
|
|
1494
1494
|
[[package]]
|
|
1495
1495
|
name = "rumdl"
|
|
1496
|
-
version = "0.0.
|
|
1496
|
+
version = "0.0.108"
|
|
1497
1497
|
dependencies = [
|
|
1498
1498
|
"anyhow",
|
|
1499
1499
|
"assert_cmd",
|
|
@@ -2527,9 +2527,9 @@ dependencies = [
|
|
|
2527
2527
|
|
|
2528
2528
|
[[package]]
|
|
2529
2529
|
name = "zerovec"
|
|
2530
|
-
version = "0.11.
|
|
2530
|
+
version = "0.11.4"
|
|
2531
2531
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2532
|
-
checksum = "
|
|
2532
|
+
checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
|
|
2533
2533
|
dependencies = [
|
|
2534
2534
|
"yoke",
|
|
2535
2535
|
"zerofrom",
|
|
@@ -69,6 +69,13 @@ test-nextest:
|
|
|
69
69
|
test-quick:
|
|
70
70
|
cargo nextest run --profile quick
|
|
71
71
|
|
|
72
|
+
test-pre-commit:
|
|
73
|
+
cargo nextest run --profile pre-commit
|
|
74
|
+
|
|
75
|
+
test-push:
|
|
76
|
+
@echo "Running full test suite (this may take a few minutes)..."
|
|
77
|
+
cargo nextest run
|
|
78
|
+
|
|
72
79
|
test-ci:
|
|
73
80
|
cargo nextest run --profile ci
|
|
74
81
|
|
|
@@ -81,7 +88,10 @@ fmt:
|
|
|
81
88
|
cargo fix --allow-dirty --allow-staged
|
|
82
89
|
|
|
83
90
|
lint:
|
|
84
|
-
cargo clippy --all-targets --all-features -- -D warnings
|
|
91
|
+
CARGO_INCREMENTAL=1 cargo clippy --all-targets --all-features -- -D warnings
|
|
92
|
+
|
|
93
|
+
lint-fast:
|
|
94
|
+
CARGO_INCREMENTAL=1 cargo clippy --workspace --lib --bins -- -D warnings
|
|
85
95
|
|
|
86
96
|
check:
|
|
87
97
|
cargo check --all-targets --all-features
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# MD036 - Use real headings, not just bold text
|
|
2
2
|
|
|
3
|
+
> **Note:** This rule does not provide automatic fixes because it cannot reliably determine user intent. Bold text on its own line has many legitimate uses (image captions, labels, warnings, etc.).
|
|
4
|
+
|
|
3
5
|
## What this rule does
|
|
4
6
|
|
|
5
|
-
Detects when bold or italic text is used as a standalone heading
|
|
7
|
+
Detects when bold or italic text is used as a standalone heading.
|
|
6
8
|
|
|
7
9
|
## Why this matters
|
|
8
10
|
|
|
@@ -43,9 +45,9 @@ Using emphasis as headings:
|
|
|
43
45
|
**Configuration:**
|
|
44
46
|
```
|
|
45
47
|
|
|
46
|
-
### 🔧
|
|
48
|
+
### 🔧 Manual Fix Required
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
These should be manually converted to proper headings:
|
|
49
51
|
|
|
50
52
|
```markdown
|
|
51
53
|
## This looks like a heading
|
|
@@ -57,28 +59,29 @@ Converted to proper headings:
|
|
|
57
59
|
## Configuration
|
|
58
60
|
```
|
|
59
61
|
|
|
62
|
+
**Note:** rumdl will detect these issues but won't automatically fix them. You need to manually decide if the emphasized text should be a heading.
|
|
63
|
+
|
|
60
64
|
<!-- rumdl-enable MD036 -->
|
|
61
65
|
|
|
62
66
|
## Configuration
|
|
63
67
|
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
```toml
|
|
69
|
+
# .rumdl.toml
|
|
70
|
+
[MD036]
|
|
71
|
+
punctuation = ".,;:!?" # Configure punctuation checking
|
|
67
72
|
```
|
|
68
73
|
|
|
69
74
|
### Options
|
|
70
75
|
|
|
71
|
-
- `punctuation`: String of punctuation marks
|
|
72
|
-
- Set to `""` to
|
|
76
|
+
- `punctuation`: String of punctuation marks that, when found at the end of emphasized text, prevent it from being flagged (default: `".,;:!?"`)
|
|
77
|
+
- Set to `""` to flag all emphasized lines regardless of punctuation
|
|
73
78
|
- Customize to remove only specific marks
|
|
74
79
|
|
|
75
80
|
## Automatic fixes
|
|
76
81
|
|
|
77
|
-
This rule
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
- Choose appropriate heading level (## for bold, # for italic)
|
|
81
|
-
- Preserve common labels like "Table of Contents" as-is
|
|
82
|
+
This rule does **not** provide automatic fixes. Converting bold or italic text to headings is too risky as it can corrupt documents. For example, bold text is often used for image captions, labels, or other legitimate emphasis that should not be converted to headings.
|
|
83
|
+
|
|
84
|
+
Users should manually review each warning and decide whether the emphasized text should be converted to a heading.
|
|
82
85
|
|
|
83
86
|
## Learn more
|
|
84
87
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
use rumdl::rules::front_matter_utils::FrontMatterUtils;
|
|
2
|
+
use std::env;
|
|
3
|
+
use std::fs;
|
|
4
|
+
|
|
5
|
+
fn main() {
|
|
6
|
+
let args: Vec<String> = env::args().collect();
|
|
7
|
+
let content = if args.len() > 1 {
|
|
8
|
+
fs::read_to_string(&args[1]).expect("Failed to read file")
|
|
9
|
+
} else {
|
|
10
|
+
r#"+++
|
|
11
|
+
title = "My Post"
|
|
12
|
+
tags = ["example", "test"]
|
|
13
|
+
+++
|
|
14
|
+
|
|
15
|
+
# Content
|
|
16
|
+
|
|
17
|
+
[missing] reference should be flagged."#
|
|
18
|
+
.to_string()
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
println!("Content:");
|
|
22
|
+
for (i, line) in content.lines().enumerate() {
|
|
23
|
+
println!("Line {}: {}", i + 1, line);
|
|
24
|
+
}
|
|
25
|
+
println!();
|
|
26
|
+
|
|
27
|
+
let line_count = content.lines().count();
|
|
28
|
+
|
|
29
|
+
// Test with 0-based indexing (what the function actually uses)
|
|
30
|
+
println!("Testing is_in_front_matter with 0-based indexing:");
|
|
31
|
+
for i in 0..line_count {
|
|
32
|
+
let in_frontmatter = FrontMatterUtils::is_in_front_matter(&content, i);
|
|
33
|
+
println!("Line {} (0-based={}): in_frontmatter={}", i + 1, i, in_frontmatter);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Test also with 1-based indexing (what we pass from MD052)
|
|
37
|
+
println!("\nTesting is_in_front_matter with 1-based indexing:");
|
|
38
|
+
for i in 1..=line_count {
|
|
39
|
+
let in_frontmatter = FrontMatterUtils::is_in_front_matter(&content, i);
|
|
40
|
+
println!("Line {i}: in_frontmatter={in_frontmatter}");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -862,6 +862,46 @@ local_time = 07:32:00
|
|
|
862
862
|
// Note: local_date and local_time might not be parsed by the current implementation
|
|
863
863
|
}
|
|
864
864
|
}
|
|
865
|
+
|
|
866
|
+
#[test]
|
|
867
|
+
fn test_default_config_passes_validation() {
|
|
868
|
+
use crate::rules;
|
|
869
|
+
|
|
870
|
+
let temp_dir = tempdir().unwrap();
|
|
871
|
+
let config_path = temp_dir.path().join(".rumdl.toml");
|
|
872
|
+
let config_path_str = config_path.to_str().unwrap();
|
|
873
|
+
|
|
874
|
+
// Create the default config using the same function that `rumdl init` uses
|
|
875
|
+
create_default_config(config_path_str).unwrap();
|
|
876
|
+
|
|
877
|
+
// Load it back as a SourcedConfig
|
|
878
|
+
let sourced =
|
|
879
|
+
SourcedConfig::load(Some(config_path_str), None).expect("Default config should load successfully");
|
|
880
|
+
|
|
881
|
+
// Create the rule registry
|
|
882
|
+
let all_rules = rules::all_rules(&Config::default());
|
|
883
|
+
let registry = RuleRegistry::from_rules(&all_rules);
|
|
884
|
+
|
|
885
|
+
// Validate the config
|
|
886
|
+
let warnings = validate_config_sourced(&sourced, ®istry);
|
|
887
|
+
|
|
888
|
+
// The default config should have no warnings
|
|
889
|
+
if !warnings.is_empty() {
|
|
890
|
+
for warning in &warnings {
|
|
891
|
+
eprintln!("Config validation warning: {}", warning.message);
|
|
892
|
+
if let Some(rule) = &warning.rule {
|
|
893
|
+
eprintln!(" Rule: {rule}");
|
|
894
|
+
}
|
|
895
|
+
if let Some(key) = &warning.key {
|
|
896
|
+
eprintln!(" Key: {key}");
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
assert!(
|
|
901
|
+
warnings.is_empty(),
|
|
902
|
+
"Default config from rumdl init should pass validation without warnings"
|
|
903
|
+
);
|
|
904
|
+
}
|
|
865
905
|
}
|
|
866
906
|
|
|
867
907
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
pub mod config;
|
|
2
2
|
pub mod exit_codes;
|
|
3
|
-
pub mod init;
|
|
4
3
|
pub mod inline_config;
|
|
5
4
|
pub mod lint_context;
|
|
6
5
|
pub mod lsp;
|
|
@@ -190,8 +189,18 @@ pub fn lint(content: &str, rules: &[Box<dyn Rule>], _verbose: bool) -> LintResul
|
|
|
190
189
|
let filtered_warnings: Vec<_> = rule_warnings
|
|
191
190
|
.into_iter()
|
|
192
191
|
.filter(|warning| {
|
|
192
|
+
// Use the warning's rule_name if available, otherwise use the rule's name
|
|
193
|
+
let rule_name_to_check = warning.rule_name.unwrap_or(rule.name());
|
|
194
|
+
|
|
195
|
+
// Extract the base rule name for sub-rules like "MD029-style" -> "MD029"
|
|
196
|
+
let base_rule_name = if let Some(dash_pos) = rule_name_to_check.find('-') {
|
|
197
|
+
&rule_name_to_check[..dash_pos]
|
|
198
|
+
} else {
|
|
199
|
+
rule_name_to_check
|
|
200
|
+
};
|
|
201
|
+
|
|
193
202
|
!inline_config.is_rule_disabled(
|
|
194
|
-
|
|
203
|
+
base_rule_name,
|
|
195
204
|
warning.line, // Already 1-indexed
|
|
196
205
|
)
|
|
197
206
|
})
|
|
@@ -204,18 +204,18 @@ impl Rule for MD011NoReversedLinks {
|
|
|
204
204
|
let mut byte_pos = 0;
|
|
205
205
|
|
|
206
206
|
for (line_num, line) in content.lines().enumerate() {
|
|
207
|
-
// Skip if this line is in a code block
|
|
208
|
-
if ctx.is_in_code_block_or_span(byte_pos) {
|
|
209
|
-
byte_pos += line.len() + 1;
|
|
210
|
-
continue;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
207
|
// Part 1: Check for existing perfectly formed reversed links
|
|
214
208
|
for cap in REVERSED_LINK_CHECK_REGEX.captures_iter(line) {
|
|
215
209
|
let match_obj = cap.get(0).unwrap();
|
|
216
210
|
let match_start = match_obj.start();
|
|
217
211
|
let match_end = match_obj.end();
|
|
218
212
|
|
|
213
|
+
// Check if this specific match is within a code block or inline code span
|
|
214
|
+
let match_byte_pos = byte_pos + match_start;
|
|
215
|
+
if ctx.is_in_code_block_or_span(match_byte_pos) {
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
219
|
// Check if the match contains escaped brackets or parentheses
|
|
220
220
|
let match_text = match_obj.as_str();
|
|
221
221
|
|
|
@@ -277,6 +277,12 @@ impl Rule for MD011NoReversedLinks {
|
|
|
277
277
|
// Part 2: Check for malformed link attempts where user intent is clear
|
|
278
278
|
let malformed_attempts = self.detect_malformed_link_attempts(line);
|
|
279
279
|
for (start, len, url, text) in malformed_attempts {
|
|
280
|
+
// Check if this specific match is within a code block or inline code span
|
|
281
|
+
let match_byte_pos = byte_pos + start;
|
|
282
|
+
if ctx.is_in_code_block_or_span(match_byte_pos) {
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
|
|
280
286
|
// Calculate precise character range for the malformed syntax
|
|
281
287
|
let (start_line, start_col, end_line, end_col) = calculate_match_range(line_num + 1, line, start, len);
|
|
282
288
|
|
|
@@ -593,4 +599,45 @@ But this (https://example.com)[reversed link] should be flagged."#;
|
|
|
593
599
|
let result = rule.check(&ctx).unwrap();
|
|
594
600
|
assert_eq!(result.len(), 1, "Should still flag URLs with nested parentheses");
|
|
595
601
|
}
|
|
602
|
+
|
|
603
|
+
#[test]
|
|
604
|
+
fn test_inline_code_patterns() {
|
|
605
|
+
// Test for issue #19 - MD011 should not flag patterns inside inline code
|
|
606
|
+
let rule = MD011NoReversedLinks;
|
|
607
|
+
|
|
608
|
+
// Test the exact case from issue #19
|
|
609
|
+
let content = "I find `inspect.stack()[1].frame` a lot easier to understand (or at least guess about) at a glance than `inspect.stack()[1][0]`.";
|
|
610
|
+
let ctx = LintContext::new(content);
|
|
611
|
+
let result = rule.check(&ctx).unwrap();
|
|
612
|
+
assert_eq!(result.len(), 0, "Should not flag ()[1] patterns inside inline code");
|
|
613
|
+
|
|
614
|
+
// Test other patterns that might look like reversed links in code
|
|
615
|
+
let content = "Use `array()[0]` or `func()[1]` to access elements.";
|
|
616
|
+
let ctx = LintContext::new(content);
|
|
617
|
+
let result = rule.check(&ctx).unwrap();
|
|
618
|
+
assert_eq!(result.len(), 0, "Should not flag array access patterns in inline code");
|
|
619
|
+
|
|
620
|
+
// Test that actual reversed links outside code are still caught
|
|
621
|
+
let content = "Check out (https://example.com)[this link] and use `array()[1]`.";
|
|
622
|
+
let ctx = LintContext::new(content);
|
|
623
|
+
let result = rule.check(&ctx).unwrap();
|
|
624
|
+
assert_eq!(result.len(), 1, "Should flag actual reversed link but not code pattern");
|
|
625
|
+
assert!(result[0].message.contains("Reversed link syntax"));
|
|
626
|
+
|
|
627
|
+
// Test mixed scenario with code blocks
|
|
628
|
+
let content = r#"
|
|
629
|
+
Here's some code: `func()[1]` and `other()[2]`.
|
|
630
|
+
|
|
631
|
+
But this is wrong: (https://example.com)[Click here]
|
|
632
|
+
|
|
633
|
+
```python
|
|
634
|
+
# This should not be flagged
|
|
635
|
+
result = inspect.stack()[1]
|
|
636
|
+
```
|
|
637
|
+
"#;
|
|
638
|
+
let ctx = LintContext::new(content);
|
|
639
|
+
let result = rule.check(&ctx).unwrap();
|
|
640
|
+
assert_eq!(result.len(), 1, "Should only flag the actual reversed link");
|
|
641
|
+
assert_eq!(result[0].line, 4, "Should flag the reversed link on line 4");
|
|
642
|
+
}
|
|
596
643
|
}
|