The following syntaxes work as expected (they create one spoiler tag).
The general rule here is that we allow 0-3 whitespaces before the starting colon, 3 or more colons, any number of optional whitespaces, and the "spoiler" keyword with any non-whitespace character after it.
Normal
spoiler
Hello!
spoiler
Hello!
No whitespace
spoiler with no whitespace
Hello!
spoiler with no whitespace
Hello!
Leading whitespace
title
Hello!
title
Hello!
Any number of whitespaces between : and "spoiler"
::: spoiler title
Hello!
:::
::: spoiler title Hello! :::
Any number of whitespaces between "spoiler" and the first non-whitespace character
title
Hello!
title
Hello!
Three or more colons
:::::::::::::::::::::::: spoiler title
Hello!
::::::::::::::::::::::::
:::::::::::::::::::::::: spoiler title Hello! ::::::::::::::::::::::::
Here's where we run into some weird edge cases:
If there is an ending :::
, Lemmy will consume the first instance of :::
only if :::
is on a new line with no other text (and up to 3 white spaces)
a
text (no whitespaces before )
:::
a
text (no whitespaces before
a
text (1 whitespaces before )
:::
a
text (1 whitespaces before
a
text (2 whitespaces before )
:::
a
text (2 whitespaces before
a
text (3 whitespaces before )
:::
a
text (3 whitespaces before
a
text (4 whitespaces before )
:::
a
text (4 whitespaces before
Lemmy doesn't need an :::
ending in order to display the spoiler. If :::
is not present, it will assume the spoiler continues until the end:
a
spoiler a
text
Lemmy will create nested spoilers if it cannot find :::
before another ::: spoiler
:
a
text
spoiler b
more text
a
text
The following examples will show the :::
within the spoiler, and will make the spoilers nested
a
text (4 whitespaces before )
:::
a
text (4 whitespaces before
a
text
a
text
a
text
a
text
a
text
a
a
text
a
Testing mention to @darklightxi@lemmy.world