in src/Elastic.Markdown/Myst/Directives/DirectiveBlockParser.cs [139:170]
public override BlockState TryOpen(BlockProcessor processor)
{
if (processor.Context is not ParserContext)
throw new Exception("Expected parser context to be of type ParserContext");
// We expect no indentation for a fenced code block.
if (processor.IsCodeIndent)
return BlockState.None;
var line = processor.Line;
foreach (var code in _codeBlocks)
{
if (line.IndexOf($"{{{code}}}") > 0)
return BlockState.None;
}
if (line.IndexOf("{") <= -1)
return BlockState.None;
if (line.IndexOf("}") == -1)
return BlockState.None;
var span = line.AsSpan();
var lastIndent = Math.Max(span.LastIndexOf("`"), span.LastIndexOf(":"));
var startApplies = span.IndexOf("{applies_to}");
var startOpen = span.IndexOf("{");
if (startOpen > lastIndent + 1 || startApplies != -1)
return BlockState.None;
return base.TryOpen(processor);
}