Example #1
0
 public static IEnumerable <ResolvedTreeNode> GetDescendants(this ResolvedPropertyTemplate node)
 {
     foreach (var child in node.Content.SelectMany(n => n.GetDescendants()))
     {
         yield return(child);
     }
 }
        public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate)
        {
            var original = requiredResources;

            base.VisitPropertyTemplate(propertyTemplate);
            if (original != requiredResources)
            {
                propertyTemplate.Content.AddRange(
                    requiredResources.Except(original).Select(r => CreateRequiredResourceControl(r, propertyTemplate.DothtmlNode, propertyTemplate.Content.First().DataContextTypeStack)));
                requiredResources = original;
            }
        }
Example #3
0
        public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate)
        {
            var parentName = controlName;
            var methodName = DefaultViewCompilerCodeEmitter.BuildTemplateFunctionName + $"_{propertyTemplate.Property.DeclaringType.Name}_{propertyTemplate.Property.Name}_{currentTemplateIndex++}";

            emitter.PushNewMethod(methodName, typeof(void), emitter.EmitControlBuilderParameters().Concat(new [] { emitter.EmitParameter("templateContainer", typeof(DotvvmControl)) }).ToArray());
            // build the statements
            controlName = "templateContainer";

            base.VisitPropertyTemplate(propertyTemplate);

            emitter.PopMethod();
            controlName = parentName;

            var templateName = CreateTemplate(methodName);

            SetProperty(controlName, propertyTemplate.Property, SyntaxFactory.IdentifierName(templateName));
        }
        public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate)
        {
            var parentName = controlName;
            var methodName = DefaultViewCompilerCodeEmitter.BuildTemplateFunctionName + currentTemplateIndex;

            currentTemplateIndex++;
            emitter.PushNewMethod(methodName);
            // build the statements
            controlName = emitter.EmitCreateObject(typeof(PlaceHolder));

            base.VisitPropertyTemplate(propertyTemplate);

            emitter.EmitReturnClause(controlName);
            emitter.PopMethod();
            controlName = parentName;

            var templateName = CreateTemplate(methodName);

            SetProperty(controlName, propertyTemplate.Property, SyntaxFactory.IdentifierName(templateName));
        }
 public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate)
 {
     Visit(propertyTemplate, propertyTemplate.Content, base.VisitPropertyTemplate);
 }
Example #6
0
 public static IEnumerable <ResolvedControl> GetDescendantControls <T>(this ResolvedPropertyTemplate node)
 {
     return(GetDescendants(node).OfType <ResolvedControl>().Where(c => c.Metadata.Type == typeof(T)));
 }
 public virtual void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate)
 {
     DefaultVisit(propertyTemplate);
 }