rumdl 0.0.153__tar.gz → 0.0.155__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.153 → rumdl-0.0.155}/Cargo.lock +1 -113
- {rumdl-0.0.153 → rumdl-0.0.155}/Cargo.toml +2 -8
- {rumdl-0.0.153 → rumdl-0.0.155}/PKG-INFO +1 -1
- rumdl-0.0.155/docs/LINTCONTEXT_OPTIMIZATION_PLAN.md +311 -0
- rumdl-0.0.155/docs/LINTCONTEXT_OPTIMIZATION_SUMMARY.md +251 -0
- rumdl-0.0.155/docs/LINTCONTEXT_PERFORMANCE_ANALYSIS.md +240 -0
- rumdl-0.0.155/docs/PHASE_2_OPTIMIZATION_COMPLETE.md +284 -0
- rumdl-0.0.155/docs/PHASE_3_OPTIMIZATION_COMPLETE.md +175 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/pyproject.toml +1 -1
- rumdl-0.0.155/rumdl/__init__.py +11 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/fix_coordinator.rs +2 -1
- {rumdl-0.0.153 → rumdl-0.0.155}/src/lib.rs +0 -3
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md005_list_indent.rs +5 -5
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md013_line_length.rs +114 -23
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md030_list_marker_space.rs +4 -4
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md034_no_bare_urls.rs +28 -16
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/text_reflow.rs +76 -6
- {rumdl-0.0.153 → rumdl-0.0.155}/src/vscode.rs +1 -5
- rumdl-0.0.155/tests/md009_md013_integration_test.rs +172 -0
- rumdl-0.0.155/tests/md009_md013_order_test.rs +39 -0
- rumdl-0.0.155/tests/md013_hard_breaks_test.rs +294 -0
- rumdl-0.0.153/python/MANIFEST.in +0 -9
- rumdl-0.0.153/python/PYTHON-README.md +0 -57
- rumdl-0.0.153/python/rumdl/__init__.py +0 -5
- rumdl-0.0.153/src/python.rs +0 -246
- rumdl-0.0.153/tests/python_bindings_test.rs +0 -40
- {rumdl-0.0.153 → rumdl-0.0.155}/.config/nextest.toml +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/.mise.toml +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/.pre-commit-config.yaml +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/.rumdl.toml +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/.rustfmt.toml +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/CHANGELOG.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/LICENSE +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/MANIFEST.in +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/Makefile +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/README.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/assets/logo.png +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benches/range_performance.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benchmark/bin/bench_lint_context.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benchmark/bin/benchmark.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benchmark/bin/benchmark_rule.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benchmark/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/benchmark/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/RULES.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/global-settings.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/inline-configuration.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md001.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md002.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md003.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md004.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md005.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md006.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md007.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md009.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md010.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md011.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md012.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md013.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md014.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md018.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md019.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md020.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md021.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md022.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md023.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md024.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md025.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md026.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md027.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md028.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md029.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md030.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md031.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md032.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md033.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md034.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md035.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md036.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md037.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md038.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md039.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md040.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md041.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md042.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md043.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md044.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md045.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md046.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md047.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md048.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md049.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md050.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md051.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md052.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md053.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md054.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md055.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md056.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md057.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/md058.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/parity_check.py +0 -0
- {rumdl-0.0.153/python → rumdl-0.0.155}/rumdl/__main__.py +0 -0
- {rumdl-0.0.153/python → rumdl-0.0.155}/rumdl/py.typed +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/rumdl.schema.json +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/rumdl.toml.example +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/rust-toolchain.toml +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/scripts/generate-downloads-table.sh +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/scripts/pre-release.sh +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/scripts/setup-pre-commit.sh +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/scripts/update-pre-commit-docs.sh +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/exit_codes.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/inline_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/lint_context.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/lsp/server.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/lsp/types.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/main.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/output/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/parallel.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/performance.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/profiling.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rule.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rule_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/heading_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md011_no_reversed_links.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md029_ordered_list_prefix.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md032_blanks_around_lists.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md036_no_emphasis_only_first.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md037_spaces_around_emphasis.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md051_link_fragments.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/anchor_styles/github.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/anchor_styles/jekyll.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/anchor_styles/kramdown.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/anchor_styles/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/fix_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/header_id_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/jinja_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/kramdown_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/line_ending.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocs_admonitions.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocs_common.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocs_critic.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocs_footnotes.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocs_patterns.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocs_snippets.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocs_tabs.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocs_test_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mkdocstrings_refs.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/skip_context.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/src/utils/table_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/cli_explain_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/cli_flag_precedence_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/common/cli_test_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/common/fixtures.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/common/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/common/test_utils.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/config_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/config_upward_traversal_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/deeply_nested_lists_performance_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/escaped_brackets_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/fix_counting_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/fix_performance_baseline_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/fixable_unfixable_config_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/init_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/inline_config_blocks_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/kramdown_integration_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lib.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lsp_formatting_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lsp_initialization_options_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lsp_memory_leak_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lsp_mkdocs_flavor_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/lsp_unopened_document_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md013_reflow_integration_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md032_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md032_ordered_list_bug_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md033_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md037_xxxx_regression_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md038_false_positive_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md051_readme_bug_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md051_toc_bug_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md052_literal_brackets_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/md054_code_span_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/nested_code_block_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/per_file_ignores_integration_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/perf_check.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/emphasis_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/heading_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/inline_content_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/link_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/list_rules_integration_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md005_dynamic_indent_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md005_unicode_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md026_kramdown_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md028_md009_interaction_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md029_code_block_separation_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md029_fix_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md029_issue42_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md029_markdownlint_parity_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md029_unicode_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md031_kramdown_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md033_kramdown_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md034_ipv6_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md037_kramdown_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md038_nested_backticks_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_comprehensive_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_property_based_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_regression_prevention_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md051_unicode_security_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md058_kramdown_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/mkdocs_admonitions_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/mkdocs_edge_cases_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/mkdocs_extensions_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/mkdocs_snippets_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules/rule_interaction_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/rules_mod_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/sentence_per_line_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/skip_context_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/test_ast_code_block_issue.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/test_gfm_vs_default_parsing.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/test_lint_context_flow.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/test_list_ast_structure.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/test_multiline_ast.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/test_underscore_edge_cases.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/thread_safety_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/unfixable_rules_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utf8_boundary_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/vscode_extension_fixes.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/vscode_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/vscode_tests.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/vscode_windows_comprehensive_test.rs +0 -0
- {rumdl-0.0.153 → rumdl-0.0.155}/tests/vscode_windows_test.rs +0 -0
|
@@ -901,12 +901,6 @@ dependencies = [
|
|
|
901
901
|
"hashbrown 0.16.0",
|
|
902
902
|
]
|
|
903
903
|
|
|
904
|
-
[[package]]
|
|
905
|
-
name = "indoc"
|
|
906
|
-
version = "2.0.6"
|
|
907
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
908
|
-
checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
|
|
909
|
-
|
|
910
904
|
[[package]]
|
|
911
905
|
name = "inotify"
|
|
912
906
|
version = "0.9.6"
|
|
@@ -1131,15 +1125,6 @@ dependencies = [
|
|
|
1131
1125
|
"libc",
|
|
1132
1126
|
]
|
|
1133
1127
|
|
|
1134
|
-
[[package]]
|
|
1135
|
-
name = "memoffset"
|
|
1136
|
-
version = "0.9.1"
|
|
1137
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1138
|
-
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
|
1139
|
-
dependencies = [
|
|
1140
|
-
"autocfg",
|
|
1141
|
-
]
|
|
1142
|
-
|
|
1143
1128
|
[[package]]
|
|
1144
1129
|
name = "mimalloc"
|
|
1145
1130
|
version = "0.1.48"
|
|
@@ -1462,69 +1447,6 @@ version = "0.11.0"
|
|
|
1462
1447
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1463
1448
|
checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae"
|
|
1464
1449
|
|
|
1465
|
-
[[package]]
|
|
1466
|
-
name = "pyo3"
|
|
1467
|
-
version = "0.24.2"
|
|
1468
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1469
|
-
checksum = "e5203598f366b11a02b13aa20cab591229ff0a89fd121a308a5df751d5fc9219"
|
|
1470
|
-
dependencies = [
|
|
1471
|
-
"cfg-if",
|
|
1472
|
-
"indoc",
|
|
1473
|
-
"libc",
|
|
1474
|
-
"memoffset",
|
|
1475
|
-
"once_cell",
|
|
1476
|
-
"portable-atomic",
|
|
1477
|
-
"pyo3-build-config",
|
|
1478
|
-
"pyo3-ffi",
|
|
1479
|
-
"pyo3-macros",
|
|
1480
|
-
"unindent",
|
|
1481
|
-
]
|
|
1482
|
-
|
|
1483
|
-
[[package]]
|
|
1484
|
-
name = "pyo3-build-config"
|
|
1485
|
-
version = "0.24.2"
|
|
1486
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1487
|
-
checksum = "99636d423fa2ca130fa5acde3059308006d46f98caac629418e53f7ebb1e9999"
|
|
1488
|
-
dependencies = [
|
|
1489
|
-
"once_cell",
|
|
1490
|
-
"target-lexicon",
|
|
1491
|
-
]
|
|
1492
|
-
|
|
1493
|
-
[[package]]
|
|
1494
|
-
name = "pyo3-ffi"
|
|
1495
|
-
version = "0.24.2"
|
|
1496
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1497
|
-
checksum = "78f9cf92ba9c409279bc3305b5409d90db2d2c22392d443a87df3a1adad59e33"
|
|
1498
|
-
dependencies = [
|
|
1499
|
-
"libc",
|
|
1500
|
-
"pyo3-build-config",
|
|
1501
|
-
]
|
|
1502
|
-
|
|
1503
|
-
[[package]]
|
|
1504
|
-
name = "pyo3-macros"
|
|
1505
|
-
version = "0.24.2"
|
|
1506
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1507
|
-
checksum = "0b999cb1a6ce21f9a6b147dcf1be9ffedf02e0043aec74dc390f3007047cecd9"
|
|
1508
|
-
dependencies = [
|
|
1509
|
-
"proc-macro2",
|
|
1510
|
-
"pyo3-macros-backend",
|
|
1511
|
-
"quote",
|
|
1512
|
-
"syn",
|
|
1513
|
-
]
|
|
1514
|
-
|
|
1515
|
-
[[package]]
|
|
1516
|
-
name = "pyo3-macros-backend"
|
|
1517
|
-
version = "0.24.2"
|
|
1518
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1519
|
-
checksum = "822ece1c7e1012745607d5cf0bcb2874769f0f7cb34c4cde03b9358eb9ef911a"
|
|
1520
|
-
dependencies = [
|
|
1521
|
-
"heck",
|
|
1522
|
-
"proc-macro2",
|
|
1523
|
-
"pyo3-build-config",
|
|
1524
|
-
"quote",
|
|
1525
|
-
"syn",
|
|
1526
|
-
]
|
|
1527
|
-
|
|
1528
1450
|
[[package]]
|
|
1529
1451
|
name = "quick-error"
|
|
1530
1452
|
version = "1.2.3"
|
|
@@ -1644,7 +1566,7 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
|
|
|
1644
1566
|
|
|
1645
1567
|
[[package]]
|
|
1646
1568
|
name = "rumdl"
|
|
1647
|
-
version = "0.0.
|
|
1569
|
+
version = "0.0.155"
|
|
1648
1570
|
dependencies = [
|
|
1649
1571
|
"anyhow",
|
|
1650
1572
|
"assert_cmd",
|
|
@@ -1671,12 +1593,10 @@ dependencies = [
|
|
|
1671
1593
|
"pretty_assertions",
|
|
1672
1594
|
"proptest",
|
|
1673
1595
|
"pulldown-cmark",
|
|
1674
|
-
"pyo3",
|
|
1675
1596
|
"rand",
|
|
1676
1597
|
"rayon",
|
|
1677
1598
|
"regex",
|
|
1678
1599
|
"schemars",
|
|
1679
|
-
"seahash",
|
|
1680
1600
|
"serde",
|
|
1681
1601
|
"serde_json",
|
|
1682
1602
|
"serde_yaml",
|
|
@@ -1691,8 +1611,6 @@ dependencies = [
|
|
|
1691
1611
|
"tower 0.5.2",
|
|
1692
1612
|
"tower-lsp",
|
|
1693
1613
|
"tower-service",
|
|
1694
|
-
"unicode-bidi",
|
|
1695
|
-
"unicode-blocks",
|
|
1696
1614
|
"unicode-normalization",
|
|
1697
1615
|
"unicode-segmentation",
|
|
1698
1616
|
"unicode-width",
|
|
@@ -1781,12 +1699,6 @@ version = "1.2.0"
|
|
|
1781
1699
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1782
1700
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
|
1783
1701
|
|
|
1784
|
-
[[package]]
|
|
1785
|
-
name = "seahash"
|
|
1786
|
-
version = "4.1.0"
|
|
1787
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1788
|
-
checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
|
|
1789
|
-
|
|
1790
1702
|
[[package]]
|
|
1791
1703
|
name = "serde"
|
|
1792
1704
|
version = "1.0.226"
|
|
@@ -1945,12 +1857,6 @@ dependencies = [
|
|
|
1945
1857
|
"syn",
|
|
1946
1858
|
]
|
|
1947
1859
|
|
|
1948
|
-
[[package]]
|
|
1949
|
-
name = "target-lexicon"
|
|
1950
|
-
version = "0.13.3"
|
|
1951
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1952
|
-
checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c"
|
|
1953
|
-
|
|
1954
1860
|
[[package]]
|
|
1955
1861
|
name = "tempfile"
|
|
1956
1862
|
version = "3.22.0"
|
|
@@ -2243,18 +2149,6 @@ version = "2.8.1"
|
|
|
2243
2149
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2244
2150
|
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
|
|
2245
2151
|
|
|
2246
|
-
[[package]]
|
|
2247
|
-
name = "unicode-bidi"
|
|
2248
|
-
version = "0.3.18"
|
|
2249
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2250
|
-
checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
|
|
2251
|
-
|
|
2252
|
-
[[package]]
|
|
2253
|
-
name = "unicode-blocks"
|
|
2254
|
-
version = "0.1.9"
|
|
2255
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2256
|
-
checksum = "6b12e05d9e06373163a9bb6bb8c263c261b396643a99445fe6b9811fd376581b"
|
|
2257
|
-
|
|
2258
2152
|
[[package]]
|
|
2259
2153
|
name = "unicode-id"
|
|
2260
2154
|
version = "0.3.6"
|
|
@@ -2288,12 +2182,6 @@ version = "0.2.1"
|
|
|
2288
2182
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2289
2183
|
checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c"
|
|
2290
2184
|
|
|
2291
|
-
[[package]]
|
|
2292
|
-
name = "unindent"
|
|
2293
|
-
version = "0.2.4"
|
|
2294
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2295
|
-
checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
|
|
2296
|
-
|
|
2297
2185
|
[[package]]
|
|
2298
2186
|
name = "unsafe-libyaml"
|
|
2299
2187
|
version = "0.2.11"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "rumdl"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.155"
|
|
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)"
|
|
@@ -18,7 +18,7 @@ default-run = "rumdl" # Default binary for cargo run
|
|
|
18
18
|
|
|
19
19
|
[lib]
|
|
20
20
|
name = "rumdl_lib"
|
|
21
|
-
crate-type = ["
|
|
21
|
+
crate-type = ["rlib"]
|
|
22
22
|
|
|
23
23
|
[[bin]]
|
|
24
24
|
name = "rumdl"
|
|
@@ -91,7 +91,6 @@ serde_yaml = "0.9.34"
|
|
|
91
91
|
serde_json = "1.0"
|
|
92
92
|
toml = "0.8.20"
|
|
93
93
|
strsim = "0.11"
|
|
94
|
-
pyo3 = { version = "0.24.1", features = ["extension-module", "abi3-py37"], optional = true }
|
|
95
94
|
thiserror = "2.0.12"
|
|
96
95
|
once_cell = "1.21.3"
|
|
97
96
|
globset = "0.4.16"
|
|
@@ -105,7 +104,6 @@ dyn-clone = "1"
|
|
|
105
104
|
url = { version = "2", features = ["serde"] }
|
|
106
105
|
unicode-normalization = "0.1"
|
|
107
106
|
memmap2 = "0.9"
|
|
108
|
-
seahash = "4.1"
|
|
109
107
|
schemars = "0.8"
|
|
110
108
|
|
|
111
109
|
# LSP dependencies
|
|
@@ -124,8 +122,6 @@ etcetera = "0.8"
|
|
|
124
122
|
default = ["parallel"]
|
|
125
123
|
parallel = ["rayon"]
|
|
126
124
|
profiling = []
|
|
127
|
-
python = ["pyo3"]
|
|
128
|
-
structure_preprocessing = []
|
|
129
125
|
build-benchmarks = []
|
|
130
126
|
|
|
131
127
|
[dev-dependencies]
|
|
@@ -138,8 +134,6 @@ rand = "0.9.1"
|
|
|
138
134
|
pretty_assertions = "1.4"
|
|
139
135
|
unicode-segmentation = "1.12"
|
|
140
136
|
unicode-width = "0.2"
|
|
141
|
-
unicode-blocks = "0.1"
|
|
142
|
-
unicode-bidi = "0.3"
|
|
143
137
|
|
|
144
138
|
[target.'cfg(not(target_env = "msvc"))'.dependencies]
|
|
145
139
|
tikv-jemallocator = "0.6"
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# LintContext Optimization Implementation Plan
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document outlines the plan to optimize 54 rules that aren't using LintContext's early-exit optimization methods. The optimizations replace O(n) string scanning with O(1) cached character
|
|
6
|
+
frequency lookups.
|
|
7
|
+
|
|
8
|
+
## Analysis Summary
|
|
9
|
+
|
|
10
|
+
- **Total rules analyzed**: 54 rules without LintContext optimizations
|
|
11
|
+
- **Agent analysis completed**: 10 representative rules across different categories
|
|
12
|
+
- **Expected impact**: 10-100x speedup for documents without relevant markdown elements
|
|
13
|
+
|
|
14
|
+
## Optimization Categories
|
|
15
|
+
|
|
16
|
+
### Category 1: Direct Replacements (High Impact, Low Risk)
|
|
17
|
+
|
|
18
|
+
These rules can directly replace string scanning with LintContext methods.
|
|
19
|
+
|
|
20
|
+
#### 1. MD003 - Heading Style
|
|
21
|
+
|
|
22
|
+
**File**: `src/rules/md003_heading_style.rs`
|
|
23
|
+
**Current**: `!ctx.lines.iter().any(|line| line.heading.is_some())`
|
|
24
|
+
**Optimized**: `!ctx.likely_has_headings()`
|
|
25
|
+
**Location**: Line 237-240 in `should_skip()`
|
|
26
|
+
**Impact**: O(n) line iteration → O(1) character frequency check
|
|
27
|
+
|
|
28
|
+
#### 2. MD004 - Unordered List Style
|
|
29
|
+
|
|
30
|
+
**File**: `src/rules/md004_unordered_list_style.rs`
|
|
31
|
+
**Current**: `!ctx.content.contains(['*', '-', '+'])`
|
|
32
|
+
**Optimized**: `!ctx.likely_has_lists()`
|
|
33
|
+
**Locations**:
|
|
34
|
+
|
|
35
|
+
- Line 107-109 in `check()`
|
|
36
|
+
- Line 317 in `should_skip()`
|
|
37
|
+
**Impact**: O(n) string scan → O(1) integer comparison
|
|
38
|
+
|
|
39
|
+
#### 3. MD033 - No Inline HTML
|
|
40
|
+
|
|
41
|
+
**File**: `src/rules/md033_no_inline_html.rs`
|
|
42
|
+
**Current**: `!has_html_tags(content)` (custom function)
|
|
43
|
+
**Optimized**: `!ctx.likely_has_html()`
|
|
44
|
+
**Locations**:
|
|
45
|
+
|
|
46
|
+
- Line 287 in `check()`
|
|
47
|
+
- Line 438 in `should_skip()`
|
|
48
|
+
**Impact**: Eliminates redundant '<' character scanning
|
|
49
|
+
|
|
50
|
+
#### 4. MD042 - No Empty Links
|
|
51
|
+
|
|
52
|
+
**File**: `src/rules/md042_no_empty_links.rs`
|
|
53
|
+
**Current**: `!content.contains('[')`
|
|
54
|
+
**Optimized**: `!ctx.likely_has_links_or_images()`
|
|
55
|
+
**Location**: `should_skip()` method
|
|
56
|
+
**Impact**: O(n) string scan → O(1) bracket count check
|
|
57
|
+
|
|
58
|
+
#### 5. MD049 - Emphasis Style
|
|
59
|
+
|
|
60
|
+
**File**: `src/rules/md049_emphasis_style.rs`
|
|
61
|
+
**Current**: `!ctx.content.contains('*') && !ctx.content.contains('_')`
|
|
62
|
+
**Optimized**: `!ctx.likely_has_emphasis()`
|
|
63
|
+
**Locations**:
|
|
64
|
+
|
|
65
|
+
- Line 113-115 in `check()`
|
|
66
|
+
- Line 247 in `should_skip()`
|
|
67
|
+
|
|
68
|
+
**Impact**: Two O(n) scans → O(1) check (asterisk_count > 1 || underscore_count > 1)
|
|
69
|
+
|
|
70
|
+
#### 6. MD050 - Strong Style
|
|
71
|
+
|
|
72
|
+
**File**: `src/rules/md050_strong_style.rs`
|
|
73
|
+
**Current**: Similar to MD049 (checks for ** and __)
|
|
74
|
+
**Optimized**: Create `ctx.likely_has_strong()` or use `likely_has_emphasis()`
|
|
75
|
+
**Impact**: Same as MD049
|
|
76
|
+
|
|
77
|
+
#### 7. MD055 - Table Pipe Style
|
|
78
|
+
|
|
79
|
+
**File**: `src/rules/md055_table_pipe_style.rs`
|
|
80
|
+
**Current**: `!ctx.content.contains('|')`
|
|
81
|
+
**Optimized**: `!ctx.likely_has_tables()`
|
|
82
|
+
**Locations**:
|
|
83
|
+
|
|
84
|
+
- Line 174-177 in `should_skip()`
|
|
85
|
+
- Line 185-187 in `check()` (remove - redundant)
|
|
86
|
+
**Impact**: O(n) scan → O(1) check (pipe_count > 2)
|
|
87
|
+
|
|
88
|
+
#### 8. MD027 - Multiple Spaces in Blockquote
|
|
89
|
+
|
|
90
|
+
**File**: `src/rules/md027_multiple_spaces_blockquote.rs`
|
|
91
|
+
**Current**: `!ctx.content.contains('>')`
|
|
92
|
+
**Optimized**: `!ctx.likely_has_blockquotes()`
|
|
93
|
+
**Location**: Line 192 in `should_skip()`
|
|
94
|
+
**Impact**: O(n) scan → O(1) check (gt_count > 0)
|
|
95
|
+
|
|
96
|
+
### Category 2: Compound Checks (Medium Impact)
|
|
97
|
+
|
|
98
|
+
#### 9. MD040 - Fenced Code Language
|
|
99
|
+
|
|
100
|
+
**File**: `src/rules/md040_fenced_code_language.rs`
|
|
101
|
+
**Current**: `!content.contains("```") && !content.contains("~~~")`
|
|
102
|
+
**Optimized**: `!ctx.likely_has_code() && !ctx.has_char('~')`
|
|
103
|
+
**Location**: Line 341-344 in `should_skip()`
|
|
104
|
+
**Impact**: Two O(n) substring scans → O(1) + O(n) character check
|
|
105
|
+
**Note**: `likely_has_code()` only checks backticks; need separate tilde check
|
|
106
|
+
|
|
107
|
+
#### 10. MD031 - Blanks Around Fences
|
|
108
|
+
|
|
109
|
+
**File**: `src/rules/md031_blanks_around_fences.rs`
|
|
110
|
+
**Current**: TBD (needs analysis)
|
|
111
|
+
**Optimized**: Use `ctx.likely_has_code()`
|
|
112
|
+
**Impact**: TBD
|
|
113
|
+
|
|
114
|
+
#### 11. MD046 - Code Block Style
|
|
115
|
+
|
|
116
|
+
**File**: `src/rules/md046_code_block_style.rs`
|
|
117
|
+
**Current**: TBD (needs analysis)
|
|
118
|
+
**Optimized**: Use `ctx.likely_has_code()`
|
|
119
|
+
**Impact**: TBD
|
|
120
|
+
|
|
121
|
+
#### 12. MD048 - Code Fence Style
|
|
122
|
+
|
|
123
|
+
**File**: `src/rules/md048_code_fence_style.rs`
|
|
124
|
+
**Current**: TBD (needs analysis)
|
|
125
|
+
**Optimized**: Use `ctx.likely_has_code()`
|
|
126
|
+
**Impact**: TBD
|
|
127
|
+
|
|
128
|
+
### Category 3: Heading-Related Rules
|
|
129
|
+
|
|
130
|
+
Apply `ctx.likely_has_headings()` to these rules:
|
|
131
|
+
|
|
132
|
+
- MD001 - Heading Increment
|
|
133
|
+
- MD002 - First Heading H1
|
|
134
|
+
- MD018 - No Missing Space ATX
|
|
135
|
+
- MD019 - No Multiple Space ATX
|
|
136
|
+
- MD020 - No Missing Space Closed ATX
|
|
137
|
+
- MD021 - No Multiple Space Closed ATX
|
|
138
|
+
- MD022 - Blanks Around Headings
|
|
139
|
+
- MD023 - Heading Start Left
|
|
140
|
+
- MD024 - No Duplicate Heading
|
|
141
|
+
- MD025 - Single Title
|
|
142
|
+
- MD026 - No Trailing Punctuation
|
|
143
|
+
- MD041 - First Line Heading
|
|
144
|
+
- MD043 - Required Headings
|
|
145
|
+
|
|
146
|
+
### Category 4: List-Related Rules
|
|
147
|
+
|
|
148
|
+
Apply `ctx.likely_has_lists()` to these rules:
|
|
149
|
+
|
|
150
|
+
- MD005 - List Indent
|
|
151
|
+
- MD006 - Start Bullets
|
|
152
|
+
- MD007 - UL Indent
|
|
153
|
+
- MD029 - Ordered List Prefix
|
|
154
|
+
- MD030 - List Marker Space
|
|
155
|
+
- MD032 - Blanks Around Lists
|
|
156
|
+
|
|
157
|
+
### Category 5: Link/Image-Related Rules
|
|
158
|
+
|
|
159
|
+
Apply `ctx.likely_has_links_or_images()` to these rules:
|
|
160
|
+
|
|
161
|
+
- MD011 - No Reversed Links
|
|
162
|
+
- MD034 - No Bare URLs
|
|
163
|
+
- MD039 - No Space in Links
|
|
164
|
+
- MD045 - No Alt Text
|
|
165
|
+
- MD051 - Link Fragments
|
|
166
|
+
- MD052 - Reference Links/Images
|
|
167
|
+
- MD053 - Link Image Reference Definitions
|
|
168
|
+
- MD054 - Link Image Style
|
|
169
|
+
- MD057 - Existing Relative Links
|
|
170
|
+
|
|
171
|
+
### Category 6: Emphasis/Strong-Related Rules
|
|
172
|
+
|
|
173
|
+
Apply `ctx.likely_has_emphasis()` to these rules:
|
|
174
|
+
|
|
175
|
+
- MD036 - No Emphasis Only First
|
|
176
|
+
- MD037 - Spaces Around Emphasis
|
|
177
|
+
- MD038 - No Space in Code
|
|
178
|
+
|
|
179
|
+
### Category 7: Blockquote-Related Rules
|
|
180
|
+
|
|
181
|
+
Apply `ctx.likely_has_blockquotes()` to these rules:
|
|
182
|
+
|
|
183
|
+
- MD028 - No Blanks in Blockquote
|
|
184
|
+
|
|
185
|
+
### Category 8: Table-Related Rules
|
|
186
|
+
|
|
187
|
+
Apply `ctx.likely_has_tables()` to these rules:
|
|
188
|
+
|
|
189
|
+
- MD056 - Table Column Count
|
|
190
|
+
- MD058 - Blanks Around Tables
|
|
191
|
+
|
|
192
|
+
### Category 9: Simple Character Checks
|
|
193
|
+
|
|
194
|
+
These rules need custom optimization using `has_char()`:
|
|
195
|
+
|
|
196
|
+
- MD009 - Trailing Spaces (already optimized, uses `has_char(' ')`)
|
|
197
|
+
- MD010 - No Hard Tabs (use `has_char('\t')`, consider adding tab_count to CharFrequency)
|
|
198
|
+
- MD012 - No Multiple Blanks (check for '\n')
|
|
199
|
+
- MD035 - HR Style (check for '-', '*', '_')
|
|
200
|
+
- MD047 - Single Trailing Newline (check for '\n')
|
|
201
|
+
|
|
202
|
+
### Category 10: Special Cases
|
|
203
|
+
|
|
204
|
+
- MD014 - Commands Show Output (check for '```' or code blocks)
|
|
205
|
+
- MD044 - Proper Names (no early exit possible - must scan all text)
|
|
206
|
+
|
|
207
|
+
## Architectural Improvements
|
|
208
|
+
|
|
209
|
+
### Add tab_count to CharFrequency
|
|
210
|
+
|
|
211
|
+
**File**: `src/lint_context.rs`
|
|
212
|
+
|
|
213
|
+
Add to CharFrequency struct (around line 289):
|
|
214
|
+
|
|
215
|
+
```rust
|
|
216
|
+
/// Count of \t characters (tabs)
|
|
217
|
+
pub tab_count: usize,
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Update `compute_char_frequency()` (around line 2240):
|
|
221
|
+
|
|
222
|
+
```rust
|
|
223
|
+
'\t' => frequency.tab_count += 1,
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Update `has_char()` (around line 644):
|
|
227
|
+
|
|
228
|
+
```rust
|
|
229
|
+
'\t' => self.char_frequency.tab_count > 0,
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Update `char_count()` (around line 663):
|
|
233
|
+
|
|
234
|
+
```rust
|
|
235
|
+
'\t' => self.char_frequency.tab_count,
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## Implementation Strategy
|
|
239
|
+
|
|
240
|
+
### Phase 1: Quick Wins (Category 1 - 8 rules)
|
|
241
|
+
|
|
242
|
+
Implement direct replacements with minimal risk:
|
|
243
|
+
|
|
244
|
+
- MD003, MD004, MD033, MD042, MD049, MD055, MD027, MD040
|
|
245
|
+
|
|
246
|
+
### Phase 2: Systematic Rollout (Categories 3-8 - ~40 rules)
|
|
247
|
+
|
|
248
|
+
Apply pattern-based optimizations to rule categories:
|
|
249
|
+
|
|
250
|
+
- Heading rules → `likely_has_headings()`
|
|
251
|
+
- List rules → `likely_has_lists()`
|
|
252
|
+
- Link/image rules → `likely_has_links_or_images()`
|
|
253
|
+
- Emphasis rules → `likely_has_emphasis()`
|
|
254
|
+
- Blockquote rules → `likely_has_blockquotes()`
|
|
255
|
+
- Table rules → `likely_has_tables()`
|
|
256
|
+
|
|
257
|
+
### Phase 3: Architecture (Category 9)
|
|
258
|
+
|
|
259
|
+
- Add `tab_count` to CharFrequency
|
|
260
|
+
- Add `space_count` to CharFrequency (optional)
|
|
261
|
+
- Add `newline_count` to CharFrequency (optional)
|
|
262
|
+
|
|
263
|
+
### Phase 4: Validation
|
|
264
|
+
|
|
265
|
+
- Run full test suite after each phase
|
|
266
|
+
- Benchmark performance improvements
|
|
267
|
+
- Verify no false negatives introduced
|
|
268
|
+
|
|
269
|
+
## Expected Performance Impact
|
|
270
|
+
|
|
271
|
+
### Documents Without Relevant Elements
|
|
272
|
+
|
|
273
|
+
- **Before**: O(n) string/line scanning on every rule
|
|
274
|
+
- **After**: O(1) character frequency check
|
|
275
|
+
- **Speedup**: 10-100x depending on document size
|
|
276
|
+
|
|
277
|
+
### Documents With Relevant Elements
|
|
278
|
+
|
|
279
|
+
- **Before**: O(n) scan + rule processing
|
|
280
|
+
- **After**: O(1) check + rule processing
|
|
281
|
+
- **Speedup**: Minimal (rule still needs to run)
|
|
282
|
+
|
|
283
|
+
### Overall Impact
|
|
284
|
+
|
|
285
|
+
- **Typical workload**: 10-30% faster (mix of documents with/without elements)
|
|
286
|
+
- **Best case**: 100x faster (processing large files without relevant markdown)
|
|
287
|
+
- **Worst case**: No regression (documents with elements still process normally)
|
|
288
|
+
|
|
289
|
+
## Testing Strategy
|
|
290
|
+
|
|
291
|
+
For each optimized rule:
|
|
292
|
+
|
|
293
|
+
1. Ensure existing tests pass
|
|
294
|
+
2. Add test for empty document (should skip)
|
|
295
|
+
3. Add test for document without relevant elements (should skip)
|
|
296
|
+
4. Verify no false negatives (all violations still caught)
|
|
297
|
+
|
|
298
|
+
## Rollout Plan
|
|
299
|
+
|
|
300
|
+
1. **Week 1**: Implement Phase 1 (8 quick wins)
|
|
301
|
+
2. **Week 2**: Implement Phase 2 (40 systematic rollouts)
|
|
302
|
+
3. **Week 3**: Implement Phase 3 (architecture improvements)
|
|
303
|
+
4. **Week 4**: Validation and benchmarking
|
|
304
|
+
|
|
305
|
+
## Success Metrics
|
|
306
|
+
|
|
307
|
+
- All 54 rules use appropriate LintContext optimization methods
|
|
308
|
+
- Test suite passes with 100% success
|
|
309
|
+
- No false negatives introduced
|
|
310
|
+
- Measurable performance improvement (>10% on typical workloads)
|
|
311
|
+
- Code consistency across all rules
|