46 lines
921 B
C++
46 lines
921 B
C++
// Copyright 2020 Phyronnaz
|
|
|
|
#include "CppTranslation/VoxelVariables.h"
|
|
#include "VoxelNodes/VoxelExposedNodes.h"
|
|
|
|
FString FVoxelVariable::SanitizeName(const FString& InName)
|
|
{
|
|
static const FString ValidChars = TEXT("_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
|
|
static const FString ValidStartChars = TEXT("_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
|
|
|
|
FString SanitizedName;
|
|
|
|
for (int32 CharIdx = 0; CharIdx < InName.Len(); ++CharIdx)
|
|
{
|
|
FString Char = InName.Mid(CharIdx, 1);
|
|
|
|
if (!ValidChars.Contains(*Char))
|
|
{
|
|
SanitizedName += TEXT("_");
|
|
}
|
|
else
|
|
{
|
|
SanitizedName += Char;
|
|
}
|
|
}
|
|
|
|
if (SanitizedName == "None")
|
|
{
|
|
return "None1";
|
|
}
|
|
|
|
if (SanitizedName.IsEmpty() || SanitizedName == TEXT("_"))
|
|
{
|
|
return TEXT("Name");
|
|
}
|
|
|
|
if (ValidStartChars.Contains(*SanitizedName.Mid(0, 1)))
|
|
{
|
|
return SanitizedName;
|
|
}
|
|
else
|
|
{
|
|
return TEXT("_") + SanitizedName;
|
|
}
|
|
}
|
|
|