Framework for printing abridged manual sections in response to syntactic mistakes
This commit is contained in:
@@ -302,16 +302,14 @@ FString WingUtils::FormatNodeTitle(const UEdGraphNode *Node)
|
||||
|
||||
FString WingUtils::WrapText(const FString& Text, int32 ColLimit, const FString& Prefix)
|
||||
{
|
||||
FString Clean = Text;
|
||||
Clean.ReplaceInline(TEXT("\r\n"), TEXT("\n"));
|
||||
TArray<FString> Words;
|
||||
Clean.ParseIntoArrayWS(Words);
|
||||
Text.ParseIntoArrayWS(Words);
|
||||
|
||||
TStringBuilder<1024> Result;
|
||||
int32 Col = 0;
|
||||
for (const FString& Word : Words)
|
||||
{
|
||||
if (Col > 0 && Col + 1 + Word.Len() > ColLimit)
|
||||
if ((Col > 0) && (Col + 1 + Word.Len() > ColLimit))
|
||||
{
|
||||
Result.Append(TEXT("\n"));
|
||||
Col = 0;
|
||||
@@ -319,16 +317,17 @@ FString WingUtils::WrapText(const FString& Text, int32 ColLimit, const FString&
|
||||
if (Col == 0)
|
||||
{
|
||||
Result.Append(Prefix);
|
||||
Col = Prefix.Len();
|
||||
Result.Append(Word);
|
||||
Col = Prefix.Len() + Word.Len();
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
Result.Append(TEXT(" "));
|
||||
Col += 1;
|
||||
Result.Append(Word);
|
||||
Col = 1 + Word.Len();
|
||||
}
|
||||
Result.Append(Word);
|
||||
Col += Word.Len();
|
||||
}
|
||||
if (Col > 0) Result.Append(TEXT("\n"));
|
||||
return Result.ToString();
|
||||
}
|
||||
|
||||
@@ -616,48 +615,3 @@ FString WingUtils::GetHandlerGroup(UClass* HandlerClass)
|
||||
return Name.Left(UnderscoreIdx);
|
||||
return Name;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// PrintHandlerHelp — verbose description of one handler command
|
||||
// ============================================================
|
||||
|
||||
void WingUtils::PrintHandlerHelp(UClass* HandlerClass)
|
||||
{
|
||||
const IWingHandler* Handler = Cast<IWingHandler>(HandlerClass->GetDefaultObject());
|
||||
if (!Handler) return;
|
||||
|
||||
FString ToolName = GetHandlerName(HandlerClass);
|
||||
|
||||
UWingServer::Print(TEXT("\n"));
|
||||
UWingServer::Print(WrapText(Handler->GetDescription(), 80, TEXT("// ")));
|
||||
UWingServer::Print(TEXT("\n"));
|
||||
|
||||
// Command signature line
|
||||
UWingServer::Print(ToolName);
|
||||
UWingServer::Print(TEXT("("));
|
||||
bool bFirst = true;
|
||||
for (TFieldIterator<FProperty> PropIt(HandlerClass, EFieldIterationFlags::None); PropIt; ++PropIt)
|
||||
{
|
||||
if (!bFirst) UWingServer::Print(TEXT(","));
|
||||
bFirst = false;
|
||||
if (PropIt->HasMetaData(TEXT("Optional"))) UWingServer::Print(TEXT("?"));
|
||||
UWingServer::Print(PropIt->GetName());
|
||||
}
|
||||
UWingServer::Print(TEXT(")\n"));
|
||||
|
||||
// parameter details
|
||||
for (TFieldIterator<FProperty> PropIt(HandlerClass, EFieldIterationFlags::None); PropIt; ++PropIt)
|
||||
{
|
||||
FProperty* Prop = *PropIt;
|
||||
FString Name = Prop->GetName();
|
||||
FString Type = UWingTypes::TypeToText(Prop);
|
||||
bool bOptional = Prop->HasMetaData(TEXT("Optional"));
|
||||
const FString& Desc = Prop->GetMetaData(TEXT("Description"));
|
||||
|
||||
UWingServer::Printf(TEXT(" %s %s%s"),
|
||||
*Type, *Name, bOptional ? TEXT(" (optional)") : TEXT(""));
|
||||
if (!Desc.IsEmpty())
|
||||
UWingServer::Printf(TEXT(" — %s"), *Desc);
|
||||
UWingServer::Print(TEXT("\n"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user