Ejemplo n.º 1
0
        public string GetFullFunctionOrEventHeaderText(PapyrusSymbol symbol)
        {
            if (symbol is FunctionSymbol functionSymbol)
            {
                var displayText = GetDisplayTextForFunction(functionSymbol);
                var typePrefix  = string.Empty;

                var typeIdentifier = functionSymbol.Definition.Header.TypeIdentifier;
                if (typeIdentifier != null)
                {
                    var returnType = symbol.GetPapyrusType();
                    typePrefix = (returnType?.Name.FullyQualifiedDisplayName ?? typeIdentifier.Text + (typeIdentifier.IsArray ? "[]" : string.Empty)) + " ";
                }

                return($"{typePrefix}Function {functionSymbol.Name}({displayText.Parameters.Select(t => t.Text).Join(", ")})");
            }

            if (symbol is EventSymbol eventSymbol)
            {
                var displayText = GetDisplayTextForEvent(eventSymbol);
                return($"Event {eventSymbol.Name}({displayText.Parameters.Select(t => t.Text).Join(", ")})");
            }

            return(null);
        }
Ejemplo n.º 2
0
        public DisplayText GetDisplayText(PapyrusSymbol symbol)
        {
            if (symbol is AliasedSymbol asAliased)
            {
                return(GetDisplayText(asAliased.Aliased));
            }

            // TODO: User flags

            switch (symbol.Kind)
            {
            case SymbolKinds.CustomEvent:
                return(GetBasicDisplayText(symbol.Name, "custom event", "CustomEvent"));

            case SymbolKinds.Event:
                var eventDisplayText = GetDisplayTextForEvent((EventSymbol)symbol);
                return(new DisplayText()
                {
                    Kind = eventDisplayText.Kind,
                    Text = $"{eventDisplayText.Prefix}({eventDisplayText.Parameters.Select(t => t.Text).Join(", ")}){eventDisplayText.Postfix}",
                    Documentation = eventDisplayText.Documentation
                });

            case SymbolKinds.Function:
                var funcDisplayText = GetDisplayTextForFunction((FunctionSymbol)symbol);
                return(new DisplayText()
                {
                    Kind = funcDisplayText.Kind,
                    Text = $"{funcDisplayText.Prefix}({funcDisplayText.Parameters.Select(t => t.Text).Join(", ")}){funcDisplayText.Postfix}",
                    Documentation = funcDisplayText.Documentation
                });

            case SymbolKinds.Group:
                return(GetBasicDisplayText(symbol.Name, "group", "Group"));

            case SymbolKinds.Import:
                return(GetBasicDisplayText(symbol.Name, "import", "Import"));

            case SymbolKinds.Property:
                return(GetDisplayTextForProperty((PropertySymbol)symbol));

            case SymbolKinds.State:
                return(GetDisplayTextForState((StateSymbol)symbol));

            case SymbolKinds.Struct:
                return(GetBasicDisplayText(
                           symbol.GetPapyrusType()?.Name.FullyQualifiedDisplayName
                           ?? symbol.Name, "struct", "Struct"));

            case SymbolKinds.Variable:
                return(GetDisplayTextForVariable((VariableSymbol)symbol));

            case SymbolKinds.Script:
                return(GetDisplayTextForScript((ScriptSymbol)symbol));
            }

            return(null);
        }