예제 #1
0
        /// <summary>
        /// 通过当前对象执行语法所得到的字符串。
        /// </summary>
        /// <param name="element">属性实例对象。</param>
        /// <param name="executor">解析器接口。</param>
        /// <returns>返回脚本代码</returns>
        public string Begin(TemplateSyntaxElement element, ITemplateExecutor executor)
        {
            if (element.IsSelfClosed || !element.Any())
            {
                return("if($model.count>0){$model.children.forEach(function(item){appender(item);});}");
            }
            var sb = new StringBuilder();

            sb.Append("function children($model){");
            foreach (var node in element)
            {
                sb.Append(node.ToJsString(executor));
            }
            sb.Append("};");
            sb.Append("if($model.count>0){$model.children.forEach(function(item){children(item);});}");
            return(sb.ToString());
        }
예제 #2
0
        /// <summary>
        /// 通过当前对象执行语法所得到的字符串。
        /// </summary>
        /// <param name="element">属性实例对象。</param>
        /// <param name="executor">解析器接口。</param>
        /// <param name="instance">当前实例对象。</param>
        /// <param name="func">获取当前对象属性值的方法。</param>
        /// <returns>返回脚本代码</returns>
        public string Begin(TemplateSyntaxElement element, ITemplateExecutor executor, object instance, Func <object, string, object> func)
        {
            var sb = new StringBuilder();

            if (instance is IParentable models)
            {
                if (element.IsSelfClosed || !element.Any())
                {
                    foreach (var model in models.Children)
                    {
                        sb.Append(element.Document.ToHtmlString(executor, model, func));
                    }
                }
                else
                {
                    foreach (var model in models.Children)
                    {
                        sb.Append(element.ToHtmlString(executor, model, func));
                    }
                }
            }
            return(sb.ToString());
        }