rumdl 0.0.168__tar.gz → 0.0.169__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.168 → rumdl-0.0.169}/CHANGELOG.md +86 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/Cargo.lock +1 -1
- {rumdl-0.0.168 → rumdl-0.0.169}/Cargo.toml +1 -21
- {rumdl-0.0.168 → rumdl-0.0.169}/Makefile +3 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/PKG-INFO +1 -1
- rumdl-0.0.169/examples/profile_quadratic.rs +75 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/config.rs +55 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/file_processor.rs +11 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/filtered_lines.rs +3 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/lib.rs +11 -32
- {rumdl-0.0.168 → rumdl-0.0.169}/src/lint_context.rs +656 -356
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rule.rs +0 -5
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md002_first_heading_h1.rs +1 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md006_start_bullets.rs +2 -4
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md009_trailing_spaces.rs +2 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md010_no_hard_tabs.rs +3 -3
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md011_no_reversed_links.rs +133 -26
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md012_no_multiple_blanks.rs +2 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md013_line_length.rs +267 -30
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md014_commands_show_output.rs +3 -3
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md026_no_trailing_punctuation.rs +2 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md031_blanks_around_fences.rs +3 -3
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md032_blanks_around_lists.rs +2 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md033_no_inline_html.rs +15 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md034_no_bare_urls.rs +5 -25
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md035_hr_style.rs +3 -3
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md037_spaces_around_emphasis.rs +4 -20
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md038_no_space_in_code.rs +39 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md040_fenced_code_language.rs +70 -5
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md041_first_line_heading.rs +4 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md044_proper_names.rs +1 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md046_code_block_style.rs +149 -82
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md048_code_fence_style.rs +2 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md049_emphasis_style.rs +3 -20
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md050_strong_style.rs +2 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md051_link_fragments.rs +52 -1
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md055_table_pipe_style.rs +6 -6
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md056_table_column_count.rs +4 -4
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md057_existing_relative_links.rs +1 -2
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md058_blanks_around_tables.rs +5 -6
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/jinja_utils.rs +19 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocstrings_refs.rs +61 -1
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/skip_context.rs +36 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/table_utils.rs +19 -3
- rumdl-0.0.169/tests/rules/md011_test.rs +196 -0
- rumdl-0.0.168/tests/rules/md011_test.rs +0 -56
- {rumdl-0.0.168 → rumdl-0.0.169}/.config/nextest.toml +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/.mise.toml +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/.pre-commit-config.yaml +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/.rumdl.toml +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/.rustfmt.toml +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/CONTRIBUTING.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/LICENSE +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/MANIFEST.in +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/README.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/assets/logo.png +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benches/range_performance.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benchmark/bin/bench_lint_context.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benchmark/bin/benchmark.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benchmark/bin/benchmark_rule.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benchmark/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/benchmark/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/cliff.toml +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/RULES.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/global-settings.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/inline-configuration.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md001.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md002.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md003.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md004.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md005.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md006.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md007.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md009.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md010.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md011.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md012.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md013.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md014.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md018.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md019.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md020.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md021.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md022.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md023.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md024.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md025.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md026.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md027.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md028.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md029.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md030.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md031.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md032.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md033.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md034.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md035.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md036.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md037.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md038.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md039.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md040.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md041.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md042.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md043.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md044.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md045.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md046.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md047.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md048.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md049.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md050.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md051.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md052.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md053.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md054.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md055.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md056.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md057.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/md058.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/pyproject.toml +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/rumdl/__init__.py +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/rumdl/__main__.py +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/rumdl/py.typed +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/rumdl.schema.json +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/rumdl.toml.example +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/rust-toolchain.toml +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/scripts/generate-downloads-table.sh +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/scripts/pre-release.sh +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/scripts/setup-pre-commit.sh +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/scripts/update-pre-commit-docs.sh +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/scripts/verify-release-ready.sh +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/cache.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/exit_codes.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/fix_coordinator.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/formatter.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/inline_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/lsp/server.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/lsp/types.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/main.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/output/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/parallel.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/performance.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/profiling.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rule_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/heading_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md029_ordered_list_prefix.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md036_no_emphasis_only_first.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/stdin_processor.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/anchor_styles/github.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/anchor_styles/jekyll.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/anchor_styles/kramdown.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/anchor_styles/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/fix_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/header_id_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/kramdown_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/line_ending.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocs_admonitions.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocs_common.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocs_critic.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocs_footnotes.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocs_patterns.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocs_snippets.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocs_tabs.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mkdocs_test_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/utils/text_reflow.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/vscode.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/src/watch.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/cli_explain_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/cli_flag_precedence_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/code_block_blockquote_edge_cases.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/common/cli_test_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/common/fixtures.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/common/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/common/test_utils.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/config_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/config_upward_traversal_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/crlf_line_endings_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/deeply_nested_lists_performance_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/escaped_brackets_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/exclude_with_explicit_paths_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/fix_counting_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/fix_performance_baseline_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/fixable_unfixable_config_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/html_comments_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/init_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/inline_config_blocks_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/kramdown_integration_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lib.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lsp_formatting_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lsp_initialization_options_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lsp_memory_leak_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lsp_mkdocs_flavor_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/lsp_unopened_document_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md009_md013_integration_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md009_md013_order_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md013_hard_breaks_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md013_reflow_integration_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md013_reflow_nested_lists_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md032_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md032_ordered_list_bug_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md033_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md037_xxxx_regression_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md038_false_positive_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md051_readme_bug_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md051_toc_bug_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md052_literal_brackets_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/md054_code_span_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/mkdocs_anchor_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/mkdocs_anchor_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/nested_code_block_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/per_file_ignores_integration_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/perf_check.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/emphasis_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/heading_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/inline_content_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/link_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/list_rules_integration_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md005_dynamic_indent_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md005_unicode_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md026_kramdown_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md028_md009_interaction_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md029_code_block_separation_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md029_fix_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md029_issue42_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md029_markdownlint_parity_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md029_nested_list_continuation_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md029_unicode_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md031_kramdown_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md033_blockquote_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md033_kramdown_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md034_ipv6_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md037_kramdown_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md038_nested_backticks_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_comprehensive_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_property_based_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_regression_prevention_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md051_unicode_security_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md058_kramdown_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/mkdocs_admonitions_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/mkdocs_edge_cases_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/mkdocs_extensions_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/mkdocs_snippets_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules/rule_interaction_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/rules_mod_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/schema_validation_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/sentence_per_line_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/skip_context_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/test_ast_code_block_issue.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/test_gfm_vs_default_parsing.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/test_lint_context_flow.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/test_list_ast_structure.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/test_multiline_ast.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/test_underscore_edge_cases.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/thread_safety_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/unfixable_rules_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utf8_boundary_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/vscode_extension_fixes.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/vscode_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/vscode_tests.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/vscode_windows_comprehensive_test.rs +0 -0
- {rumdl-0.0.168 → rumdl-0.0.169}/tests/vscode_windows_test.rs +0 -0
|
@@ -7,6 +7,92 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.0.169] - 2025-10-30
|
|
11
|
+
|
|
12
|
+
### Performance
|
|
13
|
+
|
|
14
|
+
**MASSIVE PERFORMANCE IMPROVEMENTS**: This release delivers 7-53x faster linting through systematic elimination of O(n²) bottlenecks and algorithmic optimizations. rumdl is now 16-29x faster than markdownlint-cli2 on real-world repositories.
|
|
15
|
+
|
|
16
|
+
- **Fix catastrophic O(n²) bottleneck in FilteredLinesIter** ⭐ THE GAME CHANGER
|
|
17
|
+
- Eliminated `content.lines().collect()` from inside Iterator::next() method
|
|
18
|
+
- Single-file optimization delivered 7,600x speedup for affected rules
|
|
19
|
+
- MD011: 6.00s → 0.785ms (7,644x faster)
|
|
20
|
+
- MD012: 5.95s → 1.643ms (3,621x faster)
|
|
21
|
+
- Impact: Stress test (10k lines): 9,987ms → 187ms (53x faster)
|
|
22
|
+
- Impact: Rust Book (478 files): 2,646ms → 269ms (9.8x faster)
|
|
23
|
+
- Impact: PyO3 (76 files): 2,004ms → 262ms (7.6x faster)
|
|
24
|
+
|
|
25
|
+
- **Pre-compute LintContext data structures to eliminate redundant work**
|
|
26
|
+
- LineIndex: Eliminated 46× content cloning across all rules
|
|
27
|
+
- Jinja template ranges: Pre-computed once instead of O(n×m) scanning
|
|
28
|
+
- Table blocks: Computed once instead of 4× independent scans per document
|
|
29
|
+
- HTML comment ranges: Pre-computed with 50-70x speedup
|
|
30
|
+
- Code block line mapping: Optimized with binary search instead of linear scan
|
|
31
|
+
- Autodoc blocks (MkDocs): Pre-computed to avoid O(n²) scaling
|
|
32
|
+
|
|
33
|
+
- **Optimize link and image parsing with binary search**
|
|
34
|
+
- Replaced linear search with binary search for code span checks
|
|
35
|
+
- Faster link/image parsing across all reference-based rules
|
|
36
|
+
|
|
37
|
+
- **Replace regex with byte-level parsing for better performance**
|
|
38
|
+
- List detection: Manual byte scanning instead of regex
|
|
39
|
+
- Blockquote prefix: Byte-level parsing instead of regex
|
|
40
|
+
- Line info parsing: Eliminated redundant blockquote prefix parsing
|
|
41
|
+
|
|
42
|
+
- **Streaming parser architecture**
|
|
43
|
+
- Replaced AST parsing with pulldown-cmark streaming for lower memory overhead
|
|
44
|
+
- Better scalability for very large documents
|
|
45
|
+
|
|
46
|
+
- **MD046 optimization**
|
|
47
|
+
- Pre-compute list/tab contexts
|
|
48
|
+
- Use ctx.code_blocks instead of independent detection
|
|
49
|
+
|
|
50
|
+
### Benchmarks
|
|
51
|
+
|
|
52
|
+
**vs Previous Version (v0.0.168):**
|
|
53
|
+
- Rust Book (478 files): 2,646ms → 269ms (9.8x faster)
|
|
54
|
+
- Stress Test (10,514 lines): 9,987ms → 187ms (53.4x faster)
|
|
55
|
+
- PyO3 (76 files): 2,004ms → 262ms (7.6x faster)
|
|
56
|
+
|
|
57
|
+
**vs markdownlint-cli2 (industry standard):**
|
|
58
|
+
- Rust Book: 10.3s vs 0.35s (29.4x faster)
|
|
59
|
+
- PyO3: 4.4s vs 0.26s (16.9x faster)
|
|
60
|
+
|
|
61
|
+
**Current Performance:**
|
|
62
|
+
- 0.7ms per file (Rust Book)
|
|
63
|
+
- 6.3x parallelization efficiency
|
|
64
|
+
- Zero O(n²) algorithmic bottlenecks remaining
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
|
|
68
|
+
- **MDX and Quarto flavor support**
|
|
69
|
+
- New flavors: `MarkdownFlavor::MDX` and `MarkdownFlavor::Quarto`
|
|
70
|
+
- JSX component handling: Skip linting inside JSX elements
|
|
71
|
+
- ESM import/export support: Ignore JavaScript import/export statements
|
|
72
|
+
- Quarto code chunk support: Recognize `{r}`, `{python}` chunk delimiters
|
|
73
|
+
- Essential for modern React-based documentation and data science workflows
|
|
74
|
+
|
|
75
|
+
### Fixed
|
|
76
|
+
|
|
77
|
+
- **MD011: Intelligent URL vs text detection in reversed links**
|
|
78
|
+
- Smarter classification of link components as URL or text
|
|
79
|
+
- Reduces false positives in edge cases like `(Generic<T>)[link]`
|
|
80
|
+
- Correctly handles `(http://url)[text]` vs `(text)[#anchor]`
|
|
81
|
+
- Improved heuristics for ambiguous single-word patterns
|
|
82
|
+
|
|
83
|
+
- **MD013: Preserve HTML blocks in list items during reflow**
|
|
84
|
+
- HTML blocks inside list items are now preserved during auto-fix
|
|
85
|
+
- Prevents broken indentation and tag structure
|
|
86
|
+
- Better handling of complex nested content
|
|
87
|
+
|
|
88
|
+
### Changed
|
|
89
|
+
|
|
90
|
+
- Architecture improvements for pre-computation pattern
|
|
91
|
+
- LintContext now owns shared data structures
|
|
92
|
+
- Rules consume pre-computed data instead of duplicating work
|
|
93
|
+
- Consistent binary search APIs for range lookups
|
|
94
|
+
- Foundation for future optimizations
|
|
95
|
+
|
|
10
96
|
## [0.0.168] - 2025-10-28
|
|
11
97
|
|
|
12
98
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "rumdl"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.169"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
rust-version = "1.89.0"
|
|
6
6
|
description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
|
|
@@ -22,26 +22,6 @@ crate-type = ["rlib"]
|
|
|
22
22
|
name = "rumdl"
|
|
23
23
|
path = "src/main.rs"
|
|
24
24
|
|
|
25
|
-
[[bench]]
|
|
26
|
-
name = "rule_performance"
|
|
27
|
-
harness = false
|
|
28
|
-
|
|
29
|
-
[[bench]]
|
|
30
|
-
name = "fix_performance"
|
|
31
|
-
harness = false
|
|
32
|
-
|
|
33
|
-
[[bench]]
|
|
34
|
-
name = "range_performance"
|
|
35
|
-
harness = false
|
|
36
|
-
|
|
37
|
-
[[bench]]
|
|
38
|
-
name = "simple_fix_bench"
|
|
39
|
-
harness = false
|
|
40
|
-
|
|
41
|
-
[[bench]]
|
|
42
|
-
name = "range_utils_benchmark"
|
|
43
|
-
harness = false
|
|
44
|
-
|
|
45
25
|
[profile.release]
|
|
46
26
|
lto = true # Enable Link-Time Optimization
|
|
47
27
|
strip = true # Strip symbols from binary
|
|
@@ -115,6 +115,9 @@ fmt:
|
|
|
115
115
|
cargo fix --allow-dirty --allow-staged
|
|
116
116
|
|
|
117
117
|
lint:
|
|
118
|
+
CARGO_INCREMENTAL=1 cargo clippy --workspace --lib --bins --tests -- -D warnings -D clippy::uninlined_format_args
|
|
119
|
+
|
|
120
|
+
lint-all:
|
|
118
121
|
CARGO_INCREMENTAL=1 cargo clippy --all-targets --all-features -- -D warnings -D clippy::uninlined_format_args
|
|
119
122
|
|
|
120
123
|
lint-fast:
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
fn main() {
|
|
2
|
+
unsafe {
|
|
3
|
+
std::env::set_var("RUMDL_PROFILE_QUADRATIC", "1");
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
let sep = "=".repeat(80);
|
|
7
|
+
println!("{}", sep);
|
|
8
|
+
println!("PROFILING EACH OPERATION AT DIFFERENT SCALES");
|
|
9
|
+
println!("{}", sep);
|
|
10
|
+
|
|
11
|
+
let sizes = vec![
|
|
12
|
+
(1_000, "1K lines"),
|
|
13
|
+
(5_000, "5K lines"),
|
|
14
|
+
(10_000, "10K lines"),
|
|
15
|
+
(25_000, "25K lines"),
|
|
16
|
+
(50_000, "50K lines"),
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
for (target_lines, label) in sizes {
|
|
20
|
+
let content = create_content(target_lines);
|
|
21
|
+
let actual_lines = content.lines().count();
|
|
22
|
+
|
|
23
|
+
let dash_line = "-".repeat(80);
|
|
24
|
+
println!("\n{}", dash_line);
|
|
25
|
+
println!("{} ({} KB, {} lines)", label, content.len() / 1024, actual_lines);
|
|
26
|
+
println!("{}", dash_line);
|
|
27
|
+
|
|
28
|
+
// Run once to see timings
|
|
29
|
+
let _ = rumdl_lib::lint_context::LintContext::new(&content, rumdl_lib::config::MarkdownFlavor::Standard);
|
|
30
|
+
println!();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
fn create_content(target_lines: usize) -> String {
|
|
35
|
+
let patterns = vec. It contains multiple sentences to make it realistic. Some more text here with *emphasis* and `more code`.\n\n",
|
|
40
|
+
"- List item 1 with `code` and [link](https://example.com)\n",
|
|
41
|
+
"- List item 2 with **bold** and *emphasis*\n",
|
|
42
|
+
" - Nested item with `more code`\n",
|
|
43
|
+
" - Another nested item\n",
|
|
44
|
+
"- List item 3\n\n",
|
|
45
|
+
"1. First numbered item with `code`\n",
|
|
46
|
+
"2. Second item with [reference link][ref1]\n",
|
|
47
|
+
"3. Third item with **bold text**\n\n",
|
|
48
|
+
"> Blockquote with `code` and [a link](https://example.com)\n",
|
|
49
|
+
"> Second line of blockquote with **bold**\n",
|
|
50
|
+
"> > Nested blockquote with *emphasis*\n\n",
|
|
51
|
+
"```rust\nfn example() {\n println!(\"Hello, world!\");\n let x = 42;\n}\n```\n\n",
|
|
52
|
+
"```python\ndef example():\n print('Hello, world!')\n x = 42\n```\n\n",
|
|
53
|
+
"| Header 1 | Header 2 with `code` | Header 3 |\n",
|
|
54
|
+
"|----------|---------------------|----------|\n",
|
|
55
|
+
"| Cell 1 with `code` | Cell 2 | Cell 3 with [link](https://example.com) |\n",
|
|
56
|
+
"| Cell 4 | Cell 5 with **bold** | Cell 6 |\n\n",
|
|
57
|
+
"<!-- This is a comment -->\n\n",
|
|
58
|
+
"[ref1]: https://example1.com\n",
|
|
59
|
+
"[ref2]: https://example2.com \"Title\"\n\n",
|
|
60
|
+
"\n",
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
let mut content = String::new();
|
|
64
|
+
let mut line_count = 0;
|
|
65
|
+
let mut pattern_idx = 0;
|
|
66
|
+
|
|
67
|
+
while line_count < target_lines {
|
|
68
|
+
let pattern = patterns[pattern_idx % patterns.len()];
|
|
69
|
+
content.push_str(pattern);
|
|
70
|
+
line_count += pattern.lines().count();
|
|
71
|
+
pattern_idx += 1;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
content
|
|
75
|
+
}
|
|
@@ -27,6 +27,12 @@ pub enum MarkdownFlavor {
|
|
|
27
27
|
/// MkDocs flavor with auto-reference support
|
|
28
28
|
#[serde(rename = "mkdocs")]
|
|
29
29
|
MkDocs,
|
|
30
|
+
/// MDX flavor with JSX and ESM support (.mdx files)
|
|
31
|
+
#[serde(rename = "mdx")]
|
|
32
|
+
MDX,
|
|
33
|
+
/// Quarto/RMarkdown flavor for scientific publishing (.qmd, .Rmd files)
|
|
34
|
+
#[serde(rename = "quarto")]
|
|
35
|
+
Quarto,
|
|
30
36
|
// Future flavors can be added here when they have actual implementation differences
|
|
31
37
|
// Planned: GFM (GitHub Flavored Markdown) - for GitHub-specific features like tables, strikethrough
|
|
32
38
|
// Planned: CommonMark - for strict CommonMark compliance
|
|
@@ -37,6 +43,8 @@ impl fmt::Display for MarkdownFlavor {
|
|
|
37
43
|
match self {
|
|
38
44
|
MarkdownFlavor::Standard => write!(f, "standard"),
|
|
39
45
|
MarkdownFlavor::MkDocs => write!(f, "mkdocs"),
|
|
46
|
+
MarkdownFlavor::MDX => write!(f, "mdx"),
|
|
47
|
+
MarkdownFlavor::Quarto => write!(f, "quarto"),
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
}
|
|
@@ -48,6 +56,8 @@ impl FromStr for MarkdownFlavor {
|
|
|
48
56
|
match s.to_lowercase().as_str() {
|
|
49
57
|
"standard" | "" | "none" => Ok(MarkdownFlavor::Standard),
|
|
50
58
|
"mkdocs" => Ok(MarkdownFlavor::MkDocs),
|
|
59
|
+
"mdx" => Ok(MarkdownFlavor::MDX),
|
|
60
|
+
"quarto" | "qmd" | "rmd" | "rmarkdown" => Ok(MarkdownFlavor::Quarto),
|
|
51
61
|
// Accept but warn about unimplemented flavors
|
|
52
62
|
"gfm" | "github" => {
|
|
53
63
|
eprintln!("Warning: GFM flavor not yet implemented, using standard");
|
|
@@ -62,6 +72,51 @@ impl FromStr for MarkdownFlavor {
|
|
|
62
72
|
}
|
|
63
73
|
}
|
|
64
74
|
|
|
75
|
+
impl MarkdownFlavor {
|
|
76
|
+
/// Detect flavor from file extension
|
|
77
|
+
pub fn from_extension(ext: &str) -> Self {
|
|
78
|
+
match ext.to_lowercase().as_str() {
|
|
79
|
+
"mdx" => Self::MDX,
|
|
80
|
+
"qmd" => Self::Quarto,
|
|
81
|
+
"rmd" => Self::Quarto,
|
|
82
|
+
_ => Self::Standard,
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// Detect flavor from file path
|
|
87
|
+
pub fn from_path(path: &std::path::Path) -> Self {
|
|
88
|
+
path.extension()
|
|
89
|
+
.and_then(|e| e.to_str())
|
|
90
|
+
.map(Self::from_extension)
|
|
91
|
+
.unwrap_or(Self::Standard)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/// Check if this flavor supports ESM imports/exports (MDX-specific)
|
|
95
|
+
pub fn supports_esm_blocks(self) -> bool {
|
|
96
|
+
matches!(self, Self::MDX)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/// Check if this flavor supports JSX components (MDX-specific)
|
|
100
|
+
pub fn supports_jsx(self) -> bool {
|
|
101
|
+
matches!(self, Self::MDX)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/// Check if this flavor supports auto-references (MkDocs-specific)
|
|
105
|
+
pub fn supports_auto_references(self) -> bool {
|
|
106
|
+
matches!(self, Self::MkDocs)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/// Get a human-readable name for this flavor
|
|
110
|
+
pub fn name(self) -> &'static str {
|
|
111
|
+
match self {
|
|
112
|
+
Self::Standard => "Standard",
|
|
113
|
+
Self::MkDocs => "MkDocs",
|
|
114
|
+
Self::MDX => "MDX",
|
|
115
|
+
Self::Quarto => "Quarto",
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
65
120
|
lazy_static! {
|
|
66
121
|
// Map common markdownlint config keys to rumdl rule names
|
|
67
122
|
static ref MARKDOWNLINT_KEY_MAP: HashMap<&'static str, &'static str> = {
|
|
@@ -717,8 +717,17 @@ pub fn process_file_inner(
|
|
|
717
717
|
rules.to_vec()
|
|
718
718
|
};
|
|
719
719
|
|
|
720
|
-
//
|
|
721
|
-
let
|
|
720
|
+
// Determine flavor: use file extension if config uses Standard, otherwise use config flavor
|
|
721
|
+
let flavor = if config.markdown_flavor() == rumdl_lib::config::MarkdownFlavor::Standard {
|
|
722
|
+
// Auto-detect from file extension for .mdx, .qmd, .Rmd files
|
|
723
|
+
rumdl_lib::config::MarkdownFlavor::from_path(Path::new(file_path))
|
|
724
|
+
} else {
|
|
725
|
+
// Use explicitly configured flavor
|
|
726
|
+
config.markdown_flavor()
|
|
727
|
+
};
|
|
728
|
+
|
|
729
|
+
// Use the standard lint function with the determined flavor
|
|
730
|
+
let warnings_result = rumdl_lib::lint(&content, &filtered_rules, verbose, flavor);
|
|
722
731
|
|
|
723
732
|
// Clear the environment variable after processing
|
|
724
733
|
unsafe {
|
|
@@ -131,6 +131,7 @@ pub struct FilteredLinesIter<'a> {
|
|
|
131
131
|
ctx: &'a LintContext<'a>,
|
|
132
132
|
config: LineFilterConfig,
|
|
133
133
|
current_index: usize,
|
|
134
|
+
content_lines: Vec<&'a str>,
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
impl<'a> FilteredLinesIter<'a> {
|
|
@@ -140,6 +141,7 @@ impl<'a> FilteredLinesIter<'a> {
|
|
|
140
141
|
ctx,
|
|
141
142
|
config,
|
|
142
143
|
current_index: 0,
|
|
144
|
+
content_lines: ctx.content.lines().collect(),
|
|
143
145
|
}
|
|
144
146
|
}
|
|
145
147
|
}
|
|
@@ -149,7 +151,6 @@ impl<'a> Iterator for FilteredLinesIter<'a> {
|
|
|
149
151
|
|
|
150
152
|
fn next(&mut self) -> Option<Self::Item> {
|
|
151
153
|
let lines = &self.ctx.lines;
|
|
152
|
-
let content_lines: Vec<&str> = self.ctx.content.lines().collect();
|
|
153
154
|
|
|
154
155
|
while self.current_index < lines.len() {
|
|
155
156
|
let idx = self.current_index;
|
|
@@ -161,7 +162,7 @@ impl<'a> Iterator for FilteredLinesIter<'a> {
|
|
|
161
162
|
}
|
|
162
163
|
|
|
163
164
|
// Get the actual line content from the document
|
|
164
|
-
let line_content = content_lines.get(idx).copied().unwrap_or("");
|
|
165
|
+
let line_content = self.content_lines.get(idx).copied().unwrap_or("");
|
|
165
166
|
|
|
166
167
|
// Return the filtered line with 1-indexed line number
|
|
167
168
|
return Some(FilteredLine {
|
|
@@ -149,35 +149,15 @@ pub fn lint(
|
|
|
149
149
|
let _total_rules = rules.len();
|
|
150
150
|
let _applicable_count = applicable_rules.len();
|
|
151
151
|
|
|
152
|
-
// Parse
|
|
153
|
-
let ast_rules_count = applicable_rules.iter().filter(|rule| rule.uses_ast()).count();
|
|
154
|
-
let ast = if ast_rules_count > 0 {
|
|
155
|
-
Some(crate::utils::ast_utils::get_cached_ast(content))
|
|
156
|
-
} else {
|
|
157
|
-
None
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
// Parse LintContext once (migration step) with the provided flavor
|
|
152
|
+
// Parse LintContext once with the provided flavor
|
|
161
153
|
let lint_ctx = crate::lint_context::LintContext::new(content, flavor);
|
|
162
154
|
|
|
155
|
+
let profile_rules = std::env::var("RUMDL_PROFILE_RULES").is_ok();
|
|
156
|
+
|
|
163
157
|
for rule in applicable_rules {
|
|
164
158
|
let _rule_start = Instant::now();
|
|
165
159
|
|
|
166
|
-
|
|
167
|
-
let result = if rule.uses_ast() {
|
|
168
|
-
if let Some(ref ast_ref) = ast {
|
|
169
|
-
// 1. AST-based path
|
|
170
|
-
rule.as_maybe_ast()
|
|
171
|
-
.and_then(|ext| ext.check_with_ast_opt(&lint_ctx, ast_ref))
|
|
172
|
-
.unwrap_or_else(|| rule.check_with_ast(&lint_ctx, ast_ref))
|
|
173
|
-
} else {
|
|
174
|
-
// Fallback to regular check if no AST
|
|
175
|
-
rule.check(&lint_ctx)
|
|
176
|
-
}
|
|
177
|
-
} else {
|
|
178
|
-
// 2. Regular check path
|
|
179
|
-
rule.check(&lint_ctx)
|
|
180
|
-
};
|
|
160
|
+
let result = rule.check(&lint_ctx);
|
|
181
161
|
|
|
182
162
|
match result {
|
|
183
163
|
Ok(rule_warnings) => {
|
|
@@ -209,12 +189,14 @@ pub fn lint(
|
|
|
209
189
|
}
|
|
210
190
|
}
|
|
211
191
|
|
|
192
|
+
let rule_duration = _rule_start.elapsed();
|
|
193
|
+
if profile_rules {
|
|
194
|
+
eprintln!("[RULE] {:6} {:?}", rule.name(), rule_duration);
|
|
195
|
+
}
|
|
196
|
+
|
|
212
197
|
#[cfg(not(test))]
|
|
213
|
-
if _verbose {
|
|
214
|
-
|
|
215
|
-
if rule_duration.as_millis() > 500 {
|
|
216
|
-
log::debug!("Rule {} took {:?}", rule.name(), rule_duration);
|
|
217
|
-
}
|
|
198
|
+
if _verbose && rule_duration.as_millis() > 500 {
|
|
199
|
+
log::debug!("Rule {} took {:?}", rule.name(), rule_duration);
|
|
218
200
|
}
|
|
219
201
|
}
|
|
220
202
|
|
|
@@ -224,9 +206,6 @@ pub fn lint(
|
|
|
224
206
|
if skipped_rules > 0 {
|
|
225
207
|
log::debug!("Skipped {skipped_rules} of {_total_rules} rules based on content analysis");
|
|
226
208
|
}
|
|
227
|
-
if ast.is_some() {
|
|
228
|
-
log::debug!("Used shared AST for {ast_rules_count} rules");
|
|
229
|
-
}
|
|
230
209
|
}
|
|
231
210
|
|
|
232
211
|
Ok(warnings)
|