private void HandleFreeWithIgnoredUnkownTagsNestedBody(ITagAttributeSetter tagReflection)
        {
            _helper.PushIgnoreUnkownTag(true);
            var attribute = new TemplateAttribute(ParseNested(_helper, _locator));

            tagReflection["Body"] = attribute;
            _helper.PopIgnoreUnkownTag();
        }
        private void AddAttributes(ITagAttributeSetter tagReflection, ITag tag)
        {
            while (!_helper.IsAhead(CLOSING_TOKENS))
            {
//                _helper.Read(TokenType.Seperator);
                _helper.Next();
                ReadWhiteSpace(_helper);
                if (_helper.IsAhead(CLOSING_TOKENS))
                {
                    return;
                }
                var keyToken = _helper.Read(TokenType.Regular);
                var key      = tagReflection.SupportNaturalLanguage?LanguageHelper.CamelCaseAttribute(keyToken.Contents): keyToken.Contents;
                _helper.Read(TagLibConstants.FIELD_ASSIGNMENT);
                var value    = _helper.Read(TokenType.Literal).Contents;
                var existing = tagReflection[key];
                if (!existing?.AllowOverWrite ?? false)
                {
                    throw TagException.PropertyAlReadySet(key).Decorate(keyToken.Context);
                }
                if (string.IsNullOrEmpty(value))
                {
                    tagReflection[key] = new ConstantAttribute("", tag)
                    {
                        AttributeName = key, Context = keyToken.Context
                    };
                    continue;
                }
                if (!value.Contains("${"))
                {
                    tagReflection[key] = new ConstantAttribute(value, tag)
                    {
                        AttributeName = key, Context = keyToken.Context, ResourceLocator = _locator
                    };
                    continue;
                }
                var offSet = _helper.Current.Context;
                var attr   = new TemplateAttribute(new InternalFormatter(new TagLibParserFactoryAdapter(this), _expressionLib, value, false, _locator, offSet).Parse())
                {
                    AttributeName = key
                };
                tagReflection[key] = attr;
            }
        }
 private void HandleFreeWithIgnoredUnkownTagsNestedBody(ITagAttributeSetter tagReflection)
 {
     _helper.PushIgnoreUnkownTag(true);
     var attribute = new TemplateAttribute(ParseNested(_helper, _locator));
     tagReflection["Body"] = attribute;
     _helper.PopIgnoreUnkownTag();
 }
 private void AddAttributes(ITagAttributeSetter tagReflection, ITag tag)
 {
     while (!_helper.IsAhead(TagLibConstants.CLOSE_TAG, TagLibConstants.CLOSE_SLASH))
     {
         _helper.Read(TokenType.Seperator);
         ReadWhiteSpace(_helper);
         if (_helper.IsAhead(TagLibConstants.CLOSE_SLASH, TagLibConstants.CLOSE_TAG))
         {
             return;
         }
         var keyToken = _helper.Read(TokenType.Regular);
         var key = tagReflection.SupportNaturalLanguage?LanguageHelper.CamelCaseAttribute(keyToken.Contents): keyToken.Contents;
         _helper.Read(TagLibConstants.FIELD_ASSIGNMENT);
         var value = _helper.Read(TokenType.Literal).Contents;
         if (tagReflection[key] != null && !tagReflection[key].AllowOverWrite)
         {
             throw TagException.PropertyAlReadySet(key).Decorate(keyToken.Context);
         }
         if (string.IsNullOrEmpty(value))
         {
             tagReflection[key] =new ConstantAttribute("", tag) {AttributeName = key,Context = keyToken.Context };
             continue;
         }
         var offSet = _helper.Current.Context;
         var attr=new TemplateAttribute(new InternalFormatter(new TagLibParserFactoryAdapter(this), _expressionLib, value, false, _locator, offSet).Parse()) { AttributeName = key };
         tagReflection[key] = attr;
     }
 }
 public void RenderShouldDelegateCallToHtmlHelperShouldUseAttributesAndProvideTagModel()
 {
     var attribute =
         new TemplateAttribute(new ParsedTemplate(null, new ExpressionPart(new ExpressionLib().Parse("name"))));
     var tag = Html.New<TestHtmlTag>(new List<IParameterValue>
                                         {
                                             new TestParameterValue {Name = "isChecked", TestValue = true},
                                             new ParameterValue {Name = "name", Attribute = attribute},
                                         }
         );
     Assert.That(tag.Method, Is.Not.Null);
     var model = new TagModel(new Hashtable());
     model.Model["name"] = "a";
     model.Page[Html.PAGE_MODEL_HTMLHELPER_INSTANCE] = GetHelper();
     string result = tag.Evaluate(model);
     Assert.That(result.Contains("name=\"a\""));
     Assert.That(result.Contains("checked=\"checked\""));
 }