Block rule that matches Wikidot directional alignment containers.
Parsing strategy:
Verify the first token is BLOCK_OPEN at line start.
Delegate to parseAlignOpen() to identify direction and consume
the opening tag interior.
Require a NEWLINE immediately after the opening tag.
Recursively parse body blocks via parseBlocksUntil(), stopping
when isAlignClose() finds the matching closing tag.
Consume the closing tag and optional trailing newline.
Emit a container element with type: { align: direction }.
preservesPrecedingLineBreak is true because, unlike most block
constructs, an alignment block does not suppress a preceding \n from
becoming a <br /> in Wikidot's output.
Block rule that matches Wikidot directional alignment containers.
Parsing strategy:
parseAlignOpen()to identify direction and consume the opening tag interior.parseBlocksUntil(), stopping whenisAlignClose()finds the matching closing tag.type: { align: direction }.preservesPrecedingLineBreakistruebecause, unlike most block constructs, an alignment block does not suppress a preceding\nfrom becoming a<br />in Wikidot's output.