Write trait requirements in documentation.
This commit is contained in:
@@ -323,6 +323,25 @@ namespace OpenRA.Utility
|
|||||||
foreach (var line in traitDescLines)
|
foreach (var line in traitDescLines)
|
||||||
doc.AppendLine(line);
|
doc.AppendLine(line);
|
||||||
|
|
||||||
|
var requires = RequiredTraitTypes(t);
|
||||||
|
var reqCount = requires.Length;
|
||||||
|
if (reqCount > 0)
|
||||||
|
{
|
||||||
|
if (t.HasAttribute<DescAttribute>())
|
||||||
|
doc.AppendLine("\n");
|
||||||
|
|
||||||
|
doc.Append("Requires trait{0}: ".F(reqCount > 1 ? "s" : ""));
|
||||||
|
|
||||||
|
var i = 0;
|
||||||
|
foreach (var require in requires)
|
||||||
|
{
|
||||||
|
var n = require.Name;
|
||||||
|
var name = n.EndsWith("Info") ? n.Remove(n.Length - 4, 4) : n;
|
||||||
|
doc.Append("`{0}`{1}".F(name, i + 1 == reqCount ? ".\n" : ", "));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var infos = FieldLoader.GetTypeLoadInfo(t);
|
var infos = FieldLoader.GetTypeLoadInfo(t);
|
||||||
if (!infos.Any())
|
if (!infos.Any())
|
||||||
continue;
|
continue;
|
||||||
@@ -362,6 +381,16 @@ namespace OpenRA.Utility
|
|||||||
.ToArray();
|
.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Type[] RequiredTraitTypes(Type t)
|
||||||
|
{
|
||||||
|
return t.GetInterfaces()
|
||||||
|
.Where(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(Requires<>))
|
||||||
|
.SelectMany(i => i.GetGenericArguments())
|
||||||
|
.Where(i => !i.IsInterface && !t.IsSubclassOf(i))
|
||||||
|
.OrderBy(i => i.Name)
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
[Desc("MOD", "Generate Lua API documentation in MarkDown format.")]
|
[Desc("MOD", "Generate Lua API documentation in MarkDown format.")]
|
||||||
public static void ExtractLuaDocs(string[] args)
|
public static void ExtractLuaDocs(string[] args)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user