public void Reset() { _symbols = new List <ISymbol>(); EditHandler = SpanEditHandler.CreateDefault(s => Enumerable.Empty <ISymbol>()); CodeGenerator = SpanCodeGenerator.Null; Start = SourceLocation.Zero; }
public void Reset() { _symbols = new List<ISymbol>(); EditHandler = SpanEditHandler.CreateDefault(s => Enumerable.Empty<ISymbol>()); CodeGenerator = SpanCodeGenerator.Null; Start = SourceLocation.Zero; }
public SpanConstructor With(ISpanCodeGenerator generator) { Builder.CodeGenerator = generator; return this; }
public SpanConstructor With(ISpanCodeGenerator generator) { Builder.CodeGenerator = generator; return(this); }
public SpanConstructor As(ISpanCodeGenerator codeGenerator) { return(_self.With(codeGenerator)); }
public SpanConstructor As(ISpanCodeGenerator codeGenerator) { return _self.With(codeGenerator); }
private static Block RebuildCodeGenerators(Block block) { var builder = new BlockBuilder(block); var isDynamic = builder.CodeGenerator is DynamicAttributeBlockCodeGenerator; // We don't want any attribute specific logic here, null out the block code generator. if (isDynamic || builder.CodeGenerator is AttributeBlockCodeGenerator) { builder.CodeGenerator = BlockCodeGenerator.Null; } for (var i = 0; i < builder.Children.Count; i++) { var child = builder.Children[i]; if (child.IsBlock) { // The child is a block, recurse down into the block to rebuild its children builder.Children[i] = RebuildCodeGenerators((Block)child); } else { var childSpan = (Span)child; ISpanCodeGenerator newCodeGenerator = null; var literalGenerator = childSpan.CodeGenerator as LiteralAttributeCodeGenerator; if (literalGenerator != null) { if (literalGenerator.ValueGenerator == null || literalGenerator.ValueGenerator.Value == null) { newCodeGenerator = new MarkupCodeGenerator(); } else { newCodeGenerator = literalGenerator.ValueGenerator.Value; } } else if (isDynamic && childSpan.CodeGenerator == SpanCodeGenerator.Null) { // Usually the dynamic code generator handles rendering the null code generators underneath // it. This doesn't make sense in terms of tag helpers though, we need to change null code // generators to markup code generators. newCodeGenerator = new MarkupCodeGenerator(); } // If we have a new code generator we'll need to re-build the child if (newCodeGenerator != null) { var childSpanBuilder = new SpanBuilder(childSpan) { CodeGenerator = newCodeGenerator }; builder.Children[i] = childSpanBuilder.Build(); } } } return(builder.Build()); }