Exemplo n.º 1
0
        /// <summary>
        /// 添加标签属性时的触发函数.用于设置自身的某些属性值
        /// </summary>
        /// <param name="name"></param>
        /// <param name="item"></param>
        protected override void OnAddingAttribute(string name, Attribute item)
        {
            switch (name)
            {
            case "args":
                IExpression exp = item.Value;
                if (this.OwnerDocument.DocumentConfig.CompatibleMode)
                {
                    if (!(exp is VariableExpression))
                    {
                        exp = ParserHelper.CreateVariableExpression(this.OwnerTemplate, item.Text);
                    }
                }
                this.ExpArgs.Add(exp);
                break;

            case "var":
                this.Variable = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text);
                break;

            case "output":
                this.Output = TypeConvert.ToBool(item.Text);
                break;
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 添加标签属性时的触发函数.用于设置自身的某些属性值
 /// </summary>
 /// <param name="name"></param>
 /// <param name="item"></param>
 protected override void OnAddingAttribute(string name, Attribute item)
 {
     switch (name)
     {
     case "index":
         this.Index = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text);
         break;
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// 添加标签属性时的触发函数.用于设置自身的某些属性值
        /// </summary>
        /// <param name="name"></param>
        /// <param name="item"></param>
        protected override void OnAddingAttribute(string name, Attribute item)
        {
            switch (name)
            {
            case "var":
                this.Variable = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text);
                break;

            case "output":
                this.Output = TypeConvert.ToBool(item.Text);
                break;
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 开始解析标签数据
        /// </summary>
        /// <param name="ownerTemplate">宿主模板</param>
        /// <param name="container">标签的容器</param>
        /// <param name="tagStack">标签堆栈</param>
        /// <param name="text"></param>
        /// <param name="match"></param>
        /// <param name="isClosedTag">是否闭合标签</param>
        /// <returns>如果需要继续处理EndTag则返回true.否则请返回false</returns>
        internal override bool ProcessBeginTag(Template ownerTemplate, Tag container, Stack <Tag> tagStack, string text, ref Match match, bool isClosedTag)
        {
            if (this.Variable == null && !this.Output)
            {
                this.Variable = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, "c");
            }
            //throw new ParserException(string.Format("{0}标签中如果未定义Output属性为true则必须定义var属性", this.TagName));
            //if (this.Type != ServerDataType.Random
            //    && this.Type != ServerDataType.Time
            //    && this.Type != ServerDataType.Request
            //    && this.Type != ServerDataType.Environment
            //    && this.Item == null) throw new ParserException(string.Format("当{0}标签type=\"{1}\"时必须设置item属性值", this.TagName, this.Type));

            return(base.ProcessBeginTag(ownerTemplate, container, tagStack, text, ref match, isClosedTag));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 添加标签属性时的触发函数.用于设置自身的某些属性值
        /// </summary>
        /// <param name="name"></param>
        /// <param name="item"></param>
        protected override void OnAddingAttribute(string name, Attribute item)
        {
            switch (name)
            {
            case "from":
                VariableExpression ve = item.Value as VariableExpression;
                if (ve == null && this.OwnerDocument.DocumentConfig.CompatibleMode)
                {
                    ve = ParserHelper.CreateVariableExpression(this.OwnerTemplate, item.Text);
                }
                this.From = ve;
                break;

            case "item":
                this.Item = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text);
                break;

            case "index":
                this.Index = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text);
                break;
            }
        }