rumdl 0.0.49__tar.gz → 0.0.51__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.49 → rumdl-0.0.51}/Cargo.lock +1 -1
- {rumdl-0.0.49 → rumdl-0.0.51}/Cargo.toml +1 -1
- {rumdl-0.0.49 → rumdl-0.0.51}/PKG-INFO +1 -1
- {rumdl-0.0.49 → rumdl-0.0.51}/benches/rule_performance.rs +3 -4
- {rumdl-0.0.49 → rumdl-0.0.51}/src/main.rs +39 -202
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/heading_utils.rs +1 -1
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md011_no_reversed_links.rs +18 -13
- rumdl-0.0.51/src/rules/md024_no_duplicate_heading.rs +195 -0
- rumdl-0.0.51/src/rules/md029_ordered_list_prefix.rs +402 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md036_no_emphasis_only_first.rs +3 -3
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md037_spaces_around_emphasis.rs +6 -7
- rumdl-0.0.49/src/rules/md047_file_end_newline.rs → rumdl-0.0.51/src/rules/md047_single_trailing_newline.rs +7 -7
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/mod.rs +9 -9
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/cli_integration_tests.rs +109 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/integration_tests.rs +2 -2
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/perf_check.rs +2 -2
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md011_test.rs +5 -5
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md024_test.rs +19 -17
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md029_test.rs +7 -7
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md036_test.rs +10 -10
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md037_test.rs +22 -22
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md047_test.rs +5 -5
- rumdl-0.0.49/src/rules/md009_no_trailing_spaces.rs +0 -149
- rumdl-0.0.49/src/rules/md011_reversed_link.rs +0 -77
- rumdl-0.0.49/src/rules/md024_multiple_headings.rs +0 -211
- rumdl-0.0.49/src/rules/md024_no_duplicate_heading.rs +0 -200
- rumdl-0.0.49/src/rules/md027_no_multiple_space_blockquote.rs +0 -103
- rumdl-0.0.49/src/rules/md029_ol_prefix.rs +0 -123
- rumdl-0.0.49/src/rules/md029_ordered_list_item_prefix.rs +0 -154
- rumdl-0.0.49/src/rules/md029_ordered_list_marker.rs +0 -427
- rumdl-0.0.49/src/rules/md029_ordered_list_prefix.rs +0 -298
- rumdl-0.0.49/src/rules/md047_single_trailing_newline.rs +0 -54
- {rumdl-0.0.49 → rumdl-0.0.51}/.pre-commit-config.yaml +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/.rumdl.toml +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/MANIFEST.in +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/Makefile +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/README.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/assets/logo.png +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/benches/range_performance.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/RULES.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md001.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md002.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md003.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md004.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md005.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md006.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md007.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md008.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md009.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md010.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md011.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md012.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md013.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md014.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md015.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md016.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md017.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md018.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md019.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md020.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md021.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md022.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md023.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md024.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md025.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md026.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md027.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md028.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md029.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md030.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md031.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md032.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md033.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md034.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md035.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md036.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md037.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md038.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md039.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md040.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md041.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md042.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md043.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md044.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md045.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md046.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md047.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md048.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md049.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md050.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md051.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md052.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md053.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md054.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md055.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md056.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md057.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/docs/md058.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/pyproject.toml +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/python/MANIFEST.in +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/rumdl.toml.example +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/config.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/init.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/lib.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/profiling.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/python.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rule.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md008_ul_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md013_line_length.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md015_no_missing_space_after_list_marker.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md016_no_multiple_space_after_list_marker.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md017_no_emphasis_as_heading.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md032_blanks_around_lists.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md051_link_fragments.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/mod.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/config_tests.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/init_tests.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/lib.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md008_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md015_proptest.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md015_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md016_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md017_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.49 → rumdl-0.0.51}/tests/utils_tests.rs +0 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
2
2
|
use rumdl::rule::Rule;
|
|
3
3
|
use rumdl::rules::{
|
|
4
|
-
MD013LineLength, MD015NoMissingSpaceAfterListMarker, MD033NoInlineHtml,
|
|
5
|
-
|
|
6
|
-
MD053LinkImageReferenceDefinitions,
|
|
4
|
+
MD013LineLength, MD015NoMissingSpaceAfterListMarker, MD033NoInlineHtml, MD037NoSpaceInEmphasis,
|
|
5
|
+
MD044ProperNames, MD051LinkFragments, MD053LinkImageReferenceDefinitions,
|
|
7
6
|
};
|
|
8
7
|
|
|
9
8
|
/// Benchmark MD013 rule on a large content with long lines
|
|
@@ -66,7 +65,7 @@ fn bench_md037(c: &mut Criterion) {
|
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
let rule =
|
|
68
|
+
let rule = MD037NoSpaceInEmphasis;
|
|
70
69
|
|
|
71
70
|
c.bench_function("MD037 check 500 emphasis markers", |b| {
|
|
72
71
|
b.iter(|| rule.check(black_box(&content)))
|
|
@@ -233,7 +233,7 @@ fn get_enabled_rules_from_checkargs(
|
|
|
233
233
|
Box::new(MD008ULStyle::default()),
|
|
234
234
|
Box::new(MD009TrailingSpaces::default()),
|
|
235
235
|
Box::new(MD010NoHardTabs::default()),
|
|
236
|
-
Box::new(
|
|
236
|
+
Box::new(MD011NoReversedLinks {}),
|
|
237
237
|
Box::new(MD012NoMultipleBlanks::default()),
|
|
238
238
|
Box::new(MD013LineLength::default()),
|
|
239
239
|
Box::new(MD015NoMissingSpaceAfterListMarker::default()),
|
|
@@ -245,7 +245,7 @@ fn get_enabled_rules_from_checkargs(
|
|
|
245
245
|
Box::new(MD021NoMultipleSpaceClosedAtx {}),
|
|
246
246
|
Box::new(MD022BlanksAroundHeadings::default()),
|
|
247
247
|
Box::new(MD023HeadingStartLeft {}),
|
|
248
|
-
Box::new(
|
|
248
|
+
Box::new(MD024NoDuplicateHeading::default()),
|
|
249
249
|
Box::new(MD025SingleTitle::default()),
|
|
250
250
|
Box::new(MD026NoTrailingPunctuation::default()),
|
|
251
251
|
Box::new(MD027MultipleSpacesBlockquote {}),
|
|
@@ -257,8 +257,8 @@ fn get_enabled_rules_from_checkargs(
|
|
|
257
257
|
Box::new(MD033NoInlineHtml::default()),
|
|
258
258
|
Box::new(MD034NoBareUrls {}),
|
|
259
259
|
Box::new(MD035HRStyle::default()),
|
|
260
|
-
Box::new(
|
|
261
|
-
Box::new(
|
|
260
|
+
Box::new(MD036NoEmphasisAsHeading {}),
|
|
261
|
+
Box::new(MD037NoSpaceInEmphasis),
|
|
262
262
|
Box::new(MD038NoSpaceInCode::default()),
|
|
263
263
|
Box::new(MD039NoSpaceInLinks),
|
|
264
264
|
Box::new(MD040FencedCodeLanguage {}),
|
|
@@ -268,7 +268,7 @@ fn get_enabled_rules_from_checkargs(
|
|
|
268
268
|
Box::new(MD044ProperNames::new(Vec::new(), true)),
|
|
269
269
|
Box::new(MD045NoAltText::new()),
|
|
270
270
|
Box::new(MD046CodeBlockStyle::new(CodeBlockStyle::Consistent)),
|
|
271
|
-
Box::new(
|
|
271
|
+
Box::new(MD047SingleTrailingNewline),
|
|
272
272
|
Box::new(MD048CodeFenceStyle::new(CodeFenceStyle::Consistent)),
|
|
273
273
|
Box::new(MD049EmphasisStyle::default()),
|
|
274
274
|
Box::new(MD050StrongStyle::new(StrongStyle::Consistent)),
|
|
@@ -737,7 +737,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
737
737
|
Box::new(MD008ULStyle::default()),
|
|
738
738
|
Box::new(MD009TrailingSpaces::default()),
|
|
739
739
|
Box::new(MD010NoHardTabs::default()),
|
|
740
|
-
Box::new(
|
|
740
|
+
Box::new(MD011NoReversedLinks {}),
|
|
741
741
|
Box::new(MD012NoMultipleBlanks::default()),
|
|
742
742
|
Box::new(MD013LineLength::default()),
|
|
743
743
|
Box::new(MD015NoMissingSpaceAfterListMarker::default()),
|
|
@@ -749,7 +749,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
749
749
|
Box::new(MD021NoMultipleSpaceClosedAtx {}),
|
|
750
750
|
Box::new(MD022BlanksAroundHeadings::default()),
|
|
751
751
|
Box::new(MD023HeadingStartLeft {}),
|
|
752
|
-
Box::new(
|
|
752
|
+
Box::new(MD024NoDuplicateHeading::default()),
|
|
753
753
|
Box::new(MD025SingleTitle::default()),
|
|
754
754
|
Box::new(MD026NoTrailingPunctuation::default()),
|
|
755
755
|
Box::new(MD027MultipleSpacesBlockquote {}),
|
|
@@ -761,8 +761,8 @@ build-backend = \"setuptools.build_meta\"
|
|
|
761
761
|
Box::new(MD033NoInlineHtml::default()),
|
|
762
762
|
Box::new(MD034NoBareUrls {}),
|
|
763
763
|
Box::new(MD035HRStyle::default()),
|
|
764
|
-
Box::new(
|
|
765
|
-
Box::new(
|
|
764
|
+
Box::new(MD036NoEmphasisAsHeading {}),
|
|
765
|
+
Box::new(MD037NoSpaceInEmphasis),
|
|
766
766
|
Box::new(MD038NoSpaceInCode::default()),
|
|
767
767
|
Box::new(MD039NoSpaceInLinks),
|
|
768
768
|
Box::new(MD040FencedCodeLanguage {}),
|
|
@@ -772,7 +772,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
772
772
|
Box::new(MD044ProperNames::new(Vec::new(), true)),
|
|
773
773
|
Box::new(MD045NoAltText::new()),
|
|
774
774
|
Box::new(MD046CodeBlockStyle::new(CodeBlockStyle::Consistent)),
|
|
775
|
-
Box::new(
|
|
775
|
+
Box::new(MD047SingleTrailingNewline),
|
|
776
776
|
Box::new(MD048CodeFenceStyle::new(CodeFenceStyle::Consistent)),
|
|
777
777
|
Box::new(MD049EmphasisStyle::default()),
|
|
778
778
|
Box::new(MD050StrongStyle::new(StrongStyle::Consistent)),
|
|
@@ -944,6 +944,10 @@ build-backend = \"setuptools.build_meta\"
|
|
|
944
944
|
use rumdl::rules::*;
|
|
945
945
|
use std::collections::BTreeMap;
|
|
946
946
|
use toml::Value;
|
|
947
|
+
// Build default global config
|
|
948
|
+
let global = Value::try_from(rumdl_config::GlobalConfig::default())
|
|
949
|
+
.unwrap_or(Value::Table(Default::default()));
|
|
950
|
+
// Build default rule configs
|
|
947
951
|
let mut rule_map = BTreeMap::new();
|
|
948
952
|
let all_rules: Vec<Box<dyn Rule>> = vec![
|
|
949
953
|
Box::new(MD001HeadingIncrement),
|
|
@@ -956,7 +960,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
956
960
|
Box::new(MD008ULStyle::default()),
|
|
957
961
|
Box::new(MD009TrailingSpaces::default()),
|
|
958
962
|
Box::new(MD010NoHardTabs::default()),
|
|
959
|
-
Box::new(
|
|
963
|
+
Box::new(MD011NoReversedLinks {}),
|
|
960
964
|
Box::new(MD012NoMultipleBlanks::default()),
|
|
961
965
|
Box::new(MD013LineLength::default()),
|
|
962
966
|
Box::new(MD015NoMissingSpaceAfterListMarker::default()),
|
|
@@ -968,7 +972,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
968
972
|
Box::new(MD021NoMultipleSpaceClosedAtx {}),
|
|
969
973
|
Box::new(MD022BlanksAroundHeadings::default()),
|
|
970
974
|
Box::new(MD023HeadingStartLeft {}),
|
|
971
|
-
Box::new(
|
|
975
|
+
Box::new(MD024NoDuplicateHeading::default()),
|
|
972
976
|
Box::new(MD025SingleTitle::default()),
|
|
973
977
|
Box::new(MD026NoTrailingPunctuation::default()),
|
|
974
978
|
Box::new(MD027MultipleSpacesBlockquote {}),
|
|
@@ -980,8 +984,8 @@ build-backend = \"setuptools.build_meta\"
|
|
|
980
984
|
Box::new(MD033NoInlineHtml::default()),
|
|
981
985
|
Box::new(MD034NoBareUrls {}),
|
|
982
986
|
Box::new(MD035HRStyle::default()),
|
|
983
|
-
Box::new(
|
|
984
|
-
Box::new(
|
|
987
|
+
Box::new(MD036NoEmphasisAsHeading {}),
|
|
988
|
+
Box::new(MD037NoSpaceInEmphasis),
|
|
985
989
|
Box::new(MD038NoSpaceInCode::default()),
|
|
986
990
|
Box::new(MD039NoSpaceInLinks),
|
|
987
991
|
Box::new(MD040FencedCodeLanguage {}),
|
|
@@ -991,7 +995,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
991
995
|
Box::new(MD044ProperNames::new(Vec::new(), true)),
|
|
992
996
|
Box::new(MD045NoAltText::new()),
|
|
993
997
|
Box::new(MD046CodeBlockStyle::new(CodeBlockStyle::Consistent)),
|
|
994
|
-
Box::new(
|
|
998
|
+
Box::new(MD047SingleTrailingNewline),
|
|
995
999
|
Box::new(MD048CodeFenceStyle::new(CodeFenceStyle::Consistent)),
|
|
996
1000
|
Box::new(MD049EmphasisStyle::default()),
|
|
997
1001
|
Box::new(MD050StrongStyle::new(StrongStyle::Consistent)),
|
|
@@ -1009,190 +1013,23 @@ build-backend = \"setuptools.build_meta\"
|
|
|
1009
1013
|
rule_map.insert(name, value);
|
|
1010
1014
|
}
|
|
1011
1015
|
}
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
Value::Array(
|
|
1022
|
-
sourced
|
|
1023
|
-
.global
|
|
1024
|
-
.enable
|
|
1025
|
-
.value
|
|
1026
|
-
.iter()
|
|
1027
|
-
.map(|s| Value::String(s.clone()))
|
|
1028
|
-
.collect(),
|
|
1029
|
-
),
|
|
1030
|
-
);
|
|
1031
|
-
sourced_global_table.insert(
|
|
1032
|
-
"disable".to_string(),
|
|
1033
|
-
Value::Array(
|
|
1034
|
-
sourced
|
|
1035
|
-
.global
|
|
1036
|
-
.disable
|
|
1037
|
-
.value
|
|
1038
|
-
.iter()
|
|
1039
|
-
.map(|s| Value::String(s.clone()))
|
|
1040
|
-
.collect(),
|
|
1041
|
-
),
|
|
1042
|
-
);
|
|
1043
|
-
sourced_global_table.insert(
|
|
1044
|
-
"exclude".to_string(),
|
|
1045
|
-
Value::Array(
|
|
1046
|
-
sourced
|
|
1047
|
-
.global
|
|
1048
|
-
.exclude
|
|
1049
|
-
.value
|
|
1050
|
-
.iter()
|
|
1051
|
-
.map(|s| Value::String(s.clone()))
|
|
1052
|
-
.collect(),
|
|
1053
|
-
),
|
|
1054
|
-
);
|
|
1055
|
-
sourced_global_table.insert(
|
|
1056
|
-
"include".to_string(),
|
|
1057
|
-
Value::Array(
|
|
1058
|
-
sourced
|
|
1059
|
-
.global
|
|
1060
|
-
.include
|
|
1061
|
-
.value
|
|
1062
|
-
.iter()
|
|
1063
|
-
.map(|s| Value::String(s.clone()))
|
|
1064
|
-
.collect(),
|
|
1065
|
-
),
|
|
1066
|
-
);
|
|
1067
|
-
sourced_global_table.insert(
|
|
1068
|
-
"respect_gitignore".to_string(),
|
|
1069
|
-
Value::Boolean(sourced.global.respect_gitignore.value),
|
|
1070
|
-
);
|
|
1071
|
-
for (k, v) in sourced_global_table {
|
|
1072
|
-
global_table.insert(k, v);
|
|
1073
|
-
}
|
|
1074
|
-
}
|
|
1075
|
-
for (rule_name, rule_defaults) in rule_map.iter_mut() {
|
|
1076
|
-
if let Some(sourced_rule) = sourced.rules.get(rule_name) {
|
|
1077
|
-
if let Some(defaults_table) = rule_defaults.as_table_mut() {
|
|
1078
|
-
for (k, sv) in &sourced_rule.values {
|
|
1079
|
-
defaults_table.insert(k.clone(), sv.value.clone());
|
|
1080
|
-
}
|
|
1081
|
-
}
|
|
1082
|
-
}
|
|
1083
|
-
}
|
|
1084
|
-
// Annotated config output (after all variables are defined)
|
|
1085
|
-
// --- Collect all lines for alignment ---
|
|
1086
|
-
let mut all_lines = Vec::new();
|
|
1087
|
-
// --- GLOBAL SECTION ---
|
|
1088
|
-
let mut global_section_lines = Vec::new();
|
|
1089
|
-
let global_keys = [
|
|
1090
|
-
("enable", &sourced.global.enable, "vec"),
|
|
1091
|
-
("disable", &sourced.global.disable, "vec"),
|
|
1092
|
-
("exclude", &sourced.global.exclude, "vec"),
|
|
1093
|
-
("include", &sourced.global.include, "vec"),
|
|
1094
|
-
];
|
|
1095
|
-
for (key, sourced_val, kind) in &global_keys {
|
|
1096
|
-
let value_str = match *kind {
|
|
1097
|
-
"vec" => to_toml_string_vec_string(&sourced_val.value).yellow(),
|
|
1098
|
-
_ => "<unknown>".yellow(),
|
|
1099
|
-
};
|
|
1100
|
-
let src_str_colored = match sourced_val.source {
|
|
1101
|
-
rumdl_config::ConfigSource::Cli => "CLI".green(),
|
|
1102
|
-
rumdl_config::ConfigSource::RumdlToml => ".rumdl.toml".blue(),
|
|
1103
|
-
rumdl_config::ConfigSource::PyprojectToml => "pyproject.toml".magenta(),
|
|
1104
|
-
rumdl_config::ConfigSource::Default => "default".yellow(),
|
|
1105
|
-
};
|
|
1106
|
-
let key_str = key.cyan();
|
|
1107
|
-
global_section_lines.push((
|
|
1108
|
-
format!(" {} = {}", key_str, value_str),
|
|
1109
|
-
format!("[from {}]", src_str_colored),
|
|
1110
|
-
));
|
|
1111
|
-
}
|
|
1112
|
-
let sourced_val = &sourced.global.respect_gitignore;
|
|
1113
|
-
let value_str = sourced_val.value.to_string().yellow();
|
|
1114
|
-
let src_str_colored = match sourced_val.source {
|
|
1115
|
-
rumdl_config::ConfigSource::Cli => "CLI".green(),
|
|
1116
|
-
rumdl_config::ConfigSource::RumdlToml => ".rumdl.toml".blue(),
|
|
1117
|
-
rumdl_config::ConfigSource::PyprojectToml => "pyproject.toml".magenta(),
|
|
1118
|
-
rumdl_config::ConfigSource::Default => "default".yellow(),
|
|
1119
|
-
};
|
|
1120
|
-
let key_str = "respect_gitignore".cyan();
|
|
1121
|
-
global_section_lines.push((
|
|
1122
|
-
format!(" {} = {}", key_str, value_str),
|
|
1123
|
-
format!("[from {}]", src_str_colored),
|
|
1124
|
-
));
|
|
1125
|
-
// Add section marker for printing
|
|
1126
|
-
all_lines.push(("[global]".bold().underline().to_string(), String::new()));
|
|
1127
|
-
all_lines.extend(global_section_lines);
|
|
1128
|
-
// --- RULE SECTIONS ---
|
|
1129
|
-
let mut rule_names: Vec<_> = rule_map.keys().cloned().collect();
|
|
1016
|
+
// Print [global] section first
|
|
1017
|
+
let mut global_table = toml::map::Map::new();
|
|
1018
|
+
global_table.insert("global".to_string(), global);
|
|
1019
|
+
println!(
|
|
1020
|
+
"{}",
|
|
1021
|
+
toml::to_string_pretty(&Value::Table(global_table)).unwrap()
|
|
1022
|
+
);
|
|
1023
|
+
// Then print each rule section
|
|
1024
|
+
let mut rule_names: Vec<_> = rule_map.keys().collect();
|
|
1130
1025
|
rule_names.sort();
|
|
1131
1026
|
for rule_name in rule_names {
|
|
1132
|
-
let
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
String::new(),
|
|
1139
|
-
));
|
|
1140
|
-
let mut keys: Vec<_> = defaults_table.keys().collect();
|
|
1141
|
-
keys.sort();
|
|
1142
|
-
for key in keys {
|
|
1143
|
-
let default_val = &defaults_table[key];
|
|
1144
|
-
let (value, src_str_colored) = if let Some(sourced_rule) = sourced_rule
|
|
1145
|
-
{
|
|
1146
|
-
if let Some(sv) = sourced_rule.values.get(key) {
|
|
1147
|
-
(
|
|
1148
|
-
sv.value.clone(),
|
|
1149
|
-
match sv.source {
|
|
1150
|
-
rumdl_config::ConfigSource::Cli => "CLI".green(),
|
|
1151
|
-
rumdl_config::ConfigSource::RumdlToml => {
|
|
1152
|
-
".rumdl.toml".blue()
|
|
1153
|
-
}
|
|
1154
|
-
rumdl_config::ConfigSource::PyprojectToml => {
|
|
1155
|
-
"pyproject.toml".magenta()
|
|
1156
|
-
}
|
|
1157
|
-
rumdl_config::ConfigSource::Default => {
|
|
1158
|
-
"default".yellow()
|
|
1159
|
-
}
|
|
1160
|
-
},
|
|
1161
|
-
)
|
|
1162
|
-
} else {
|
|
1163
|
-
(default_val.clone(), "default".yellow())
|
|
1164
|
-
}
|
|
1165
|
-
} else {
|
|
1166
|
-
(default_val.clone(), "default".yellow())
|
|
1167
|
-
};
|
|
1168
|
-
let value_str = match value {
|
|
1169
|
-
Value::Array(arr) => {
|
|
1170
|
-
let vals: Vec<String> =
|
|
1171
|
-
arr.into_iter().map(|v| v.to_string()).collect();
|
|
1172
|
-
format!("[{}]", vals.join(", ")).yellow()
|
|
1173
|
-
}
|
|
1174
|
-
Value::String(s) => format!("\"{}\"", s).yellow(),
|
|
1175
|
-
Value::Boolean(b) => b.to_string().yellow(),
|
|
1176
|
-
Value::Integer(i) => i.to_string().yellow(),
|
|
1177
|
-
Value::Float(f) => f.to_string().yellow(),
|
|
1178
|
-
_ => value.to_string().yellow(),
|
|
1179
|
-
};
|
|
1180
|
-
let key_str = key.cyan();
|
|
1181
|
-
all_lines.push((
|
|
1182
|
-
format!(" {} = {}", key_str, value_str),
|
|
1183
|
-
format!("[from {}]", src_str_colored),
|
|
1184
|
-
));
|
|
1185
|
-
}
|
|
1186
|
-
}
|
|
1187
|
-
}
|
|
1188
|
-
// --- Print all lines with global alignment ---
|
|
1189
|
-
let max_left = all_lines.iter().map(|(l, _)| l.len()).max().unwrap_or(0);
|
|
1190
|
-
for (left, right) in &all_lines {
|
|
1191
|
-
if right.is_empty() {
|
|
1192
|
-
println!("{}", left);
|
|
1193
|
-
} else {
|
|
1194
|
-
println!("{:<width$} {}", left, right, width = max_left);
|
|
1195
|
-
}
|
|
1027
|
+
let mut rule_table = toml::map::Map::new();
|
|
1028
|
+
rule_table.insert(rule_name.clone(), rule_map[rule_name].clone());
|
|
1029
|
+
println!(
|
|
1030
|
+
"{}",
|
|
1031
|
+
toml::to_string_pretty(&Value::Table(rule_table)).unwrap()
|
|
1032
|
+
);
|
|
1196
1033
|
}
|
|
1197
1034
|
return;
|
|
1198
1035
|
}
|
|
@@ -1212,7 +1049,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
1212
1049
|
Box::new(MD008ULStyle::default()),
|
|
1213
1050
|
Box::new(MD009TrailingSpaces::default()),
|
|
1214
1051
|
Box::new(MD010NoHardTabs::default()),
|
|
1215
|
-
Box::new(
|
|
1052
|
+
Box::new(MD011NoReversedLinks {}),
|
|
1216
1053
|
Box::new(MD012NoMultipleBlanks::default()),
|
|
1217
1054
|
Box::new(MD013LineLength::default()),
|
|
1218
1055
|
Box::new(MD015NoMissingSpaceAfterListMarker::default()),
|
|
@@ -1224,7 +1061,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
1224
1061
|
Box::new(MD021NoMultipleSpaceClosedAtx {}),
|
|
1225
1062
|
Box::new(MD022BlanksAroundHeadings::default()),
|
|
1226
1063
|
Box::new(MD023HeadingStartLeft {}),
|
|
1227
|
-
Box::new(
|
|
1064
|
+
Box::new(MD024NoDuplicateHeading::default()),
|
|
1228
1065
|
Box::new(MD025SingleTitle::default()),
|
|
1229
1066
|
Box::new(MD026NoTrailingPunctuation::default()),
|
|
1230
1067
|
Box::new(MD027MultipleSpacesBlockquote {}),
|
|
@@ -1236,8 +1073,8 @@ build-backend = \"setuptools.build_meta\"
|
|
|
1236
1073
|
Box::new(MD033NoInlineHtml::default()),
|
|
1237
1074
|
Box::new(MD034NoBareUrls {}),
|
|
1238
1075
|
Box::new(MD035HRStyle::default()),
|
|
1239
|
-
Box::new(
|
|
1240
|
-
Box::new(
|
|
1076
|
+
Box::new(MD036NoEmphasisAsHeading {}),
|
|
1077
|
+
Box::new(MD037NoSpaceInEmphasis),
|
|
1241
1078
|
Box::new(MD038NoSpaceInCode::default()),
|
|
1242
1079
|
Box::new(MD039NoSpaceInLinks),
|
|
1243
1080
|
Box::new(MD040FencedCodeLanguage {}),
|
|
@@ -1247,7 +1084,7 @@ build-backend = \"setuptools.build_meta\"
|
|
|
1247
1084
|
Box::new(MD044ProperNames::new(Vec::new(), true)),
|
|
1248
1085
|
Box::new(MD045NoAltText::new()),
|
|
1249
1086
|
Box::new(MD046CodeBlockStyle::new(CodeBlockStyle::Consistent)),
|
|
1250
|
-
Box::new(
|
|
1087
|
+
Box::new(MD047SingleTrailingNewline),
|
|
1251
1088
|
Box::new(MD048CodeFenceStyle::new(CodeFenceStyle::Consistent)),
|
|
1252
1089
|
Box::new(MD049EmphasisStyle::default()),
|
|
1253
1090
|
Box::new(MD050StrongStyle::new(StrongStyle::Consistent)),
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
use crate::rule::{Fix, LintError, LintResult, LintWarning, Rule};
|
|
1
|
+
use crate::rule::{Fix, LintError, LintResult, LintWarning, Rule, Severity};
|
|
3
2
|
use regex::Regex;
|
|
4
3
|
|
|
5
4
|
#[derive(Debug, Default)]
|
|
@@ -16,10 +15,15 @@ impl MD011NoReversedLinks {
|
|
|
16
15
|
for cap in re.captures_iter(line) {
|
|
17
16
|
if cap.get(3).is_some() {
|
|
18
17
|
// Found reversed link syntax (text)[url]
|
|
19
|
-
let
|
|
20
|
-
let
|
|
18
|
+
let text = cap[3].trim_matches('(').trim_matches(')');
|
|
19
|
+
let url = &cap[4];
|
|
21
20
|
let start = line_start + cap.get(0).unwrap().start();
|
|
22
|
-
results.push((
|
|
21
|
+
results.push((
|
|
22
|
+
current_line,
|
|
23
|
+
start - line_start + 1,
|
|
24
|
+
text.to_string(),
|
|
25
|
+
url.to_string(),
|
|
26
|
+
));
|
|
23
27
|
}
|
|
24
28
|
}
|
|
25
29
|
line_start += line.len() + 1; // +1 for newline
|
|
@@ -65,13 +69,13 @@ impl Rule for MD011NoReversedLinks {
|
|
|
65
69
|
for cap in re.captures_iter(line) {
|
|
66
70
|
let column = line_start + cap.get(0).unwrap().start() + 1;
|
|
67
71
|
warnings.push(LintWarning {
|
|
68
|
-
|
|
72
|
+
rule_name: Some(self.name()),
|
|
69
73
|
message: "Reversed link syntax".to_string(),
|
|
70
74
|
line: line_num + 1,
|
|
71
75
|
column,
|
|
76
|
+
severity: Severity::Warning,
|
|
72
77
|
fix: Some(Fix {
|
|
73
|
-
|
|
74
|
-
column,
|
|
78
|
+
range: (0..0), // TODO: Replace with correct byte range if available
|
|
75
79
|
replacement: format!("[{}]({})", &cap[2], &cap[1]),
|
|
76
80
|
}),
|
|
77
81
|
});
|
|
@@ -101,10 +105,7 @@ impl Rule for MD011NoReversedLinks {
|
|
|
101
105
|
let adjusted_pos = pos + offset;
|
|
102
106
|
let original_len = format!("({})[{}]", url, text).len();
|
|
103
107
|
let replacement = format!("[{}]({})", text, url);
|
|
104
|
-
result.replace_range(
|
|
105
|
-
adjusted_pos..adjusted_pos + original_len,
|
|
106
|
-
&replacement
|
|
107
|
-
);
|
|
108
|
+
result.replace_range(adjusted_pos..adjusted_pos + original_len, &replacement);
|
|
108
109
|
// Update offset based on the difference in lengths
|
|
109
110
|
if replacement.len() > original_len {
|
|
110
111
|
offset += replacement.len() - original_len;
|
|
@@ -116,4 +117,8 @@ impl Rule for MD011NoReversedLinks {
|
|
|
116
117
|
|
|
117
118
|
Ok(result)
|
|
118
119
|
}
|
|
119
|
-
|
|
120
|
+
|
|
121
|
+
fn as_any(&self) -> &dyn std::any::Any {
|
|
122
|
+
self
|
|
123
|
+
}
|
|
124
|
+
}
|