Skip to content

Commit 283e1f9

Browse files
committed
release 1.7.2
1 parent e1bf09a commit 283e1f9

File tree

16 files changed

+362
-17
lines changed

16 files changed

+362
-17
lines changed

DataConfig/Source/DataConfigCore/Private/DataConfig/Automation/DcAutomationUtils.cpp

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,36 @@ FDcResult _ExpectEqual<EDcDataEntry>(const EDcDataEntry& Lhs, const EDcDataEntry
5757
}
5858
}
5959

60+
template<>
61+
FDcResult _ExpectEqual<FText>(const FText& Lhs, const FText& Rhs)
62+
{
63+
auto _DeepTextCheck = [](const FText& Lhs, const FText& Rhs) -> bool
64+
{
65+
if (FTextInspector::GetNamespace(Lhs) != FTextInspector::GetNamespace(Rhs))
66+
return false;
67+
68+
if (FTextInspector::GetKey(Lhs) != FTextInspector::GetKey(Rhs))
69+
return false;
70+
71+
const FString* LhsSource = FTextInspector::GetSourceString(Lhs);
72+
const FString* RhsSource = FTextInspector::GetSourceString(Rhs);
73+
74+
if ((LhsSource == nullptr && RhsSource != nullptr)
75+
|| (LhsSource != nullptr && RhsSource == nullptr))
76+
return false;
77+
78+
if (LhsSource == nullptr && RhsSource == nullptr)
79+
return true;
80+
81+
return *LhsSource == *RhsSource;
82+
};
83+
84+
return _DeepTextCheck(Lhs, Rhs)
85+
? DcOk()
86+
: DC_FAIL(DcDReadWrite, DataTypeUnequalLhsRhs)
87+
<< "FText" << Lhs << Rhs;
88+
}
89+
6090
FDcResult TestReadDatumEqual(const FDcPropertyDatum& LhsDatum, const FDcPropertyDatum& RhsDatum, EReadDatumEqualType Type)
6191
{
6292
FDcPropertyReader LhsReader(LhsDatum);
@@ -124,7 +154,7 @@ FDcResult TestReadDatumEqual(const FDcPropertyDatum& LhsDatum, const FDcProperty
124154
FText Rhs;
125155
DC_TRY(RhsReader.ReadText(&Rhs));
126156

127-
DC_TRY(_ExpectEqual(Lhs.ToString(), Rhs.ToString()));
157+
DC_TRY(_ExpectEqual(Lhs, Rhs));
128158
break;
129159
}
130160
case EDcDataEntry::Enum:

DataConfig/Source/DataConfigCore/Private/DataConfig/Deserialize/DcDeserializerSetup.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ void DcSetupCoreTypesDeserializeHandlers(FDcDeserializer& Deserializer)
247247
Deserializer.AddStructHandler(TBaseStructure<FDateTime>::Get(), FDcDeserializeDelegate::CreateStatic(HandlerDateTimeDeserialize));
248248
Deserializer.AddStructHandler(DcSerDeUtils::FindFirstObject<UScriptStruct>(TEXT("Timespan"), true), FDcDeserializeDelegate::CreateStatic(HandlerTimespanDeserialize));
249249

250+
Deserializer.FieldClassDeserializerMap[FTextProperty::StaticClass()] = FDcDeserializeDelegate::CreateStatic(HandlerTextDeserialize);
251+
250252
Deserializer.AddStructHandler(DcSerDeUtils::FindFirstObject<UScriptStruct>(TEXT("IntPoint"), true), FDcDeserializeDelegate::CreateStatic(HandlerIntPointDeserialize));
251253
Deserializer.AddStructHandler(DcSerDeUtils::FindFirstObject<UScriptStruct>(TEXT("IntVector"), true), FDcDeserializeDelegate::CreateStatic(HandlerIntVectorDeserialize));
252254
#if !UE_VERSION_OLDER_THAN(5, 1, 0)

DataConfig/Source/DataConfigCore/Private/DataConfig/Deserialize/Handlers/Common/DcCoreTypesDeserializers.cpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include "DataConfig/SerDe/DcSerDeCoreTypesCommon.h"
88
#include "DataConfig/Diagnostic/DcDiagnosticSerDe.h"
99

10+
#include "Misc/EngineVersionComparison.h"
11+
1012
namespace DcCoreTypesHandlers {
1113

1214
struct FDcScopedSkipStructHandler
@@ -230,6 +232,61 @@ FDcResult HandlerTimespanDeserialize(FDcDeserializeContext& Ctx)
230232
}
231233
}
232234

235+
FDcResult HandlerTextDeserialize(FDcDeserializeContext& Ctx)
236+
{
237+
EDcDataEntry Next;
238+
DC_TRY(Ctx.Reader->PeekRead(&Next));
239+
if (Next == EDcDataEntry::String)
240+
{
241+
FText Value;
242+
DC_TRY(Ctx.Reader->ReadText(&Value));
243+
DC_TRY(Ctx.Writer->WriteText(Value));
244+
return DcOk();
245+
}
246+
else if (Next == EDcDataEntry::ArrayRoot)
247+
{
248+
DC_TRY(Ctx.Reader->ReadArrayRoot());
249+
250+
FString Value1;
251+
FString Value2;
252+
DC_TRY(Ctx.Reader->ReadString(&Value1));
253+
DC_TRY(Ctx.Reader->ReadString(&Value2));
254+
255+
DC_TRY(Ctx.Reader->PeekRead(&Next));
256+
if (Next == EDcDataEntry::ArrayEnd)
257+
{
258+
// [<string-table-id>, <text-id>]
259+
FText Result = FText::FromStringTable(FName(*Value1), Value2);
260+
DC_TRY(Ctx.Writer->WriteText(Result));
261+
DC_TRY(Ctx.Reader->ReadArrayEnd());
262+
}
263+
else
264+
{
265+
// [<namespace>, <text-id>, <source>]
266+
FString Value3;
267+
DC_TRY(Ctx.Reader->ReadString(&Value3));
268+
269+
#if UE_VERSION_OLDER_THAN(5, 5, 0)
270+
FText Result = Value3.IsEmpty()
271+
? FText::GetEmpty()
272+
: FInternationalization::ForUseOnlyByLocMacroAndGraphNodeTextLiterals_CreateText(*Value3, *Value1, *Value2);
273+
#else
274+
FText Result = FText::AsLocalizable_Advanced(Value1, Value2, MoveTemp(Value3));
275+
#endif // UE_VERSION_OLDER_THAN(5, 5, 0)
276+
277+
DC_TRY(Ctx.Writer->WriteText(Result));
278+
DC_TRY(Ctx.Reader->ReadArrayEnd());
279+
}
280+
281+
return DcOk();
282+
}
283+
else
284+
{
285+
return DC_FAIL(DcDSerDe, DataEntryMismatch2)
286+
<< EDcDataEntry::String << EDcDataEntry::ArrayRoot << Next;
287+
}
288+
}
289+
233290
FDcResult HandlerIntPointDeserialize(FDcDeserializeContext& Ctx)
234291
{
235292
_DC_READ_MAP_FALLBACK;

DataConfig/Source/DataConfigCore/Private/DataConfig/Json/DcJsonReader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ FDcResult TDcJsonReader<CharType>::ReadText(FText* OutPtr)
521521
if (IsAtObjectKey())
522522
DC_TRY(CheckObjectDuplicatedKey(ParsedStr));
523523

524-
ReadOut(OutPtr, FText::FromString(MoveTemp(ParsedStr)));
524+
ReadOut(OutPtr, FTextStringHelper::CreateFromBuffer(*ParsedStr));
525525
DC_TRY(EndTopRead());
526526
return DcOk();
527527
}

DataConfig/Source/DataConfigCore/Private/DataConfig/MsgPack/DcMsgPackReader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ FDcResult FDcMsgPackReader::ReadText(FText* OutPtr)
331331
DC_TRY(ReadString(&Str));
332332

333333
if (OutPtr)
334-
*OutPtr = FText::FromString(Str);
334+
*OutPtr = FTextStringHelper::CreateFromBuffer(*Str);
335335

336336
return DcOk();
337337
}

DataConfig/Source/DataConfigCore/Private/DataConfig/Serialize/DcSerializerSetup.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,8 @@ void DcSetupCoreTypesSerializeHandlers(FDcSerializer& Serializer)
249249
Serializer.AddStructHandler(TBaseStructure<FDateTime>::Get(), FDcSerializeDelegate::CreateStatic(HandlerDateTimeSerialize));
250250
Serializer.AddStructHandler(DcSerDeUtils::FindFirstObject<UScriptStruct>(TEXT("Timespan"), true), FDcSerializeDelegate::CreateStatic(HandlerTimespanSerialize));
251251

252+
Serializer.FieldClassSerializerMap[FTextProperty::StaticClass()] = FDcSerializeDelegate::CreateStatic(HandlerTextSerialize);
253+
252254
Serializer.AddStructHandler(DcSerDeUtils::FindFirstObject<UScriptStruct>(TEXT("IntPoint"), true), FDcSerializeDelegate::CreateStatic(HandlerIntPointSerialize));
253255
Serializer.AddStructHandler(DcSerDeUtils::FindFirstObject<UScriptStruct>(TEXT("IntVector"), true), FDcSerializeDelegate::CreateStatic(HandlerIntVectorSerialize));
254256
#if !UE_VERSION_OLDER_THAN(5, 1, 0)

DataConfig/Source/DataConfigCore/Private/DataConfig/Serialize/Handlers/Common/DcCoreTypesSerializers.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,45 @@ FDcResult HandlerTimespanSerialize(FDcSerializeContext& Ctx)
197197
return DcOk();
198198
}
199199

200+
FDcResult HandlerTextSerialize(FDcSerializeContext& Ctx)
201+
{
202+
FText Value;
203+
DC_TRY(Ctx.Reader->ReadText(&Value));
204+
205+
if (Value.IsFromStringTable())
206+
{
207+
FName TableId;
208+
FString TextKey;
209+
210+
verify(FTextInspector::GetTableIdAndKey(Value, TableId, TextKey));
211+
212+
DC_TRY(Ctx.Writer->WriteArrayRoot());
213+
214+
DC_TRY(Ctx.Writer->WriteString(TableId.ToString()));
215+
DC_TRY(Ctx.Writer->WriteString(TextKey));
216+
217+
DC_TRY(Ctx.Writer->WriteArrayEnd());
218+
}
219+
else
220+
{
221+
DC_TRY(Ctx.Writer->WriteArrayRoot());
222+
223+
TOptional<FString> Namespace = FTextInspector::GetNamespace(Value);
224+
DC_TRY(Ctx.Writer->WriteString(Namespace.IsSet() ? *Namespace : ""));
225+
226+
TOptional<FString> TextKey = FTextInspector::GetKey(Value);
227+
DC_TRY(Ctx.Writer->WriteString(TextKey.IsSet() ? *TextKey : ""));
228+
229+
const FString* SourceString = FTextInspector::GetSourceString(Value);
230+
DC_TRY(Ctx.Writer->WriteString(SourceString ? *SourceString : ""));
231+
232+
DC_TRY(Ctx.Writer->WriteArrayEnd());
233+
}
234+
235+
return DcOk();
236+
}
237+
238+
200239
FDcResult HandlerIntPointSerialize(FDcSerializeContext& Ctx)
201240
{
202241
DcSerializeUtils::FDcScopedTryUseJSONOverrideConfig ScopedOverrideConfig(Ctx.Writer);
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#pragma once
22

3-
#define DATA_CONFIG_CORE_VERSION "1.7.1"
4-
#define DATA_CONFIG_CORE_VERSION_NUMBER 10701
3+
#define DATA_CONFIG_CORE_VERSION "1.7.2"
4+
#define DATA_CONFIG_CORE_VERSION_NUMBER 10702

DataConfig/Source/DataConfigCore/Public/DataConfig/Deserialize/Handlers/Common/DcCoreTypesDeserializers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ DATACONFIGCORE_API FDcResult HandlerIntVectorDeserialize(FDcDeserializeContext&
1515
DATACONFIGCORE_API FDcResult HandlerColorDeserialize(FDcDeserializeContext& Ctx);
1616
DATACONFIGCORE_API FDcResult HandlerDateTimeDeserialize(FDcDeserializeContext& Ctx);
1717
DATACONFIGCORE_API FDcResult HandlerTimespanDeserialize(FDcDeserializeContext& Ctx);
18+
DATACONFIGCORE_API FDcResult HandlerTextDeserialize(FDcDeserializeContext& Ctx);
1819

1920
#if ENGINE_MAJOR_VERSION == 5
2021
DATACONFIGCORE_API FDcResult HandlerVector2dDeserialize(FDcDeserializeContext& Ctx);

DataConfig/Source/DataConfigCore/Public/DataConfig/Serialize/Handlers/Common/DcCoreTypesSerializers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ DATACONFIGCORE_API FDcResult HandlerIntVectorSerialize(FDcSerializeContext& Ctx)
1515
DATACONFIGCORE_API FDcResult HandlerColorSerialize(FDcSerializeContext& Ctx);
1616
DATACONFIGCORE_API FDcResult HandlerDateTimeSerialize(FDcSerializeContext& Ctx);
1717
DATACONFIGCORE_API FDcResult HandlerTimespanSerialize(FDcSerializeContext& Ctx);
18+
DATACONFIGCORE_API FDcResult HandlerTextSerialize(FDcSerializeContext& Ctx);
1819

1920
#if ENGINE_MAJOR_VERSION == 5
2021
DATACONFIGCORE_API FDcResult HandlerVector2dSerialize(FDcSerializeContext& Ctx);

0 commit comments

Comments
 (0)