commonmark-java icon indicating copy to clipboard operation
commonmark-java copied to clipboard

GFM admonition blocks (alerts)

Open bric3 opened this issue 1 year ago • 9 comments

Is your feature request related to a problem? Please describe.

Github now support admonition blocks

> [!NOTE]  
> Highlights information that users should take into account, even when skimming.

> [!TIP]
> Optional information to help a user be more successful.

> [!IMPORTANT]  
> Crucial information necessary for users to succeed.

> [!WARNING]  
> Critical content demanding immediate user attention due to potential risks.

> [!CAUTION]
> Negative potential consequences of an action.

[!NOTE]
Highlights information that users should take into account, even when skimming.

[!TIP] Optional information to help a user be more successful.

[!IMPORTANT]
Crucial information necessary for users to succeed.

[!WARNING]
Critical content demanding immediate user attention due to potential risks.

[!CAUTION] Negative potential consequences of an action.

Describe the solution you'd like

Ideally adding a new gfm extension to common-mark makes sense, to support this admonition syntax.

Describe alternatives you've considered

No alternative.

Additional context

Source [1], [2]

bric3 avatar May 03 '24 08:05 bric3

Hey, thanks for raising this! Yeah, this would be useful. It's interesting that it uses link syntax, and that links take precedence, e.g. in this:

> [!NOTE]  
> Highlights information that users should take into account, even when skimming.

[!NOTE]: https://example.org

It's actually a link because of the definition.

I'm currently working on support for footnotes, see https://github.com/commonmark/commonmark-java/issues/273, which needed some more flexibility around link parsing and it has a new API to customize link processing. I think after that is done, admonition parsing should be pretty straightforward.

robinst avatar Jul 01 '24 13:07 robinst

I don't know how the internal parsing is working, but the context here seems relevant i.e. when parsing the admonition header, we need to know if it's within a block quote.

bric3 avatar Jul 01 '24 14:07 bric3

any updates on this?

harunagic avatar Sep 26 '24 20:09 harunagic

No updates yet. Happy to prioritize this if someone wants to sponsor the work on this.

Some notes from playing around with it:

This is an admonition block, even with the two empty leading lines inside the block quote (not sure how that's done, is there a special check in block quote parsing, or is the marker detected only later in inline parsing, or as a post-processing step?):

> 
> 
> [!NOTE]
> Highlights information that users should take into account, even when skimming.

This is not an admonition block though (trailing spaces after the marker are accepted though):

> [!NOTE] Highlights information that users should take into account, even when skimming.

robinst avatar Oct 26 '24 08:10 robinst

Found this repo that might help.

ITGungnir avatar Aug 28 '25 08:08 ITGungnir

Found this repo that might help.

This repo does not have a licence. It defaults to reserving all rights. Cannot simply copy code to this repo, or in theory, we cannot use it.

AnzhiZhang avatar Aug 28 '25 09:08 AnzhiZhang

This repo does not have a licence. It defaults to reserving all rights. Cannot simply copy code to this repo, or in theory, we cannot use it.

Got it, thanks for the hint.

ITGungnir avatar Aug 29 '25 01:08 ITGungnir

I filed https://github.com/SarahIsWeird/commonmark-ext-alerts/issues/1

JakeWharton avatar Aug 29 '25 02:08 JakeWharton

Thanks @JakeWharton. I added a comment to the issue suggesting we merge it into this repo, I think that would be an even better outcome!

robinst avatar Sep 27 '25 05:09 robinst