/// <summary> /// Replaces a <see cref="ProxyTableBlock"/> with a <see cref="ParagraphBlock"/>. /// </summary> /// <param name="blockProcessor">The <see cref="BlockProcessor"/> processing the <see cref="ProxyTableBlock"/> to undo.</param> /// <param name="proxyTableBlock">The <see cref="ProxyTableBlock"/> to undo.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="blockProcessor"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">Thrown if <paramref name="proxyTableBlock"/> is <c>null</c>.</exception> protected virtual void Undo(BlockProcessor blockProcessor, ProxyTableBlock proxyTableBlock) { if (blockProcessor == null) { throw new ArgumentNullException(nameof(blockProcessor)); } if (proxyTableBlock == null) { throw new ArgumentNullException(nameof(proxyTableBlock)); } // Discard proxyTableBlock ContainerBlock parent = proxyTableBlock.Parent; blockProcessor.Discard(proxyTableBlock); // Replace with paragraph block ParagraphBlockParser parser = blockProcessor.Parsers.FindExact <ParagraphBlockParser>(); var paragraphBlock = new ParagraphBlock(parser) { Lines = proxyTableBlock.Lines, }; parent.Add(paragraphBlock); blockProcessor.Open(paragraphBlock); }
public void Setup_Parsers_InsertsExtensionBlockParsers() { // Arrange Mock <BlockParser> dummyGlobalBlockParser = _mockRepository.Create <BlockParser>(); Mock <BlockParser> dummyNonGlobalBlockParser = _mockRepository.Create <BlockParser>(); dummyNonGlobalBlockParser.Object.OpeningCharacters = new char[] { 'a' }; // Arbitrary opening character, can't mock because OpeningCharacters isn't virtual var dummyMarkdownPipelineBuilder = new MarkdownPipelineBuilder(); Mock <BlockExtension <Block> > mockTestSubject = CreateMockBlockExtension(null, dummyGlobalBlockParser.Object, dummyNonGlobalBlockParser.Object); mockTestSubject.CallBase = true; mockTestSubject.Protected().Setup("SetupParsers", dummyMarkdownPipelineBuilder); // Act mockTestSubject.Object.Setup(dummyMarkdownPipelineBuilder); // Assert OrderedList <BlockParser> blockParsers = dummyMarkdownPipelineBuilder.BlockParsers; Assert.Contains(dummyNonGlobalBlockParser.Object, blockParsers); Assert.Contains(dummyGlobalBlockParser.Object, blockParsers); ParagraphBlockParser paragraphBlockParser = blockParsers.Find <ParagraphBlockParser>(); Assert.True(blockParsers.IndexOf(dummyGlobalBlockParser.Object) < blockParsers.IndexOf(paragraphBlockParser)); // Global parsers must be inserted before catch all ParagraphBlockParser _mockRepository.VerifyAll(); }