private static void PostMergeBlockquotes(MarkdownElementBase[] innerBlocks, MarkdownDocument root) { BlockquoteElement currentPreceBlockquote = null; for (int i = 0; i < innerBlocks.Length; i++) { MarkdownElementBase innerBlock = innerBlocks[i]; if (innerBlock.Type == ElementType.Blockquote) { BlockquoteElement currentBlockquote = innerBlock as BlockquoteElement; if (currentPreceBlockquote == null || currentPreceBlockquote.QuoteLevel < currentBlockquote.QuoteLevel) { currentPreceBlockquote = currentBlockquote; root.AddChildElement(currentPreceBlockquote); } else { currentPreceBlockquote.AddChildrenElements(currentBlockquote.Children); } } else { if (innerBlock.Type != ElementType.BlankLine) { root.AddChildElement(innerBlock); } else { currentPreceBlockquote = null; } } } }
public void Blockquote(_GithubMarkdown_Memo _memo, int _index, _GithubMarkdown_Args _args) { _GithubMarkdown_Item symbol = null; _GithubMarkdown_Item inner = null; _GithubMarkdown_Item children = null; // AND 1 int _start_i1 = _index; // AND 2 int _start_i2 = _index; // CALLORVAR BlockquoteSymbol _GithubMarkdown_Item _r4; _r4 = _MemoCall(_memo, "BlockquoteSymbol", _index, BlockquoteSymbol, null); if (_r4 != null) { _index = _r4.NextIndex; } // BIND symbol symbol = _memo.Results.Peek(); // AND shortcut if (_memo.Results.Peek() == null) { _memo.Results.Push(null); goto label2; } // STAR 6 int _start_i6 = _index; var _res6 = Enumerable.Empty <MarkdownElementBase>(); label6: // OR 7 int _start_i7 = _index; // CALLORVAR Head _GithubMarkdown_Item _r8; _r8 = _MemoCall(_memo, "Head", _index, Head, null); if (_r8 != null) { _index = _r8.NextIndex; } // OR shortcut if (_memo.Results.Peek() == null) { _memo.Results.Pop(); _index = _start_i7; } else { goto label7; } // CALLORVAR InlineText _GithubMarkdown_Item _r9; _r9 = _MemoCall(_memo, "InlineText", _index, InlineText, null); if (_r9 != null) { _index = _r9.NextIndex; } label7: // OR int _dummy_i7 = _index; // no-op for label // STAR 6 var _r6 = _memo.Results.Pop(); if (_r6 != null) { _res6 = _res6.Concat(_r6.Results); goto label6; } else { _memo.Results.Push(new _GithubMarkdown_Item(_start_i6, _index, _memo.InputEnumerable, _res6.Where(_NON_NULL), true)); } // BIND inner inner = _memo.Results.Peek(); label2: // AND var _r2_2 = _memo.Results.Pop(); var _r2_1 = _memo.Results.Pop(); if (_r2_1 != null && _r2_2 != null) { _memo.Results.Push(new _GithubMarkdown_Item(_start_i2, _index, _memo.InputEnumerable, _r2_1.Results.Concat(_r2_2.Results).Where(_NON_NULL), true)); } else { _memo.Results.Push(null); _index = _start_i2; } // AND shortcut if (_memo.Results.Peek() == null) { _memo.Results.Push(null); goto label1; } // STAR 11 int _start_i11 = _index; var _res11 = Enumerable.Empty <MarkdownElementBase>(); label11: // AND 12 int _start_i12 = _index; // CALLORVAR LineBreak _GithubMarkdown_Item _r14; _r14 = _MemoCall(_memo, "LineBreak", _index, LineBreak, null); if (_r14 != null) { _index = _r14.NextIndex; } // QUES if (_memo.Results.Peek() == null) { _memo.Results.Pop(); _memo.Results.Push(new _GithubMarkdown_Item(_index, _memo.InputEnumerable)); } // AND shortcut if (_memo.Results.Peek() == null) { _memo.Results.Push(null); goto label12; } // CALLORVAR InlineText _GithubMarkdown_Item _r15; _r15 = _MemoCall(_memo, "InlineText", _index, InlineText, null); if (_r15 != null) { _index = _r15.NextIndex; } label12: // AND var _r12_2 = _memo.Results.Pop(); var _r12_1 = _memo.Results.Pop(); if (_r12_1 != null && _r12_2 != null) { _memo.Results.Push(new _GithubMarkdown_Item(_start_i12, _index, _memo.InputEnumerable, _r12_1.Results.Concat(_r12_2.Results).Where(_NON_NULL), true)); } else { _memo.Results.Push(null); _index = _start_i12; } // STAR 11 var _r11 = _memo.Results.Pop(); if (_r11 != null) { _res11 = _res11.Concat(_r11.Results); goto label11; } else { _memo.Results.Push(new _GithubMarkdown_Item(_start_i11, _index, _memo.InputEnumerable, _res11.Where(_NON_NULL), true)); } // BIND children children = _memo.Results.Peek(); label1: // AND var _r1_2 = _memo.Results.Pop(); var _r1_1 = _memo.Results.Pop(); if (_r1_1 != null && _r1_2 != null) { _memo.Results.Push(new _GithubMarkdown_Item(_start_i1, _index, _memo.InputEnumerable, _r1_1.Results.Concat(_r1_2.Results).Where(_NON_NULL), true)); } else { _memo.Results.Push(null); _index = _start_i1; } // ACT var _r0 = _memo.Results.Peek(); if (_r0 != null) { _memo.Results.Pop(); _memo.Results.Push(new _GithubMarkdown_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { BlockquoteElement block = new BlockquoteElement(); block.QuoteLevel = symbol.Results.First().TextContent.Length; block.AddChildrenElements(inner.Results.AsEnumerable <MarkdownElementBase>()); block.AddChildrenElements(children.Results.AsEnumerable <MarkdownElementBase>()); return(block); }, _r0), true)); } }