ds5678 13edc04cd1 Huge yaml export memory improvements
* Export MonoBehaviour byte arrays as scalars rather than sequences
* Do not serialize yaml scalars, especially not for byte arrays
* Eliminate unnecessary state for yaml scalars
* Create a new type hierarchy for yaml scalars
* Implement hexidecimal emission of floating point scalars
* Implement hexidecimal emission of numeric lists
* Resolves #1422
* Resolves #1409
* Resolves #1381
* Related to #927
* Related to #695
2024-08-04 14:32:11 -07:00

47 lines
984 B
C#

namespace AssetRipper.Yaml;
public abstract partial class YamlScalarNode : YamlNode
{
public sealed override bool IsMultiline => false;
public sealed override bool IsIndent => false;
public sealed override YamlNodeType NodeType => YamlNodeType.Scalar;
public virtual ScalarStyle Style => ScalarStyle.Plain;
public abstract string Value { get; }
private YamlScalarNode()
{
}
private protected abstract void EmitCore(Emitter emitter);
internal sealed override void Emit(Emitter emitter)
{
base.Emit(emitter);
switch (Style)
{
case ScalarStyle.Plain:
EmitCore(emitter);
break;
case ScalarStyle.SingleQuoted:
emitter.Write('\'');
EmitCore(emitter);
emitter.Write('\'');
break;
case ScalarStyle.DoubleQuoted:
emitter.Write('"');
EmitCore(emitter);
emitter.Write('"');
break;
default:
throw new Exception($"Unsupported scalar style {Style}");
}
}
public sealed override string ToString() => Value;
}