From 13c9adf78198d9f1f53b5142fc509859fc4063c1 Mon Sep 17 00:00:00 2001 From: That_One_Nerd Date: Wed, 10 May 2023 13:55:46 -0400 Subject: [PATCH] Added different tabbing options for VKV key and value seperation. --- SrcMod/Shell/{ => Miscellaneous}/GlobalUsings.cs | 0 SrcMod/Valve.NET/Miscellaneous/GlobalUsings.cs | 1 + SrcMod/Valve.NET/Vkv/SpacingMode.cs | 8 ++++++++ SrcMod/Valve.NET/Vkv/VkvConvert.cs | 16 ++++++++++++++-- SrcMod/Valve.NET/Vkv/VkvOptions.cs | 2 ++ 5 files changed, 25 insertions(+), 2 deletions(-) rename SrcMod/Shell/{ => Miscellaneous}/GlobalUsings.cs (100%) create mode 100644 SrcMod/Valve.NET/Vkv/SpacingMode.cs diff --git a/SrcMod/Shell/GlobalUsings.cs b/SrcMod/Shell/Miscellaneous/GlobalUsings.cs similarity index 100% rename from SrcMod/Shell/GlobalUsings.cs rename to SrcMod/Shell/Miscellaneous/GlobalUsings.cs diff --git a/SrcMod/Valve.NET/Miscellaneous/GlobalUsings.cs b/SrcMod/Valve.NET/Miscellaneous/GlobalUsings.cs index fcfd555..1e3c341 100644 --- a/SrcMod/Valve.NET/Miscellaneous/GlobalUsings.cs +++ b/SrcMod/Valve.NET/Miscellaneous/GlobalUsings.cs @@ -14,3 +14,4 @@ global using System.Threading; global using Valve; global using Valve.Miscellaneous; global using Valve.Vkv; +global using Valve.Vkv.ObjectModels; diff --git a/SrcMod/Valve.NET/Vkv/SpacingMode.cs b/SrcMod/Valve.NET/Vkv/SpacingMode.cs new file mode 100644 index 0000000..6f5064b --- /dev/null +++ b/SrcMod/Valve.NET/Vkv/SpacingMode.cs @@ -0,0 +1,8 @@ +namespace Valve.Vkv; + +public enum SpacingMode +{ + SingleSpace = 0, + IndentSizeSpacing, + DoubleTab, +} diff --git a/SrcMod/Valve.NET/Vkv/VkvConvert.cs b/SrcMod/Valve.NET/Vkv/VkvConvert.cs index dad6678..b5defb5 100644 --- a/SrcMod/Valve.NET/Vkv/VkvConvert.cs +++ b/SrcMod/Valve.NET/Vkv/VkvConvert.cs @@ -289,7 +289,20 @@ public static class VkvConvert writer.Write(new string(' ', indentLevel)); writer.Write(SerializeString(name, options)); - writer.Write(' '); + + switch (options.spacing) + { + case SpacingMode.SingleSpace: writer.Write(' '); + break; + + case SpacingMode.IndentSizeSpacing: writer.Write(new string(' ', options.indentSize)); + break; + + case SpacingMode.DoubleTab: writer.Write("\t\t"); + break; + + default: throw new VkvSerializationException($"Unknown spacing mode \"{options.spacing}\"."); + } serializedValue = SerializeString(serializedValue, options); writer.WriteLine(serializedValue); @@ -325,7 +338,6 @@ public static class VkvConvert if (options.useQuotes) content = $"\"{content}\""; return content; } - #endregion #region ToNodeTree diff --git a/SrcMod/Valve.NET/Vkv/VkvOptions.cs b/SrcMod/Valve.NET/Vkv/VkvOptions.cs index 72ad902..4bf92f3 100644 --- a/SrcMod/Valve.NET/Vkv/VkvOptions.cs +++ b/SrcMod/Valve.NET/Vkv/VkvOptions.cs @@ -8,6 +8,7 @@ public record class VkvOptions public int indentSize; public bool resetStreamPosition; public bool serializeProperties; + public SpacingMode spacing; public bool useEscapeCodes; public bool useQuotes; @@ -17,6 +18,7 @@ public record class VkvOptions indentSize = 4; resetStreamPosition = false; serializeProperties = true; + spacing = SpacingMode.DoubleTab; useEscapeCodes = false; useQuotes = false; }