Novetus_src/Novetus/NovetusCore/Classes/RobloxXML.cs

113 lines
2.9 KiB
C#

#region Usings
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq;
#endregion
#region XML Types
public enum XMLTypes
{
Token,
Bool,
Float,
String
}
#endregion
#region Roblox XML Parser
public static class RobloxXML
{
public static string GetStringForXMLType(XMLTypes type)
{
switch (type)
{
case XMLTypes.Bool:
return "bool";
case XMLTypes.Float:
return "float";
case XMLTypes.Token:
return "token";
case XMLTypes.String:
default:
return "string";
}
}
public static void EditRenderSettings(XDocument doc, string setting, string value, XMLTypes type)
{
var v = from nodes in doc.Descendants("Item")
where nodes.Attribute("class").Value == "RenderSettings"
select nodes;
foreach (var item in v)
{
var v2 = from nodes in item.Descendants(GetStringForXMLType(type))
where nodes.Attribute("name").Value == setting
select nodes;
foreach (var item2 in v2)
{
item2.Value = value;
}
}
}
public static bool IsRenderSettingStringValid(XDocument doc, string setting, XMLTypes type)
{
if (type != XMLTypes.String)
return false;
var v = from nodes in doc.Descendants("Item")
where nodes.Attribute("class").Value == "RenderSettings"
select nodes;
foreach (var item in v)
{
var v2 = from nodes in item.Descendants(GetStringForXMLType(type))
where nodes.Attribute("name").Value == setting
select nodes;
foreach (var item2 in v2)
{
return true;
}
}
return false;
}
public static string GetRenderSettings(XDocument doc, string setting, XMLTypes type)
{
var v = from nodes in doc.Descendants("Item")
where nodes.Attribute("class").Value == "RenderSettings"
select nodes;
foreach (var item in v)
{
var v2 = from nodes in item.Descendants(GetStringForXMLType(type))
where nodes.Attribute("name").Value == setting
select nodes;
foreach (var item2 in v2)
{
return item2.Value;
}
}
return "";
}
public static string RemoveInvalidXmlChars(string content)
{
return new string(content.Where(ch => XmlConvert.IsXmlChar(ch)).ToArray());
}
public static string ReplaceHexadecimalSymbols(string txt)
{
string r = "[\x00-\x08\x0B\x0C\x0E-\x1F]";
return Regex.Replace(txt, r, "", RegexOptions.Compiled);
}
}
#endregion