Added a root "File" node to the XML engine. Fixed a bug that deleted the "SegmentTracks" node.

This commit is contained in:
2017-09-05 13:26:40 -05:00
parent 646ea08f3e
commit fcbdbf15a4
4 changed files with 110 additions and 63 deletions
+28 -19
View File
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace MKVTest
@@ -12,29 +13,32 @@ namespace MKVTest
var file = File.ReadAllLines(filePath);
if (file.Length == 0) return new List<string>();
var lastDepthLevel = 0;
var paddingOffSet = GetDepth(file[0]);
var xml = new StringBuilder();
//var paddingOffSet = GetDepth(file[0]);
//var xml = new StringBuilder();
var stack = new Stack<XmlTag>();
var test = new List<string>();
var xml = new List<string> {"<File>"};
//Create a root node for the file.
var rootNode = new XmlTag()
{
Name = "File"
};
stack.Push(rootNode);
for (var i = 0; i < file.Length; i++)
{
var depth = GetDepth(file[i]);
var tag = CreateTagFromString(file[i]);
var padding = new StringBuilder();
for (var j = depth - paddingOffSet; j > 0; j--)
{
padding.Append(" ");
}
//for (var j = depth - paddingOffSet; j > 0; j--)
//{
// padding.Append(" ");
//}
if (i == file.Length - 1)
{
var t = stack.Pop();
test[test.Count - 2] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />";
test[test.Count - 1] = padding + "<" + tag.Name + " Value=\"" + tag.Value + "\" />";
xml.Insert(xml.Count - 1, padding + "<" + t.Name + " Value=\"" + t.Value + "\" />");
xml[xml.Count - 1] = padding + "<" + tag.Name + " Value=\"" + tag.Value + "\" />";
//Unwind the stack.
foreach (var s in stack)
{
test.Add("</" + s.Name + ">");
}
xml.AddRange(stack.Select(s => "</" + s.Name + ">"));
continue;
}
@@ -43,7 +47,7 @@ namespace MKVTest
if (stack.Count != 0)
{
var t = stack.Pop();
test[test.Count - 1] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />";
xml[xml.Count - 1] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />";
}
}
else if (depth < lastDepthLevel)
@@ -52,7 +56,7 @@ namespace MKVTest
if (stack.Count != 0)
{
var t = stack.Pop();
test[test.Count - 1] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />";
xml[xml.Count - 1] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />";
var diff = lastDepthLevel - depth;
var subPadding = new StringBuilder();
for (var j = 0; j < diff; j++)
@@ -64,7 +68,7 @@ namespace MKVTest
//}
if (stack.Count != 0)
{
test.Add(subPadding + "</" + stack.Pop().Name + ">");
xml.Add(subPadding + "</" + stack.Pop().Name + ">");
}
else
{
@@ -73,12 +77,12 @@ namespace MKVTest
}
}
}
if(tag.Name != string.Empty) test.Add(padding + "<" + tag.Name + ">");
if(tag.Name != string.Empty) xml.Add(padding + "<" + tag.Name + ">");
stack.Push(tag);
lastDepthLevel = depth;
}
return test;
return xml;
}
public List<XmlTag> CreateTagListFromFile(string filePath)
@@ -121,13 +125,18 @@ namespace MKVTest
clearingPadding = false;
if (foundDelimiter)
{
if (text[i] == '(')
{
insideBraces = true;
continue;
}
if (insideBraces && text[i] == ')')
{
insideBraces = false;
continue;
}
value.Append(text[i]);
if(!insideBraces) value.Append(text[i]);
}
else
{