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())); }
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)); }
public static PhaseTraits FromPhaseMethod(PhaseMethodSyntax method) { return(new PhaseTraits(method.MethodName, ParameterAnalyzer.FromMethod(method).ToArray(), ResultTypeAnalyzer.FromSyntax(method.ResultType))); }
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()))); }