public override BlockState TryOpen()

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);
	}