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 spoiler
Hello!
:::
spoiler

Hello!


No whitespace

:::spoiler spoiler with no whitespace
Hello!
:::

spoiler with no whitespace

Hello!


Leading whitespace

   ::: spoiler title
Hello!
:::

title

Hello!


Any number of whitespaces between : and “spoiler”

:::              spoiler title
Hello!
:::

title

Hello!


Any number of whitespaces between “spoiler” and the first non-whitespace character

::: spoiler                 title
Hello!
:::

title

Hello!


Three or more colons

::::::::::::::::::::::::              spoiler title
Hello!
::::::::::::::::::::::::

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)

::: spoiler a
text (no whitespaces before :::)
:::
a

text (no whitespaces before :::)


::: spoiler a
text (1 whitespaces before :::)
 :::
a

text (1 whitespaces before :::)


::: spoiler a
text (2 whitespaces before :::)
  :::
a

text (2 whitespaces before :::)


::: spoiler a
text (3 whitespaces before :::)
   :::
a

text (3 whitespaces before :::)


::: spoiler 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:

::: spoiler a
::: spoiler a
text


Lemmy will create nested spoilers if it cannot find ::: before another ::: spoiler:

::: spoiler a
text
::: spoiler b
more text
a

text

b

more text



The following examples will show the ::: within the spoiler, and will make the spoilers nested

::: spoiler a
text (4 whitespaces before :::)
    :::
a

text (4 whitespaces before :::) :::


::: spoiler a
text:::
a

text:::


::: spoiler a
text :::
a

text :::


::: spoiler a
text
a:::
a

text a:::