Tiny progress in vkv editor.

This commit is contained in:
That-One-Nerd 2023-05-27 16:20:13 -04:00
parent 61407c3aab
commit 2f5214d3b2

View File

@ -3,5 +3,42 @@
[Module("vkv")] [Module("vkv")]
public static class VkvModule public static class VkvModule
{ {
[Command("create")]
public static void CreateVkv(string path)
{
if (File.Exists(path)) throw new($"File already exists at \"{path}\". Did you mean to run \"vkv edit\"?");
VkvNode parentNode = new VkvTreeNode()
{
{ "key", new VkvSingleNode("value") }
};
string parentNodeName = "tree";
VkvModifyWhole(ref parentNode, ref parentNodeName);
}
private static void VkvModifyWhole(ref VkvNode node, ref string nodeName)
{
VkvDisplayNode(node, nodeName);
}
private static void VkvDisplayNode(in VkvNode? node, in string nodeName, in int indent = 0)
{
int spaceCount = indent * 4;
if (node is null) return;
else if (node is VkvSingleNode single)
{
Write(new string(' ', spaceCount) + $"\"{nodeName}\" \"{single.value}\"");
}
else if (node is VkvTreeNode tree)
{
Write(new string(' ', spaceCount) + $"\"{nodeName}\"\n" + new string(' ', spaceCount) + "{");
foreach (KeyValuePair<string, VkvNode?> subNode in tree)
{
VkvDisplayNode(subNode.Value, subNode.Key, indent + 1);
}
Write(new string(' ', spaceCount) + "}");
}
else return;
}
} }