Пример #1
0
        public override ExpressionSyntax AccessSyntax(CSPort sourcePort)
        {
            var argumentList = SyntaxFactory.ArgumentList();

            foreach (var par in (Symbol as IMethodSymbol).Parameters)
            {
                if (this.Ports.FirstOrDefault(x => x.Text == par.Name) is CSPort port)
                {
                    if (port.ConnectedPorts.Any())
                    {
                        argumentList = argumentList.AddArguments(SyntaxFactory.Argument((port.ConnectedPorts.First() as CSPort).AccessSyntax()));
                    }
                    else
                    {
                        argumentList = argumentList.AddArguments(SyntaxFactory.Argument(port.AccessSyntax()));
                    }
                }
            }

            var identifiers = this.Name.Split('.');

            var first = string.Join('.', identifiers.SkipLast(1));
            var last  = identifiers.Last();

            return(SyntaxFactory.InvocationExpression(
                       SyntaxFactory.MemberAccessExpression(
                           SyntaxKind.SimpleMemberAccessExpression,
                           SyntaxFactory.IdentifierName(first), SyntaxFactory.IdentifierName(last))).WithArgumentList(argumentList));
        }
Пример #2
0
        public override IEnumerable <StatementSyntax> GetStatementSyntax(CSPort sourcePort)
        {
            var args = SyntaxFactory.ArgumentList();

            //foreach (var par in (Symbol as IMethodSymbol).Parameters)
            //{
            //    if (Ports.FirstOrDefault(x => x.Text == par.Name) is CSPort port)
            //    {
            //        if (port.IsConnected)
            //        {
            //            args = args.AddArguments(SyntaxFactory.Argument(port.GetFirstConnectedPortMemberAccessExpressionSyntax()));
            //        }
            //        else
            //        {
            //            args = args.AddArguments(SyntaxFactory.Argument(port.GetValueLiteralExpression()));
            //        }
            //    }
            //}

            var invocation = SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName(Name));

            if (args.Arguments.Any())
            {
                invocation = invocation.WithArgumentList(args);
            }

            var syntaxNode = SyntaxFactory.ExpressionStatement(invocation);

            if (!string.IsNullOrWhiteSpace(Comment))
            {
                syntaxNode = syntaxNode.WithLeadingTrivia(GetCommentSyntaxTrivia());
            }

            return(new[] { syntaxNode });
        }
Пример #3
0
        public override IEnumerable <StatementSyntax> GetStatementSyntax(CSPort sourcePort)
        {
            var statements = new List <StatementSyntax>();
            var block      = SyntaxFactory.Block();
            var complete   = new List <StatementSyntax>();

            var bodyPort       = Ports.FirstOrDefault(x => x.HasProperty(BODY_PROPERTY));
            var collectionPort = Ports.FirstOrDefault(x => x.HasProperty(COLLECTION_PROPERTY)) as CSPort;
            var completePort   = Ports.FirstOrDefault(x => x.HasProperty(COMPLETE_PROPERTY)) as CSPort;

            foreach (var connectedPort in bodyPort.ConnectedPorts.Cast <CSPort>())
            {
                block = block.AddStatements(connectedPort.GetStatementSyntax().ToArray());
            }

            foreach (var connectedPort in completePort.ConnectedPorts.Cast <CSPort>())
            {
                complete.AddRange(connectedPort.GetStatementSyntax().ToArray());
            }

            var colRef = collectionPort.GetFirstConnectedPortMemberAccessExpressionSyntax();

            if (colRef == null)
            {
                return(new[] { SyntaxFactory.EmptyStatement() });
                //return new[] { SyntaxFactory.ForEachStatement(SyntaxFactory.ParseTypeName("var"), "item", SyntaxFactory.LiteralExpression(SyntaxKind.ExpressionStatement, SyntaxFactory.Literal("collection")), block) };
            }

            statements.Add(SyntaxFactory.ForEachStatement(SyntaxFactory.ParseTypeName("var"), "item", collectionPort.GetFirstConnectedPortMemberAccessExpressionSyntax(), block));

            statements.AddRange(complete);

            return(statements);
        }
Пример #4
0
        public override ExpressionSyntax AccessSyntax(CSPort sourcePort)
        {
            if (sourcePort.HasProperty(SET_VALUE_PROPERTY))
            {
                return(SyntaxFactory.IdentifierName("value"));
            }

            return(SyntaxFactory.IdentifierName(this.Name));
        }
Пример #5
0
        public override IEnumerable <StatementSyntax> GetStatementSyntax(CSPort sourcePort)
        {
            var returnPort = Ports.FirstOrDefault(x => x.HasProperty(RETURN_ITEM)) as CSPort;

            if (returnPort.ConnectedPorts.Any())
            {
                var result = SyntaxFactory.ReturnStatement(returnPort.GetFirstConnectedPortMemberAccessExpressionSyntax());

                return(new[] { result });
            }
            else
            {
                return(new[] { SyntaxFactory.ReturnStatement() });
            }
        }
Пример #6
0
        public override IEnumerable <StatementSyntax> GetStatementSyntax(CSPort sourcePort)
        {
            var list = new List <StatementSyntax>();

            var argumentList = SyntaxFactory.ArgumentList();

            //foreach (var par in Symbol.Parameters)
            //{
            //    if (this.Ports.FirstOrDefault(x => x.Text == par.Name) is CSPort port)
            //    {
            //        if (port.ConnectedPorts.Any())
            //        {
            //            argumentList = argumentList.AddArguments(SyntaxFactory.Argument((port.ConnectedPorts.First() as CSPort).GetMemberAccessExpressionSyntax()));
            //        }
            //        else
            //        {
            //            argumentList = argumentList.AddArguments(SyntaxFactory.Argument(port.GetValueLiteralExpression()));
            //        }
            //    }
            //}

            InvocationExpressionSyntax invocation = null;

            if (argumentList.Arguments.Any())
            {
                invocation = SyntaxFactory.InvocationExpression(
                    SyntaxFactory.MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        SyntaxFactory.IdentifierName(this.Name), SyntaxFactory.IdentifierName(Symbol.Name))).WithArgumentList(argumentList);
            }
            else
            {
                invocation = SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName(this.Name));
            }

            var syntaxNode = SyntaxFactory.ExpressionStatement(invocation);

            if (!string.IsNullOrWhiteSpace(this.Comment))
            {
                syntaxNode = syntaxNode.WithLeadingTrivia(SyntaxFactory.Comment($"// {this.Comment}"));
            }

            list.Add(syntaxNode);

            return(list);
        }
Пример #7
0
        public override ExpressionSyntax AccessSyntax(CSPort sourcePort)
        {
            if (!sourcePort.HasProperty(GET))
            {
                return(null);
            }

            var val1Port = Ports.FirstOrDefault(x => x.HasProperty(VALUE_1)) as CSPort;
            var val2Port = Ports.FirstOrDefault(x => x.HasProperty(VALUE_2)) as CSPort;

            var pAccess1 = val1Port.GetFirstConnectedPortMemberAccessExpressionSyntax();
            var pAccess2 = val2Port.GetFirstConnectedPortMemberAccessExpressionSyntax();

            if (pAccess1 == null || pAccess2 == null)
            {
                return(null);
            }

            return(SyntaxFactory.AssignmentExpression(SyntaxKind.CoalesceAssignmentExpression, val1Port.GetFirstConnectedPortMemberAccessExpressionSyntax(), val2Port.GetFirstConnectedPortMemberAccessExpressionSyntax()));
        }
Пример #8
0
        public override IEnumerable <StatementSyntax> GetStatementSyntax(CSPort sourcePort)
        {
            var result = new List <StatementSyntax>();

            var variablePort = Ports.FirstOrDefault(x => x.HasProperty(VARIABLE)) as CSPort;

            var valuePort = Ports.FirstOrDefault(x => x.HasProperty(VALUE)) as CSPort;

            if (variablePort.ConnectedPorts.Any())
            {
                if (valuePort.ConnectedPorts.Any())
                {
                    result.Add(SyntaxFactory.ExpressionStatement(SyntaxFactory.AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, variablePort.GetFirstConnectedPortMemberAccessExpressionSyntax(), valuePort.GetFirstConnectedPortMemberAccessExpressionSyntax())));
                }
                else
                {
                    result.Add(SyntaxFactory.ExpressionStatement(SyntaxFactory.AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, variablePort.GetFirstConnectedPortMemberAccessExpressionSyntax(), SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression))));
                }
            }

            return(result);
        }
Пример #9
0
        public override IEnumerable <StatementSyntax> GetStatementSyntax(CSPort sourcePort)
        {
            var list = new List <StatementSyntax>();

            var argumentList = SyntaxFactory.ArgumentList();

            foreach (var par in (Symbol as IMethodSymbol).Parameters)
            {
                if (this.Ports.FirstOrDefault(x => x.Text == par.Name) is CSPort port)
                {
                    if (port.ConnectedPorts.Any())
                    {
                        argumentList = argumentList.AddArguments(SyntaxFactory.Argument((port.ConnectedPorts.First() as CSPort).AccessSyntax()));
                    }
                    else
                    {
                        //TODO: get values properly, instead of passing everything as strings
                        argumentList = argumentList.AddArguments(SyntaxFactory.Argument(SyntaxFactory.LiteralExpression(SyntaxKind.DefaultLiteralExpression, SyntaxFactory.Literal(port.Value?.ToString()))));
                    }
                }
            }

            var invocation = SyntaxFactory.InvocationExpression(
                SyntaxFactory.MemberAccessExpression(
                    SyntaxKind.SimpleMemberAccessExpression,
                    SyntaxFactory.IdentifierName(Symbol.ContainingType.ToString()), SyntaxFactory.IdentifierName(Symbol.Name))).WithArgumentList(argumentList);

            var syntaxNode = SyntaxFactory.ExpressionStatement(invocation);

            if (!string.IsNullOrWhiteSpace(this.Comment))
            {
                syntaxNode = syntaxNode.WithLeadingTrivia(SyntaxFactory.Comment($"// {this.Comment}"));
            }

            list.Add(syntaxNode);

            return(list);
        }
Пример #10
0
 private string GetDataType(CSPort port)
 {
     return(port.Symbol?.Name.ToLower());
 }
Пример #11
0
        //public static Color VAR = Colors.Brown;

        public static GraphColor GetPortColor(CSPort port)
        {
            var type = port.SymbolName?.ToLower();

            switch (type)
            {
            case "byte":
            case "byte[]":
                return(GraphColor.Olive);

            case "sbyte":
            case "sbyte[]":
                return(GraphColor.YellowGreen);

            case "short":
            case "short[]":
                return(GraphColor.Brown);

            case "ushort":
            case "ushort[]":
                return(GraphColor.Chocolate);

            case "int":
            case "int[]":
                return(GraphColor.Blue);

            case "uint":
            case "uint[]":
                return(GraphColor.Maroon);

            case "long":
            case "long[]":
                return(GraphColor.Violet);

            case "ulong":
            case "ulong[]":
                return(GraphColor.Chartreuse);

            case "float":
            case "float[]":
                return(GraphColor.Purple);

            case "double":
            case "double[]":
                return(GraphColor.BlueViolet);

            case "decimal":
            case "decimal[]":
                return(GraphColor.Aqua);

            case "char":
            case "char[]":
                return(GraphColor.OrangeRed);

            case "string":
            case "string[]":
                return(GraphColor.Orange);

            case "bool":
            case "bool[]":
                return(GraphColor.Lime);

            case "color":
            case "color[]":
                return(GraphColor.Magenta);

            //case "image":
            //case "image[]":
            //    return GraphColor.Maroon;
            //case "icon":
            //    return GraphColor.Maroon;
            case "enum":
            case "enum[]":
                return(GraphColor.Aquamarine);

            case "size":
            case "size[]":
                return(GraphColor.BurlyWood);

            case "point":
            case "point[]":
                return(GraphColor.IndianRed);

            case "font":
            case "font[]":
                return(GraphColor.Cyan);

            case "datetime":
            case "datetime[]":
                return(GraphColor.MediumVioletRed);

            case "object":
            case "object[]":
                return(GraphColor.Red);

            //case "form":
            //    return GraphColor.Yellow;
            default:
                return(RandomColor(port.Symbol));
            }
        }
Пример #12
0
 public override ExpressionSyntax AccessSyntax(CSPort sourcePort)
 {
     return(SyntaxFactory.ObjectCreationExpression(SyntaxFactory.ParseTypeName(SymbolName)).WithArgumentList(SyntaxFactory.ArgumentList()));
 }
Пример #13
0
 //#error create instance should specify costructors as a sub menu
 public override IEnumerable <StatementSyntax> GetStatementSyntax(CSPort sourcePort)
 {
     return(new[] { SyntaxFactory.ExpressionStatement(SyntaxFactory.ObjectCreationExpression(SyntaxFactory.ParseTypeName(SymbolName)).WithArgumentList(SyntaxFactory.ArgumentList())) });
 }
Пример #14
0
 public virtual ExpressionSyntax AccessSyntax(CSPort sourcePort)
 {
     return(null);
 }
Пример #15
0
 public virtual IEnumerable <StatementSyntax> GetStatementSyntax(CSPort sourcePort)
 {
     return(null);
 }
Пример #16
0
 public override ExpressionSyntax AccessSyntax(CSPort sourcePort)
 {
     return(SyntaxFactory.IdentifierName(this.Name));
 }