Ejemplo n.º 1
0
        public override BlockState TryOpen(BlockProcessor processor)
        {
            var result = TryContinue(processor, null);

            if (result == BlockState.Continue)
            {
                // Save the column where we need to go back
                var column = processor.Column;
                var sourceStartPosition = processor.Start;

                // Unwind all indents all spaces before in order to calculate correct span
                processor.UnwindAllIndents();

                var codeBlock = new CodeBlock(this)
                {
                    Column      = processor.Column,
                    Span        = new SourceSpan(processor.Start, processor.Line.End),
                    LinesBefore = processor.UseLinesBefore(),
                    NewLine     = processor.Line.NewLine,
                };
                var codeBlockLine = new CodeBlockLine
                {
                    TriviaBefore = processor.UseTrivia(sourceStartPosition - 1)
                };
                codeBlock.CodeBlockLines.Add(codeBlockLine);
                processor.NewBlocks.Push(codeBlock);

                // Go back to the correct column
                processor.GoToColumn(column);
            }
            return(result);
        }
Ejemplo n.º 2
0
        public override BlockState TryOpen(BlockProcessor processor)
        {
            var result = TryContinue(processor, null);

            if (result == BlockState.Continue)
            {
                // Save the column where we need to go back
                var column = processor.Column;

                // Unwind all indents all spaces before in order to calculate correct span
                processor.UnwindAllIndents();

                processor.NewBlocks.Push(new CodeBlock(this)
                {
                    Column = processor.Column,
                    Span   = new SourceSpan(processor.Start, processor.Line.End)
                });

                // Go back to the correct column
                processor.GoToColumn(column);
            }
            return(result);
        }