mirror of
https://github.com/AssetRipper/AssetRipper.git
synced 2025-12-11 20:15:29 +01:00
65 lines
1.9 KiB
C#
65 lines
1.9 KiB
C#
using System.Xml;
|
|
|
|
namespace AssetRipper.AssemblyDumper.Documentation;
|
|
|
|
internal static class XmlUtils
|
|
{
|
|
internal static XmlDocument CreateNewDocument()
|
|
{
|
|
XmlDocument document = new XmlDocument();
|
|
document.AppendChild(document.CreateXmlDeclaration("1.0", null, null));
|
|
return document;
|
|
}
|
|
|
|
internal static string EscapeXmlInvalidCharacters(string originalString)
|
|
{
|
|
return System.Security.SecurityElement.Escape(originalString);
|
|
}
|
|
|
|
internal static string GetStringReference(Type type)
|
|
{
|
|
return $"T:{type.FullName}";
|
|
}
|
|
|
|
internal static string GetStringReference(TypeDefinition type)
|
|
{
|
|
return $"T:{type.FullName}";
|
|
}
|
|
|
|
internal static string GetStringReference(PropertyDefinition property)
|
|
{
|
|
return $"P:{property.DeclaringType?.FullName}.{property.Name}";
|
|
}
|
|
|
|
//If the name of the item itself has periods, they're replaced by the hash-sign ('#').
|
|
//It's assumed that no item has a hash-sign directly in its name.
|
|
//For example, the fully qualified name of the String constructor is "System.String.#ctor".
|
|
internal static string GetStringReference(FieldDefinition field)
|
|
{
|
|
return $"F:{field.DeclaringType?.FullName}.{((string?)field.Name)?.Replace('.', '#')}";
|
|
}
|
|
|
|
internal static string GetStringReference(EventDefinition @event)
|
|
{
|
|
return $"E:{@event.DeclaringType?.FullName}.{@event.Name}";
|
|
}
|
|
|
|
internal static string GetStringReference(MethodDefinition method)
|
|
{
|
|
//@ is used instead of & for by-ref parameters.
|
|
return $"M:{method.DeclaringType?.FullName}.{method.Name}{GetParameterString(method.Signature)}".Replace('&', '@');
|
|
|
|
static string GetParameterString(MethodSignature? signature)
|
|
{
|
|
return signature is null || signature.ParameterTypes.Count == 0
|
|
? string.Empty
|
|
: $"({string.Join(',', signature.ParameterTypes.Select(t => t.FullName))})";
|
|
}
|
|
}
|
|
|
|
internal static string GetStringReference(string @namespace)
|
|
{
|
|
return $"N:{@namespace}";
|
|
}
|
|
}
|