/// <inheritdoc /> public override void VisitBlock(Block block) { if (block.Descriptor != null) { ISyntaxTreeNodeRenderer <Block> renderer = block.Descriptor.Renderer; if (block.Descriptor.IsImplicit) { if (Service != null && !string.IsNullOrEmpty(block.Name) && Service.HasRegisteredHelper(block.Name)) { // Override the renderer to use the helper block renderer. renderer = _helperBlockRenderer; } } renderer.Render(block, Scope, _textWriter); } else if (block.Type == BlockType.Partial && Service != null) { VisitPartial(block); } else if (block.Type == BlockType.Expression && Service != null && Service.HasRegisteredHelper(block.Name)) { _helperBlockRenderer.Render(block, Scope, _textWriter); } else { base.VisitBlock(block); } }
/// <summary> /// Initializes a new instance of the <see cref="TagDescriptor"/> class. /// </summary> /// <param name="name">The name.</param> /// <param name="renderer">The renderer.</param> /// <param name="requiredArguments">The required number of arguments.</param> /// <param name="maxArguments">The maximum number of arguments.</param> /// <param name="allowMappedParamters">if set to <c>true</c> [allow mapped paramters].</param> /// <param name="hasChildContent">if set to <c>true</c> [has child content].</param> public TagDescriptor( string name, ISyntaxTreeNodeRenderer <Block> renderer, int requiredArguments, int?maxArguments = null, bool allowMappedParamters = false, bool hasChildContent = true) { if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentException("The tag name is expected"); } if (renderer == null) { throw new ArgumentNullException("renderer"); } if (requiredArguments < 0) { throw new ArgumentOutOfRangeException("requiredArguments"); } if (maxArguments.HasValue && maxArguments.Value < 0) { throw new ArgumentOutOfRangeException("maxArguments"); } Name = name; Renderer = renderer; RequiredArguments = requiredArguments; MaxArguments = maxArguments.GetValueOrDefault(int.MaxValue); AllowMappedParameters = allowMappedParamters; HasChildContent = hasChildContent; }
/// <summary> /// Initializes a new instance of the <see cref="TagDescriptor"/> class. /// </summary> /// <param name="name">The name.</param> /// <param name="renderer">The renderer.</param> /// <param name="requiredArguments">The required number of arguments.</param> /// <param name="maxArguments">The maximum number of arguments.</param> /// <param name="allowMappedParamters">if set to <c>true</c> [allow mapped paramters].</param> /// <param name="hasChildContent">if set to <c>true</c> [has child content].</param> public TagDescriptor( string name, ISyntaxTreeNodeRenderer<Block> renderer, int requiredArguments, int? maxArguments = null, bool allowMappedParamters = false, bool hasChildContent = true) { if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentException("The tag name is expected"); } if (renderer == null) { throw new ArgumentNullException("renderer"); } if (requiredArguments < 0) { throw new ArgumentOutOfRangeException("requiredArguments"); } if (maxArguments.HasValue && maxArguments.Value < 0) { throw new ArgumentOutOfRangeException("maxArguments"); } Name = name; Renderer = renderer; RequiredArguments = requiredArguments; MaxArguments = maxArguments.GetValueOrDefault(int.MaxValue); AllowMappedParameters = allowMappedParamters; HasChildContent = hasChildContent; }