public override BlockState TryContinue(BlockProcessor processor, Block block) { var slice = processor.Line; if (processor.IsBlankLine) { return(BlockState.Continue); } ExtensionsHelper.SkipSpaces(ref slice); if (!ExtensionsHelper.MatchStart(ref slice, ":::")) { ExtensionsHelper.ResetLineIndent(processor); return(BlockState.Continue); } ExtensionsHelper.SkipSpaces(ref slice); var extensionName = ((TripleColonBlock)block).Extension.Name; if (!ExtensionsHelper.MatchStart(ref slice, extensionName) || !ExtensionsHelper.MatchStart(ref slice, "-end")) { ExtensionsHelper.ResetLineIndent(processor); return(BlockState.Continue); } var c = ExtensionsHelper.SkipSpaces(ref slice); var endingTripleColons = ((TripleColonBlock)block).EndingTripleColons; if (endingTripleColons && !ExtensionsHelper.MatchStart(ref slice, ":::")) { _context.LogWarning( $"invalid-{extensionName}", $"Invalid {extensionName} on line {block.Line}. \"{slice.Text}\" is invalid. Missing ending \":::{extensionName}-end:::\"", block); return(BlockState.Continue); } if (!c.IsZero() && !endingTripleColons) { _context.LogWarning( $"invalid-{extensionName}", $"Invalid {extensionName} on line {block.Line}. \"{slice.Text}\" is invalid. Invalid character after \"::: {extensionName}-end\": \"{c}\"", block); } block.UpdateSpanEnd(slice.End); block.IsOpen = false; (block as TripleColonBlock).Closed = true; return(BlockState.BreakDiscard); }
public override BlockState TryContinue(BlockProcessor processor, Block block) { if (processor.IsBlankLine) { return(BlockState.Continue); } var slice = processor.Line; var monikerRange = (MonikerRangeBlock)block; ExtensionsHelper.SkipSpaces(ref slice); if (!ExtensionsHelper.MatchStart(ref slice, new string(':', monikerRange.ColonCount))) { ExtensionsHelper.ResetLineIndent(processor); return(BlockState.Continue); } ExtensionsHelper.SkipSpaces(ref slice); if (!ExtensionsHelper.MatchStart(ref slice, "moniker-end", false)) { ExtensionsHelper.ResetLineIndent(processor); return(BlockState.Continue); } var c = ExtensionsHelper.SkipSpaces(ref slice); if (!c.IsZero()) { _context.LogWarning("invalid-moniker-range", $"MonikerRange have some invalid chars in the ending."); } block.UpdateSpanEnd(slice.End); monikerRange.Closed = true; return(BlockState.BreakDiscard); }