Skip to content

Add the possibility to config the Markdown parser to add heading id attributes and load CommonMark extensions - #723

Merged
giuscris merged 1 commit into
2.xfrom
feature/configurable-markdown-parser
Jul 6, 2025
Merged

Add the possibility to config the Markdown parser to add heading id attributes and load CommonMark extensions#723
giuscris merged 1 commit into
2.xfrom
feature/configurable-markdown-parser

Conversation

@giuscris

@giuscris giuscris commented Jul 6, 2025

Copy link
Copy Markdown
Member

No description provided.

@giuscris giuscris added this to the 2.0.0 milestone Jul 6, 2025
@giuscris giuscris self-assigned this Jul 6, 2025
@giuscris giuscris added the enhancement New feature or request label Jul 6, 2025
@giuscris
giuscris requested a review from Copilot July 6, 2025 19:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR enhances the Markdown parser by centralizing option handling, enabling automatic heading ID generation, and allowing extra CommonMark extensions to be loaded.

  • Introduce parseOptions() to extract parser configuration and extensions from input options
  • Add support for addHeadingIds via DefaultAttributesExtension and slugified IDs
  • Allow custom CommonMark extensions through a new commonmarkExtensions option

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
formwork/src/Parsers/Markdown.php Refactored parse() to use parseOptions(), load default attributes and user-specified extensions
formwork/src/Parsers/Extensions/CommonMark/FormworkExtension.php Removed obsolete allowHtml schema entry
formwork/fields/markdown.php Updated invocation sites to pass new options
formwork/config/views/methods.php Updated invocation sites to pass new options
formwork/config/system.yaml Added addHeadingIds and commonmarkExtensions defaults
Comments suppressed due to low confidence (3)

formwork/src/Parsers/Markdown.php:40

  • [nitpick] The variable name addedExtensions could be more descriptive (e.g., loadedExtensions) to clarify that it tracks which extensions have been registered.
        $addedExtensions = [];

formwork/src/Parsers/Markdown.php:70

  • The docblock for parseOptions() should list the recognized option keys (allowHtml, addHeadingIds, commonmarkExtensions) and their expected types to help future maintainers.
    private static function parseOptions(array $options): array

formwork/src/Parsers/Markdown.php:87

  • New behavior for addHeadingIds and slug generation is untested; please add unit tests to cover when this flag is enabled and verify generated IDs.
        if ($options['addHeadingIds']) {


if ($enabled) {
$extensions[] = $class;
$config = [...$config, ...$extensionConfig];

Copilot AI Jul 6, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flattening all extension config directly into the root config may inadvertently override unrelated settings; consider merging nested configurations under their own namespace or using deep merge.

Suggested change
$config = [...$config, ...$extensionConfig];
$config['extensions'] = [...($config['extensions'] ?? []), ...$extensionConfig];

Copilot uses AI. Check for mistakes.
@giuscris
giuscris merged commit bb67b30 into 2.x Jul 6, 2025
1 check passed
@giuscris
giuscris deleted the feature/configurable-markdown-parser branch July 6, 2025 19:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants