コード例 #1
0
        public static List <CodeItem> MapMember(Node member)
        {
            switch (member.Kind)
            {
            case SyntaxKind.FunctionDeclaration:
                return(FunctionMapperJS.MapFunction(member as FunctionDeclaration, _control));

            case SyntaxKind.FunctionExpression:
                return(FunctionMapperJS.MapFunctionExpression(member as FunctionExpression, _control));

            case SyntaxKind.VariableStatement:
                return(MapVariable(member as VariableStatement));

            case SyntaxKind.ExpressionStatement:
            case SyntaxKind.PrefixUnaryExpression:
            case SyntaxKind.CallExpression:
            case SyntaxKind.PropertyAccessExpression:
                return(MapChildren(member));

            case SyntaxKind.BinaryExpression:
                return(MapBinaryExpression(member as BinaryExpression));

            default:
                break;
            }

            return(new List <CodeItem>());
        }
コード例 #2
0
        private static List <CodeItem> MapBinaryExpression(BinaryExpression expression)
        {
            if (expression.Right.Kind != SyntaxKind.FunctionExpression)
            {
                return(new List <CodeItem>());
            }

            var function = expression.Right as FunctionExpression;

            return(FunctionMapperJS.MapFunction(function, function.Parameters, expression.First.IdentifierStr, _control));
        }
コード例 #3
0
        private static List <CodeItem> MapVariable(VariableStatement variable)
        {
            var declarator = variable.DeclarationList.Declarations.First();

            if (declarator.Initializer != null)
            {
                switch (declarator.Initializer.Kind)
                {
                case SyntaxKind.FunctionExpression:
                    return(FunctionMapperJS.MapFunctionExpression(declarator, _control));

                case SyntaxKind.ArrowFunction:
                    return(FunctionMapperJS.MapArrowFunctionExpression(declarator, _control));

                case SyntaxKind.NewExpression:
                    return(FunctionMapperJS.MapNewExpression(declarator, _control));

                default:
                    break;
                }
            }

            if (variable.Parent.Kind != SyntaxKind.SourceFile)
            {
                return(new List <CodeItem>());
            }

            var item = BaseMapperJS.MapBase <CodeItem>(variable, declarator.IdentifierStr, _control);

            item.Kind    = CodeItemKindEnum.Variable;
            item.Moniker = IconMapper.MapMoniker(item.Kind, item.Access);

            return(new List <CodeItem> {
                item
            });
        }