Share critical cell parsing across app and importer
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System.Text.Json;
|
||||
using RolemasterDb.App.Features;
|
||||
|
||||
namespace RolemasterDb.App.Components.Shared;
|
||||
@@ -35,11 +36,32 @@ public sealed class CriticalBranchEditorModel
|
||||
BranchKind,
|
||||
ConditionKey,
|
||||
ConditionText,
|
||||
ConditionJson,
|
||||
RawText,
|
||||
"{}",
|
||||
BuildRawText(),
|
||||
DescriptionText,
|
||||
RawAffixText,
|
||||
ParsedJson,
|
||||
SerializeParsedEffects(Effects),
|
||||
SortOrder,
|
||||
Effects.Select(effect => effect.ToItem()).ToList());
|
||||
|
||||
private string BuildRawText()
|
||||
{
|
||||
var condition = ConditionText.Trim();
|
||||
var description = DescriptionText.Trim();
|
||||
var firstLine = string.IsNullOrWhiteSpace(description)
|
||||
? $"{condition}:"
|
||||
: $"{condition}: {description}";
|
||||
|
||||
if (string.IsNullOrWhiteSpace(RawAffixText))
|
||||
{
|
||||
return firstLine;
|
||||
}
|
||||
|
||||
return $"{firstLine}{Environment.NewLine}{RawAffixText.Trim()}";
|
||||
}
|
||||
|
||||
private static string SerializeParsedEffects(IReadOnlyList<CriticalEffectEditorModel> effects) =>
|
||||
effects.Count == 0
|
||||
? "{}"
|
||||
: JsonSerializer.Serialize(new { effects = effects.Select(effect => effect.ToItem()).ToList() });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user