public static ContextDelegationPropertyAnalyzer?FromMethod(PhaseMethodSyntax method, PhaseGroupSyntax phaseGroup)
        {
            var dictionary = phaseGroup.Methods.ToDictionary(x => x.MethodName, x => x);
            var properties = new List <ContextPropertyAnalyzer>();

            var delegatedContext = method.ContextParameter;

            if (delegatedContext is null)
            {
                return(null);
            }

            var currentContextParameter = method.ContextParameter;

            while (!(currentContextParameter is null))
            {
                var methodName       = Naming.PhaseMethodNameFromContextType(currentContextParameter.TypeName.Name);
                var dependencyMethod = dictionary[methodName];

                properties.AddRange(ContextPropertyAnalyzer.FromMethod(dependencyMethod));

                currentContextParameter = dependencyMethod.ContextParameter;
            }

            return(new ContextDelegationPropertyAnalyzer(
                       delegatedContext.TypeName.Name,
                       delegatedContext.Name.ToUpperCamelCase(),
                       properties.ToArray()));
        }
Exemplo n.º 2
0
        public static IEnumerable <ParameterAnalyzer> FromMethod(PhaseMethodSyntax method)
        {
            var context = method.ContextParameter.AsEnumerable()
                          .Select(x => new ParameterAnalyzer(x.TypeName, x.Name));
            var additional = method.AdditionalParameters
                             .Select(parameter => new ParameterAnalyzer(parameter.TypeName, parameter.Name));

            return(context.Concat(additional));
        }
Exemplo n.º 3
0
 public static PhaseTraits FromPhaseMethod(PhaseMethodSyntax method)
 {
     return(new PhaseTraits(method.MethodName,
                            ParameterAnalyzer.FromMethod(method).ToArray(),
                            ResultTypeAnalyzer.FromSyntax(method.ResultType)));
 }
Exemplo n.º 4
0
 public static ContextParameterAnalyzer?FromMethod(PhaseMethodSyntax method)
 {
     return(method.ContextParameter is {} p
                         ? new ContextParameterAnalyzer(p.TypeName, p.Name)
                         : null);
 }
 public static IEnumerable <ContextPropertyAnalyzer> FromMethod(PhaseMethodSyntax method)
 {
     return(method.AdditionalParameters
            .Select(parameter => new ContextPropertyAnalyzer(parameter.TypeName, parameter.Name.ToUpperCamelCase())));
 }