예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
		/// <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;
		}