コード例 #1
0
        public override void VisitSpan(Span span)
        {
            base.VisitSpan(span);
            if (span.Hidden)
            {
                WriteBlock(CurrentBlock);
            }
            else
            {
                CurrentBlock.VisitSpan(span);
                if (!TryVisitSpecialSpanCore(span))
                {
                    switch (span.Kind)
                    {
                    case SpanKind.Code:
                        CurrentBlock.Writer.WriteSnippet(span.Content);
                        if (CurrentBlock.BlockType == BlockType.Functions)
                        {
                            // Write the block immediately
                            WriteBlock(CurrentBlock);
                        }
                        else if (CurrentBlock.BlockType == BlockType.Statement &&
                                 CurrentBlock.VisitedSpans.Count == 2 &&
                                 CurrentBlock.VisitedSpans[0].Kind == SpanKind.Transition)
                        {
                            CurrentBlock.GeneratedColumnOffset = -1;
                        }
                        return;

                    case SpanKind.Markup:
                        if (!String.IsNullOrEmpty(span.Content))
                        {
                            CurrentBlock.Writer.WriteStartMethodInvoke(CurrentWriteLiteralMethod);
                            if (InNestedWriterBlock)
                            {
                                CurrentBlock.Writer.WriteIdentifier(CurrentWriterName);
                                CurrentBlock.Writer.WriteParameterSeparator();
                            }
                            CurrentBlock.Writer.WriteStringLiteral(span.Content);
                            CurrentBlock.Writer.WriteEndMethodInvoke();
                            CurrentBlock.Writer.WriteEndStatement();
                            WriteBlock(CurrentBlock);
                        }
                        return;
                    }
                }
            }
        }