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); }
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); }