new docs generator and docs update: electric boogaloo
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using MoonSharp.Interpreter;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Barotrauma.Networking;
|
||||
using System.Threading.Tasks;
|
||||
using Barotrauma.Items.Components;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
|
||||
public static class LuaDocs
|
||||
{
|
||||
|
||||
public static string ConvertTypeName(string type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case "Boolean":
|
||||
return "bool";
|
||||
case "String":
|
||||
return "string";
|
||||
case "int":
|
||||
return "number";
|
||||
case "Single":
|
||||
return "number";
|
||||
case "Double":
|
||||
return "number";
|
||||
case "float":
|
||||
return "number";
|
||||
case "UInt16":
|
||||
return "number";
|
||||
case "UInt32":
|
||||
return "number";
|
||||
case "UInt64":
|
||||
return "number";
|
||||
case "Int32":
|
||||
return "number";
|
||||
case "List`1":
|
||||
return "table";
|
||||
case "Dictionary`2":
|
||||
return "table";
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
public static void GenerateDocs(Type type)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
|
||||
var members = type.GetMembers();
|
||||
|
||||
foreach(var member in members)
|
||||
{
|
||||
Console.WriteLine("'{0}' is a {1}", member.Name, member.MemberType);
|
||||
|
||||
if (member.MemberType == MemberTypes.Method)
|
||||
{
|
||||
var method = (MethodInfo)member;
|
||||
|
||||
if (method.Name.StartsWith("get_") || method.Name.StartsWith("set_"))
|
||||
continue;
|
||||
|
||||
sb.Append($"--- {method.Name}\n");
|
||||
sb.Append($"-- @realm shared\n");
|
||||
|
||||
var paramNames = "";
|
||||
|
||||
var parameters = method.GetParameters();
|
||||
for(var i=0; i < parameters.Length; i++)
|
||||
{
|
||||
var parameter = parameters[i];
|
||||
|
||||
if(i == parameters.Length - 1)
|
||||
paramNames = paramNames + parameter.Name;
|
||||
else
|
||||
paramNames = paramNames + parameter.Name + ", ";
|
||||
|
||||
sb.Append($"-- @tparam {ConvertTypeName(parameter.ParameterType.Name)} {parameter.Name}\n");
|
||||
}
|
||||
|
||||
if (method.ReturnType != typeof(void))
|
||||
{
|
||||
sb.Append($"-- @treturn {ConvertTypeName(method.ReturnType.Name)}\n");
|
||||
}
|
||||
|
||||
if (method.IsStatic)
|
||||
sb.Append($"function {type.Name}.{method.Name}({paramNames})");
|
||||
else
|
||||
sb.Append($"function {method.Name}({paramNames})");
|
||||
sb.Append(" end\n");
|
||||
|
||||
sb.Append("\n");
|
||||
}
|
||||
|
||||
if (member.MemberType == MemberTypes.Field)
|
||||
{
|
||||
var field = (FieldInfo)member;
|
||||
|
||||
sb.Append($"---\n");
|
||||
sb.Append($"-- ");
|
||||
|
||||
var name = field.Name;
|
||||
|
||||
var returnName = ConvertTypeName(field.FieldType.Name);
|
||||
|
||||
if (field.IsStatic)
|
||||
name = type.Name + "." + field.Name;
|
||||
|
||||
sb.Append(name);
|
||||
sb.Append($", Field of type {returnName}\n");
|
||||
sb.Append($"-- @realm shared\n");
|
||||
sb.Append($"-- @{returnName} {name}\n");
|
||||
|
||||
sb.Append("\n");
|
||||
}
|
||||
|
||||
if (member.MemberType == MemberTypes.Property)
|
||||
{
|
||||
var property = (PropertyInfo)member;
|
||||
|
||||
sb.Append($"---\n");
|
||||
sb.Append($"-- ");
|
||||
|
||||
var name = property.Name;
|
||||
|
||||
var returnName = ConvertTypeName(property.PropertyType.Name);
|
||||
|
||||
if (property.GetGetMethod().IsStatic)
|
||||
name = type.Name + "." + property.Name;
|
||||
|
||||
sb.Append(name);
|
||||
sb.Append($", Field of type {returnName}\n");
|
||||
sb.Append($"-- @realm shared\n");
|
||||
sb.Append($"-- @{returnName} {name}\n");
|
||||
|
||||
sb.Append("\n");
|
||||
}
|
||||
}
|
||||
|
||||
File.WriteAllText("luadocs.lua", sb.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user