Exemple #1
0
 static ExpressionSyntax CreateCollectionArgument(CoreDescriptor.CollectionEntry entry)
 {
     return
         (entry.CamelCaseIdentifierName
          .MemberAccess(
              IdentifierName(Names.NodeList)));
 }
 static ExpressionSyntax CollectionArgument(CoreDescriptor.CollectionEntry entry)
 {
     return
         (entry.CamelCaseIdentifierName
          .MemberAccess(
              IdentifierName(Names.ToCoreArray))
          .InvokeWithArguments());
 }
        private IEnumerable <MethodDeclarationSyntax> GenerateConvenienceMutators(CoreDescriptor.CollectionEntry entry)
        {
            const string NodesParamName = "nodes";
            var          nodeType       = Descriptor.GetNodeTypeIdentifierName();
            var          entryNodeType  = entry.GetNodeTypeIdentifierName();

            yield return(CreateWithNodeList());

            yield return(CreateWithParams());

            yield return(CreateAddEnumerable());

            yield return(CreateAddParams());

            MethodDeclarationSyntax CreateWithNodeList()
            {
                return
                    (MethodDeclaration(nodeType, Names.WithPrefix + entry.Identifier)
                     .AddModifiers(SyntaxKind.PublicKeyword, SyntaxKind.StaticKeyword)
                     .AddParameterListParameters(
                         Parameter(ThisParameterToken)
                         .AddModifiers(SyntaxKind.ThisKeyword)
                         .WithType(Descriptor.GetNodeTypeIdentifierName()),
                         Parameter(entry.Identifier)
                         .WithType(
                             entry.GetNodeTypeIdentifierName().ToNodeListType()))
                     .AddBodyStatements(
                         ReturnStatement(
                             ThisParameterSyntax
                             .MemberAccess(
                                 IdentifierName(Names.UpdateWith))
                             .InvokeWithArguments(
                                 ThisParameterSyntax
                                 .MemberAccess(NodeGenerator.CorePropertyIdentifierName)
                                 .MemberAccess(
                                     IdentifierName(Names.WithPrefix + entry.Identifier))
                                 .InvokeWithArguments(
                                     entry.IdentifierName
                                     .MemberAccess(
                                         IdentifierName(Names.ToCoreArray))
                                     .InvokeWithArguments())))));
            }

            MethodDeclarationSyntax CreateWithParams()
            {
                return(CreateMutator(Names.WithPrefix, CreateParameters(), CreateNodesExpression()));

                IEnumerable <ParameterSyntax> CreateParameters()
                {
                    yield return
                        (Parameter(
                             Identifier(NodesParamName))
                         .AddModifiers(SyntaxKind.ParamsKeyword)
                         .WithType(
                             entryNodeType.ToArrayType()));
                }
Exemple #4
0
            static ParameterSyntax CreateNodeListParameter(CoreDescriptor.CollectionEntry entry)
            {
                var type = entry.GetNodeTypeIdentifierName().ToNodeListType();

                return
                    (Parameter(entry.CamelCaseIdentifier)
                     .WithType(type)
                     .WithDefault(
                         EqualsValueClause(
                             DefaultExpression(type))));
            }
 public static TypeSyntax ToListOfBuilderType(this CoreDescriptor.CollectionEntry entry)
 {
     return(entry.CollectionTypeParameter.ToListOfBuilderType());
 }
 public static IdentifierNameSyntax GetListNodeTypeIdentifierName(this CoreDescriptor.CollectionEntry entry)
 {
     return(IdentifierName(entry.CollectionTypeParameter.ToString().GetListNodeTypeNameCore()));
 }
Exemple #7
0
 static ParameterSyntax CreateListNodeParameter(CoreDescriptor.CollectionEntry entry)
 {
     return
         (Parameter(entry.CamelCaseIdentifier)
          .WithType(entry.GetListNodeTypeIdentifierName()));
 }