rumdl 0.0.46__tar.gz → 0.0.47__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.46 → rumdl-0.0.47}/Cargo.lock +1 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/Cargo.toml +1 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/PKG-INFO +29 -29
- {rumdl-0.0.46 → rumdl-0.0.47}/README.md +28 -28
- {rumdl-0.0.46 → rumdl-0.0.47}/benches/range_performance.rs +8 -7
- {rumdl-0.0.46 → rumdl-0.0.47}/benches/range_utils_benchmark.rs +7 -6
- {rumdl-0.0.46 → rumdl-0.0.47}/src/config.rs +69 -43
- {rumdl-0.0.46 → rumdl-0.0.47}/src/main.rs +205 -152
- {rumdl-0.0.46 → rumdl-0.0.47}/src/python.rs +1 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/emphasis_style.rs +7 -5
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/front_matter_utils.rs +22 -23
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/heading_utils.rs +1 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md001_heading_increment.rs +9 -12
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md002_first_heading_h1.rs +15 -11
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md003_heading_style.rs +12 -7
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md004_unordered_list_style.rs +13 -8
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md005_list_indent.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md006_start_bullets.rs +27 -19
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md007_ul_indent.rs +7 -3
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md008_ul_style.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md009_trailing_spaces.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md010_no_hard_tabs.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md011_reversed_link.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md012_no_multiple_blanks.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md013_line_length.rs +10 -2
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md014_commands_show_output.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md015_no_missing_space_after_list_marker.rs +7 -6
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md016_no_multiple_space_after_list_marker.rs +38 -27
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md017_no_emphasis_as_heading.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md018_no_missing_space_atx.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md019_no_multiple_space_atx.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md020_no_missing_space_closed_atx.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md021_no_multiple_space_closed_atx.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md022_blanks_around_headings.rs +27 -42
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md023_heading_start_left.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md024_multiple_headings.rs +7 -2
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md025_single_title.rs +21 -7
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md026_no_trailing_punctuation.rs +43 -53
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md027_multiple_spaces_blockquote.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md028_no_blanks_blockquote.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md029_ordered_list_prefix.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md030_list_marker_space.rs +20 -12
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md031_blanks_around_fences.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md032_blanks_around_lists.rs +13 -8
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md033_no_inline_html.rs +32 -69
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md034_no_bare_urls.rs +13 -7
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md035_hr_style.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md036_no_emphasis_only_first.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md037_spaces_around_emphasis.rs +182 -97
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md038_no_space_in_code.rs +68 -34
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md039_no_space_in_links.rs +16 -14
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md040_fenced_code_language.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md041_first_line_heading.rs +16 -5
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md042_no_empty_links.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md043_required_headings.rs +136 -74
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md044_proper_names.rs +15 -12
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md045_no_alt_text.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md046_code_block_style.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md047_file_end_newline.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md048_code_fence_style.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md049_emphasis_style.rs +70 -32
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md050_strong_style.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md051_link_fragments.rs +13 -4
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md052_reference_links_images.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md053_link_image_reference_definitions.rs +11 -14
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md054_link_image_style.rs +61 -51
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md055_table_pipe_style.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md056_table_column_count.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md057_existing_relative_links.rs +53 -45
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md058_blanks_around_tables.rs +3 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/strong_style.rs +5 -5
- {rumdl-0.0.46 → rumdl-0.0.47}/src/utils/document_structure.rs +5 -8
- {rumdl-0.0.46 → rumdl-0.0.47}/src/utils/early_returns.rs +0 -2
- {rumdl-0.0.46 → rumdl-0.0.47}/src/utils/element_cache.rs +168 -84
- {rumdl-0.0.46 → rumdl-0.0.47}/src/utils/mod.rs +5 -12
- {rumdl-0.0.46 → rumdl-0.0.47}/src/utils/regex_cache.rs +3 -5
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/advanced_integration_tests.rs +11 -10
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/cli_integration_tests.rs +389 -130
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/config_application_tests.rs +4 -4
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/config_tests.rs +45 -16
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/integration_tests.rs +1 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/output_format_tests.rs +369 -242
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/perf_check.rs +2 -5
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/pyproject_config_tests.rs +156 -98
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md002_test.rs +20 -5
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md004_test.rs +6 -2
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md020_test.rs +4 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md021_test.rs +4 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md032_test.rs +14 -3
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md037_test.rs +49 -24
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md044_test.rs +4 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md053_additional_test.rs +4 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md054_test.rs +22 -10
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md057_test.rs +3 -3
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/mod.rs +1 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils_tests.rs +1 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/.pre-commit-config.yaml +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/.rumdl.toml +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/MANIFEST.in +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/Makefile +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/assets/logo.png +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/RULES.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md001.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md002.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md003.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md004.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md005.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md006.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md007.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md008.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md009.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md010.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md011.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md012.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md013.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md014.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md015.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md016.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md017.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md018.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md019.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md020.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md021.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md022.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md023.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md024.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md025.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md026.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md027.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md028.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md029.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md030.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md031.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md032.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md033.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md034.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md035.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md036.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md037.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md038.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md039.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md040.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md041.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md042.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md043.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md044.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md045.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md046.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md047.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md048.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md049.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md050.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md051.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md052.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md053.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md054.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md055.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md056.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md057.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/docs/md058.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/pyproject.toml +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/python/MANIFEST.in +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/rumdl.toml.example +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/init.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/lib.rs +1 -1
- {rumdl-0.0.46 → rumdl-0.0.47}/src/profiling.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rule.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md009_no_trailing_spaces.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md011_no_reversed_links.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md027_no_multiple_space_blockquote.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md029_ol_prefix.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md029_ordered_list_item_prefix.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md029_ordered_list_marker.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/rules/mod.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/init_tests.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/lib.rs +2 -2
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md008_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md015_proptest.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md015_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md016_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md017_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.46 → rumdl-0.0.47}/tests/utils_markdown_edge_cases.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rumdl
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.47
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -59,6 +59,7 @@ Project-URL: Repository, https://github.com/rvben/rumdl.git
|
|
|
59
59
|
- [Using pip (Python)](#using-pip-python)
|
|
60
60
|
- [Download binary](#download-binary)
|
|
61
61
|
- [Usage](#usage)
|
|
62
|
+
- [Pre-commit Integration](#pre-commit-integration)
|
|
62
63
|
- [Rules](#rules)
|
|
63
64
|
- [Command-line Interface](#command-line-interface)
|
|
64
65
|
- [Commands](#commands)
|
|
@@ -74,7 +75,6 @@ Project-URL: Repository, https://github.com/rvben/rumdl.git
|
|
|
74
75
|
- [Prerequisites](#prerequisites)
|
|
75
76
|
- [Building](#building)
|
|
76
77
|
- [Testing](#testing)
|
|
77
|
-
- [Using rumdl with pre-commit](#using-rumdl-with-pre-commit)
|
|
78
78
|
- [License](#license)
|
|
79
79
|
|
|
80
80
|
## Quick Start
|
|
@@ -177,6 +177,33 @@ rumdl check --include "docs/**/*.md" --exclude "docs/temp,docs/drafts" .
|
|
|
177
177
|
rumdl check --no-respect-gitignore .
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
+
## Pre-commit Integration
|
|
181
|
+
|
|
182
|
+
You can use `rumdl` as a pre-commit hook to check and fix your Markdown files.
|
|
183
|
+
|
|
184
|
+
The recommended way is to use the official pre-commit hook repository:
|
|
185
|
+
|
|
186
|
+
[rumdl-pre-commit repository](https://github.com/rvben/rumdl-pre-commit)
|
|
187
|
+
|
|
188
|
+
Add the following to your `.pre-commit-config.yaml`:
|
|
189
|
+
|
|
190
|
+
```yaml
|
|
191
|
+
repos:
|
|
192
|
+
- repo: https://github.com/rvben/rumdl-pre-commit
|
|
193
|
+
rev: v0.0.45 # Use the latest release tag
|
|
194
|
+
hooks:
|
|
195
|
+
- id: rumdl
|
|
196
|
+
# To only check (default):
|
|
197
|
+
# args: []
|
|
198
|
+
# To automatically fix issues:
|
|
199
|
+
# args: [--fix]
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
- By default, the hook will only check for issues.
|
|
203
|
+
- To automatically fix issues, add `args: [--fix]` to the hook configuration.
|
|
204
|
+
|
|
205
|
+
When you run `pre-commit install` or `pre-commit run`, pre-commit will automatically install `rumdl` in an isolated Python environment using pip. You do **not** need to install rumdl manually.
|
|
206
|
+
|
|
180
207
|
## Rules
|
|
181
208
|
|
|
182
209
|
rumdl implements over 50 lint rules for Markdown files. Here are some key rule categories:
|
|
@@ -391,33 +418,6 @@ make build
|
|
|
391
418
|
make test
|
|
392
419
|
```
|
|
393
420
|
|
|
394
|
-
## Using rumdl with pre-commit
|
|
395
|
-
|
|
396
|
-
You can use `rumdl` as a pre-commit hook to check and fix your Markdown files.
|
|
397
|
-
|
|
398
|
-
The recommended way is to use the official pre-commit hook repository:
|
|
399
|
-
|
|
400
|
-
https://github.com/rvben/rumdl-pre-commit
|
|
401
|
-
|
|
402
|
-
Add the following to your `.pre-commit-config.yaml`:
|
|
403
|
-
|
|
404
|
-
```yaml
|
|
405
|
-
repos:
|
|
406
|
-
- repo: https://github.com/rvben/rumdl-pre-commit
|
|
407
|
-
rev: v0.0.45 # Use the latest release tag
|
|
408
|
-
hooks:
|
|
409
|
-
- id: rumdl
|
|
410
|
-
# To only check (default):
|
|
411
|
-
# args: []
|
|
412
|
-
# To automatically fix issues:
|
|
413
|
-
# args: [--fix]
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
- By default, the hook will only check for issues.
|
|
417
|
-
- To automatically fix issues, add `args: [--fix]` to the hook configuration.
|
|
418
|
-
|
|
419
|
-
When you run `pre-commit install` or `pre-commit run`, pre-commit will automatically install `rumdl` in an isolated Python environment using pip. You do **not** need to install rumdl manually.
|
|
420
|
-
|
|
421
421
|
## License
|
|
422
422
|
|
|
423
423
|
rumdl is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
- [Using pip (Python)](#using-pip-python)
|
|
30
30
|
- [Download binary](#download-binary)
|
|
31
31
|
- [Usage](#usage)
|
|
32
|
+
- [Pre-commit Integration](#pre-commit-integration)
|
|
32
33
|
- [Rules](#rules)
|
|
33
34
|
- [Command-line Interface](#command-line-interface)
|
|
34
35
|
- [Commands](#commands)
|
|
@@ -44,7 +45,6 @@
|
|
|
44
45
|
- [Prerequisites](#prerequisites)
|
|
45
46
|
- [Building](#building)
|
|
46
47
|
- [Testing](#testing)
|
|
47
|
-
- [Using rumdl with pre-commit](#using-rumdl-with-pre-commit)
|
|
48
48
|
- [License](#license)
|
|
49
49
|
|
|
50
50
|
## Quick Start
|
|
@@ -147,6 +147,33 @@ rumdl check --include "docs/**/*.md" --exclude "docs/temp,docs/drafts" .
|
|
|
147
147
|
rumdl check --no-respect-gitignore .
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
+
## Pre-commit Integration
|
|
151
|
+
|
|
152
|
+
You can use `rumdl` as a pre-commit hook to check and fix your Markdown files.
|
|
153
|
+
|
|
154
|
+
The recommended way is to use the official pre-commit hook repository:
|
|
155
|
+
|
|
156
|
+
[rumdl-pre-commit repository](https://github.com/rvben/rumdl-pre-commit)
|
|
157
|
+
|
|
158
|
+
Add the following to your `.pre-commit-config.yaml`:
|
|
159
|
+
|
|
160
|
+
```yaml
|
|
161
|
+
repos:
|
|
162
|
+
- repo: https://github.com/rvben/rumdl-pre-commit
|
|
163
|
+
rev: v0.0.45 # Use the latest release tag
|
|
164
|
+
hooks:
|
|
165
|
+
- id: rumdl
|
|
166
|
+
# To only check (default):
|
|
167
|
+
# args: []
|
|
168
|
+
# To automatically fix issues:
|
|
169
|
+
# args: [--fix]
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
- By default, the hook will only check for issues.
|
|
173
|
+
- To automatically fix issues, add `args: [--fix]` to the hook configuration.
|
|
174
|
+
|
|
175
|
+
When you run `pre-commit install` or `pre-commit run`, pre-commit will automatically install `rumdl` in an isolated Python environment using pip. You do **not** need to install rumdl manually.
|
|
176
|
+
|
|
150
177
|
## Rules
|
|
151
178
|
|
|
152
179
|
rumdl implements over 50 lint rules for Markdown files. Here are some key rule categories:
|
|
@@ -361,33 +388,6 @@ make build
|
|
|
361
388
|
make test
|
|
362
389
|
```
|
|
363
390
|
|
|
364
|
-
## Using rumdl with pre-commit
|
|
365
|
-
|
|
366
|
-
You can use `rumdl` as a pre-commit hook to check and fix your Markdown files.
|
|
367
|
-
|
|
368
|
-
The recommended way is to use the official pre-commit hook repository:
|
|
369
|
-
|
|
370
|
-
https://github.com/rvben/rumdl-pre-commit
|
|
371
|
-
|
|
372
|
-
Add the following to your `.pre-commit-config.yaml`:
|
|
373
|
-
|
|
374
|
-
```yaml
|
|
375
|
-
repos:
|
|
376
|
-
- repo: https://github.com/rvben/rumdl-pre-commit
|
|
377
|
-
rev: v0.0.45 # Use the latest release tag
|
|
378
|
-
hooks:
|
|
379
|
-
- id: rumdl
|
|
380
|
-
# To only check (default):
|
|
381
|
-
# args: []
|
|
382
|
-
# To automatically fix issues:
|
|
383
|
-
# args: [--fix]
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
- By default, the hook will only check for issues.
|
|
387
|
-
- To automatically fix issues, add `args: [--fix]` to the hook configuration.
|
|
388
|
-
|
|
389
|
-
When you run `pre-commit install` or `pre-commit run`, pre-commit will automatically install `rumdl` in an isolated Python environment using pip. You do **not** need to install rumdl manually.
|
|
390
|
-
|
|
391
391
|
## License
|
|
392
392
|
|
|
393
393
|
rumdl is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
2
|
+
use rand::rng;
|
|
2
3
|
use rand::Rng;
|
|
3
4
|
use rumdl::rule::Rule;
|
|
4
5
|
use rumdl::MD053LinkImageReferenceDefinitions;
|
|
5
6
|
|
|
6
7
|
fn create_test_content(size: usize, ratio: f64) -> String {
|
|
7
8
|
let mut content = String::with_capacity(size);
|
|
8
|
-
let mut rng =
|
|
9
|
+
let mut rng = rng();
|
|
9
10
|
let line_length = 80;
|
|
10
11
|
let words_per_line = 10;
|
|
11
12
|
let word_length = line_length / words_per_line;
|
|
@@ -14,9 +15,9 @@ fn create_test_content(size: usize, ratio: f64) -> String {
|
|
|
14
15
|
content.push_str("# Test Document with References\n\n");
|
|
15
16
|
|
|
16
17
|
for i in 0..100 {
|
|
17
|
-
if rng.
|
|
18
|
+
if rng.random::<f64>() < 0.5 {
|
|
18
19
|
// 50% chance to add a reference
|
|
19
|
-
if rng.
|
|
20
|
+
if rng.random::<f64>() < 0.7 {
|
|
20
21
|
// 70% chance to be a link, 30% to be an image
|
|
21
22
|
content.push_str(&format!("[Link {}][ref-{}]\n", i, i));
|
|
22
23
|
} else {
|
|
@@ -30,12 +31,12 @@ fn create_test_content(size: usize, ratio: f64) -> String {
|
|
|
30
31
|
// Create paragraphs
|
|
31
32
|
let num_paragraphs = size / (line_length * 5);
|
|
32
33
|
for _ in 0..num_paragraphs {
|
|
33
|
-
let num_lines = rng.
|
|
34
|
+
let num_lines = rng.random_range(3..7);
|
|
34
35
|
for _ in 0..num_lines {
|
|
35
36
|
for _ in 0..words_per_line {
|
|
36
|
-
let word_size = rng.
|
|
37
|
+
let word_size = rng.random_range(3..word_length);
|
|
37
38
|
for _ in 0..word_size {
|
|
38
|
-
let c = (b'a' + rng.
|
|
39
|
+
let c = (b'a' + rng.random_range(0..26)) as char;
|
|
39
40
|
content.push(c);
|
|
40
41
|
}
|
|
41
42
|
content.push(' ');
|
|
@@ -47,7 +48,7 @@ fn create_test_content(size: usize, ratio: f64) -> String {
|
|
|
47
48
|
|
|
48
49
|
// Add reference definitions at the end
|
|
49
50
|
for i in 0..100 {
|
|
50
|
-
if rng.
|
|
51
|
+
if rng.random::<f64>() < ratio {
|
|
51
52
|
// Only add a portion based on ratio
|
|
52
53
|
content.push_str(&format!("[ref-{}]: https://example.com/ref-{}\n", i, i));
|
|
53
54
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
2
|
+
use rand::rng;
|
|
3
|
+
use rand::Rng;
|
|
2
4
|
use rumdl::utils::range_utils::LineIndex;
|
|
3
5
|
|
|
4
6
|
// Naive implementation that doesn't use the optimized function
|
|
@@ -78,14 +80,13 @@ fn bench_range_utils(c: &mut Criterion) {
|
|
|
78
80
|
});
|
|
79
81
|
|
|
80
82
|
// Benchmark with random accesses
|
|
81
|
-
|
|
82
|
-
let mut rng = rand::thread_rng();
|
|
83
|
+
let mut rng = rng();
|
|
83
84
|
|
|
84
85
|
c.bench_function("random_access_optimized", |b| {
|
|
85
86
|
b.iter(|| {
|
|
86
87
|
for _ in 0..20 {
|
|
87
|
-
let line = rng.
|
|
88
|
-
let col = rng.
|
|
88
|
+
let line = rng.random_range(1..=line_count);
|
|
89
|
+
let col = rng.random_range(1..=40);
|
|
89
90
|
black_box(line_index.line_col_to_byte_range(line, col));
|
|
90
91
|
}
|
|
91
92
|
})
|
|
@@ -94,8 +95,8 @@ fn bench_range_utils(c: &mut Criterion) {
|
|
|
94
95
|
c.bench_function("random_access_naive", |b| {
|
|
95
96
|
b.iter(|| {
|
|
96
97
|
for _ in 0..20 {
|
|
97
|
-
let line = rng.
|
|
98
|
-
let col = rng.
|
|
98
|
+
let line = rng.random_range(1..=line_count);
|
|
99
|
+
let col = rng.random_range(1..=40);
|
|
99
100
|
black_box(naive_line_col_to_byte_range(black_box(&content), line, col));
|
|
100
101
|
}
|
|
101
102
|
})
|
|
@@ -47,7 +47,7 @@ pub struct GlobalConfig {
|
|
|
47
47
|
/// Ignore .gitignore file
|
|
48
48
|
#[serde(default)]
|
|
49
49
|
pub ignore_gitignore: bool,
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
/// Respect .gitignore files when scanning directories
|
|
52
52
|
#[serde(default = "default_respect_gitignore")]
|
|
53
53
|
pub respect_gitignore: bool,
|
|
@@ -85,7 +85,7 @@ pub fn load_config(config_path: Option<&str>) -> Result<Config, ConfigError> {
|
|
|
85
85
|
return load_config_from_file(filename);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
|
|
89
89
|
// Check for pyproject.toml
|
|
90
90
|
if Path::new("pyproject.toml").exists() {
|
|
91
91
|
return load_config_from_pyproject("pyproject.toml");
|
|
@@ -115,13 +115,13 @@ fn load_config_from_pyproject(path: &str) -> Result<Config, ConfigError> {
|
|
|
115
115
|
Ok(content) => {
|
|
116
116
|
// Parse the entire pyproject.toml
|
|
117
117
|
let pyproject: toml::Value = toml::from_str(&content)?;
|
|
118
|
-
|
|
118
|
+
|
|
119
119
|
// Try to extract [tool.rumdl] section
|
|
120
120
|
match pyproject.get("tool").and_then(|t| t.get("rumdl")) {
|
|
121
121
|
Some(rumdl_config) => {
|
|
122
122
|
// Create a new Config with defaults
|
|
123
123
|
let mut config = Config::default();
|
|
124
|
-
|
|
124
|
+
|
|
125
125
|
// Parse the complete section into our configuration struct
|
|
126
126
|
if let Some(rumdl_table) = rumdl_config.as_table() {
|
|
127
127
|
// Extract global options from root level
|
|
@@ -130,85 +130,108 @@ fn load_config_from_pyproject(path: &str) -> Result<Config, ConfigError> {
|
|
|
130
130
|
config.global.enable = values;
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
-
|
|
133
|
+
|
|
134
134
|
if let Some(disable) = rumdl_table.get("disable") {
|
|
135
135
|
if let Ok(values) = Vec::<String>::deserialize(disable.clone()) {
|
|
136
136
|
config.global.disable = values;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
if let Some(include) = rumdl_table.get("include") {
|
|
141
141
|
if let Ok(values) = Vec::<String>::deserialize(include.clone()) {
|
|
142
142
|
config.global.include = values;
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
|
|
145
|
+
|
|
146
146
|
if let Some(exclude) = rumdl_table.get("exclude") {
|
|
147
147
|
if let Ok(values) = Vec::<String>::deserialize(exclude.clone()) {
|
|
148
148
|
config.global.exclude = values;
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
|
|
152
|
-
if let Some(ignore_gitignore) = rumdl_table
|
|
153
|
-
.
|
|
151
|
+
|
|
152
|
+
if let Some(ignore_gitignore) = rumdl_table
|
|
153
|
+
.get("ignore-gitignore")
|
|
154
|
+
.or_else(|| rumdl_table.get("ignore_gitignore"))
|
|
155
|
+
{
|
|
154
156
|
if let Ok(value) = bool::deserialize(ignore_gitignore.clone()) {
|
|
155
157
|
config.global.ignore_gitignore = value;
|
|
156
158
|
}
|
|
157
159
|
}
|
|
158
|
-
|
|
159
|
-
if let Some(respect_gitignore) = rumdl_table
|
|
160
|
-
.
|
|
160
|
+
|
|
161
|
+
if let Some(respect_gitignore) = rumdl_table
|
|
162
|
+
.get("respect-gitignore")
|
|
163
|
+
.or_else(|| rumdl_table.get("respect_gitignore"))
|
|
164
|
+
{
|
|
161
165
|
if let Ok(value) = bool::deserialize(respect_gitignore.clone()) {
|
|
162
166
|
config.global.respect_gitignore = value;
|
|
163
167
|
}
|
|
164
168
|
}
|
|
165
|
-
|
|
169
|
+
|
|
166
170
|
// Handle line-length special case
|
|
167
|
-
if let Some(line_length) = rumdl_table
|
|
168
|
-
.
|
|
171
|
+
if let Some(line_length) = rumdl_table
|
|
172
|
+
.get("line-length")
|
|
173
|
+
.or_else(|| rumdl_table.get("line_length"))
|
|
174
|
+
{
|
|
169
175
|
// Create MD013 rule config if it doesn't exist
|
|
170
176
|
if !config.rules.contains_key("MD013") {
|
|
171
|
-
config
|
|
177
|
+
config
|
|
178
|
+
.rules
|
|
179
|
+
.insert("MD013".to_string(), RuleConfig::default());
|
|
172
180
|
}
|
|
173
|
-
|
|
181
|
+
|
|
174
182
|
// Add line_length to the MD013 section
|
|
175
183
|
if let Some(rule_config) = config.rules.get_mut("MD013") {
|
|
176
|
-
rule_config
|
|
184
|
+
rule_config
|
|
185
|
+
.values
|
|
186
|
+
.insert("line_length".to_string(), line_length.clone());
|
|
177
187
|
}
|
|
178
188
|
}
|
|
179
|
-
|
|
189
|
+
|
|
180
190
|
// Extract rule-specific configurations
|
|
181
191
|
for (key, value) in rumdl_table {
|
|
182
192
|
// Skip keys that we've already processed as global options
|
|
183
|
-
if [
|
|
184
|
-
"
|
|
185
|
-
"
|
|
193
|
+
if [
|
|
194
|
+
"enable",
|
|
195
|
+
"disable",
|
|
196
|
+
"include",
|
|
197
|
+
"exclude",
|
|
198
|
+
"ignore-gitignore",
|
|
199
|
+
"ignore_gitignore",
|
|
200
|
+
"line-length",
|
|
201
|
+
"line_length",
|
|
202
|
+
"respect-gitignore",
|
|
203
|
+
"respect_gitignore",
|
|
204
|
+
]
|
|
205
|
+
.contains(&key.as_str())
|
|
206
|
+
{
|
|
186
207
|
continue;
|
|
187
208
|
}
|
|
188
|
-
|
|
209
|
+
|
|
189
210
|
// If it's a table, treat it as a rule configuration
|
|
190
211
|
if let Some(rule_table) = value.as_table() {
|
|
191
212
|
let mut rule_config = RuleConfig::default();
|
|
192
|
-
|
|
213
|
+
|
|
193
214
|
// Add all values from the table to the rule config
|
|
194
215
|
for (rule_key, rule_value) in rule_table {
|
|
195
|
-
rule_config
|
|
216
|
+
rule_config
|
|
217
|
+
.values
|
|
218
|
+
.insert(rule_key.to_string(), rule_value.clone());
|
|
196
219
|
}
|
|
197
|
-
|
|
220
|
+
|
|
198
221
|
// Add to the config
|
|
199
222
|
config.rules.insert(key.to_string(), rule_config);
|
|
200
223
|
}
|
|
201
224
|
}
|
|
202
225
|
}
|
|
203
|
-
|
|
226
|
+
|
|
204
227
|
Ok(config)
|
|
205
|
-
}
|
|
228
|
+
}
|
|
206
229
|
None => {
|
|
207
230
|
// No rumdl configuration found in pyproject.toml
|
|
208
231
|
Ok(Config::default())
|
|
209
232
|
}
|
|
210
233
|
}
|
|
211
|
-
}
|
|
234
|
+
}
|
|
212
235
|
Err(err) => Err(ConfigError::IoError {
|
|
213
236
|
source: err,
|
|
214
237
|
path: path.to_string(),
|
|
@@ -378,7 +401,7 @@ mod tests {
|
|
|
378
401
|
fn test_pyproject_toml_root_level_config() {
|
|
379
402
|
let temp_dir = tempdir().unwrap();
|
|
380
403
|
let config_path = temp_dir.path().join("pyproject.toml");
|
|
381
|
-
|
|
404
|
+
|
|
382
405
|
// Create a test pyproject.toml with root-level configuration
|
|
383
406
|
let content = r#"
|
|
384
407
|
[tool.rumdl]
|
|
@@ -389,43 +412,46 @@ include = ["docs/*.md"]
|
|
|
389
412
|
exclude = ["node_modules"]
|
|
390
413
|
respect-gitignore = true
|
|
391
414
|
"#;
|
|
392
|
-
|
|
415
|
+
|
|
393
416
|
fs::write(&config_path, content).unwrap();
|
|
394
|
-
|
|
417
|
+
|
|
395
418
|
// Load the config
|
|
396
419
|
let config = load_config_from_pyproject(config_path.to_str().unwrap()).unwrap();
|
|
397
|
-
|
|
420
|
+
|
|
398
421
|
// Check global settings
|
|
399
422
|
assert_eq!(config.global.disable, vec!["MD033".to_string()]);
|
|
400
|
-
assert_eq!(
|
|
423
|
+
assert_eq!(
|
|
424
|
+
config.global.enable,
|
|
425
|
+
vec!["MD001".to_string(), "MD004".to_string()]
|
|
426
|
+
);
|
|
401
427
|
assert_eq!(config.global.include, vec!["docs/*.md".to_string()]);
|
|
402
428
|
assert_eq!(config.global.exclude, vec!["node_modules".to_string()]);
|
|
403
|
-
|
|
404
|
-
|
|
429
|
+
assert!(config.global.respect_gitignore);
|
|
430
|
+
|
|
405
431
|
// Check line_length was correctly added to MD013
|
|
406
432
|
let line_length = get_rule_config_value::<usize>(&config, "MD013", "line_length");
|
|
407
433
|
assert_eq!(line_length, Some(120));
|
|
408
434
|
}
|
|
409
|
-
|
|
435
|
+
|
|
410
436
|
#[test]
|
|
411
437
|
fn test_pyproject_toml_snake_case_and_kebab_case() {
|
|
412
438
|
let temp_dir = tempdir().unwrap();
|
|
413
439
|
let config_path = temp_dir.path().join("pyproject.toml");
|
|
414
|
-
|
|
440
|
+
|
|
415
441
|
// Test with both kebab-case and snake_case variants
|
|
416
442
|
let content = r#"
|
|
417
443
|
[tool.rumdl]
|
|
418
444
|
line_length = 150
|
|
419
445
|
respect_gitignore = true
|
|
420
446
|
"#;
|
|
421
|
-
|
|
447
|
+
|
|
422
448
|
fs::write(&config_path, content).unwrap();
|
|
423
|
-
|
|
449
|
+
|
|
424
450
|
// Load the config
|
|
425
451
|
let config = load_config_from_pyproject(config_path.to_str().unwrap()).unwrap();
|
|
426
|
-
|
|
452
|
+
|
|
427
453
|
// Check settings were correctly loaded
|
|
428
|
-
|
|
454
|
+
assert!(config.global.respect_gitignore);
|
|
429
455
|
let line_length = get_rule_config_value::<usize>(&config, "MD013", "line_length");
|
|
430
456
|
assert_eq!(line_length, Some(150));
|
|
431
457
|
}
|