BizHawk/BizHawk.MultiClient/tools/Lua/LuaDocumentation.cs

93 lines
2.3 KiB
C#
Raw Normal View History

using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BizHawk.MultiClient
{
public class LuaDocumentation
{
public List<LibraryFunction> FunctionList = new List<LibraryFunction>();
public void Add(string method_lib, string method_name, System.Reflection.MethodInfo method)
{
LibraryFunction f = new LibraryFunction(method_lib, method_name, method);
FunctionList.Add(f);
}
public void Clear()
{
FunctionList = new List<LibraryFunction>();
}
public void Sort()
{
FunctionList = FunctionList.OrderBy(x => x.library).ThenBy(x => x.name).ToList();
}
public List<string> GetLibraryList()
{
HashSet<string> libs = new HashSet<string>();
foreach (LibraryFunction function in FunctionList)
{
libs.Add(function.library);
}
return libs.ToList();
}
public List<string> GetFunctionsByLibrary(string library)
{
return (from t in FunctionList where t.library == library select t.name).ToList();
}
public class LibraryFunction
{
public LibraryFunction(string method_lib, string method_name, System.Reflection.MethodInfo method)
{
library = method_lib;
name = method_name;
System.Reflection.ParameterInfo[] info = method.GetParameters();
foreach (System.Reflection.ParameterInfo p in info)
{
parameters.Add(p.ToString());
}
return_type = method.ReturnType.ToString();
}
public string library = "";
public string name = "";
public List<string> parameters = new List<string>();
public string return_type = "";
public string ParameterList
{
get
{
StringBuilder list = new StringBuilder();
list.Append('(');
for (int i = 0; i < parameters.Count; i++)
{
string param = parameters[i].Replace("System", "").Replace("Object", "").Replace(" ", "").Replace(".", "").Replace("LuaInterface", "");
list.Append(param);
if (i < parameters.Count - 1)
{
list.Append(',');
}
}
list.Append(')');
return list.ToString();
}
}
public string ReturnType
{
get
{
return return_type.Replace("System.", "").Replace("LuaInterface.", "").ToLower().Trim();
}
}
}
}
}