Use MarkDown tables in trait documentation export.

This commit is contained in:
Matthias Mailänder
2021-05-09 12:51:11 +02:00
committed by Paul Chote
parent 5bf4daddec
commit eba266aecf
3 changed files with 44 additions and 41 deletions

View File

@@ -70,17 +70,20 @@ namespace OpenRA.Mods.Common.UtilityCommands
var name = t.GetCustomAttributes<ScriptGlobalAttribute>(true).First().Name; var name = t.GetCustomAttributes<ScriptGlobalAttribute>(true).First().Name;
var members = ScriptMemberWrapper.WrappableMembers(t); var members = ScriptMemberWrapper.WrappableMembers(t);
Console.WriteLine();
Console.WriteLine("### " + name); Console.WriteLine("### " + name);
Console.WriteLine("<table>"); Console.WriteLine();
Console.WriteLine("| Function | Description |");
Console.WriteLine("|---------:|-------------|");
foreach (var m in members.OrderBy(m => m.Name)) foreach (var m in members.OrderBy(m => m.Name))
{ {
var desc = m.HasAttribute<DescAttribute>() ? m.GetCustomAttributes<DescAttribute>(true).First().Lines.JoinWith("\n") : ""; var desc = m.HasAttribute<DescAttribute>() ? m.GetCustomAttributes<DescAttribute>(true).First().Lines.JoinWith("<br />") : "";
Console.WriteLine($"<tr><td align=\"right\" width=\"50%\"><strong>{m.LuaDocString()}</strong></td><td>{desc}</td></tr>"); Console.WriteLine($"| **{m.LuaDocString()}** | {desc} |");
} }
Console.WriteLine("</table>");
} }
Console.WriteLine();
Console.WriteLine("## Actor Properties / Commands"); Console.WriteLine("## Actor Properties / Commands");
var actorCategories = utility.ModData.ObjectCreator.GetTypesImplementing<ScriptActorProperties>().SelectMany(cg => var actorCategories = utility.ModData.ObjectCreator.GetTypesImplementing<ScriptActorProperties>().SelectMany(cg =>
@@ -94,8 +97,11 @@ namespace OpenRA.Mods.Common.UtilityCommands
foreach (var kv in actorCategories) foreach (var kv in actorCategories)
{ {
Console.WriteLine();
Console.WriteLine("### " + kv.Key); Console.WriteLine("### " + kv.Key);
Console.WriteLine("<table>"); Console.WriteLine();
Console.WriteLine("| Function | Description |");
Console.WriteLine("|---------:|-------------|");
foreach (var property in kv.OrderBy(p => p.Item2.Name)) foreach (var property in kv.OrderBy(p => p.Item2.Name))
{ {
@@ -105,28 +111,28 @@ namespace OpenRA.Mods.Common.UtilityCommands
var hasRequires = required.Any(); var hasRequires = required.Any();
var isActivity = mi.HasAttribute<ScriptActorPropertyActivityAttribute>(); var isActivity = mi.HasAttribute<ScriptActorPropertyActivityAttribute>();
Console.WriteLine("<tr><td width=\"50%\" align=\"right\"><strong>{0}</strong>", mi.LuaDocString()); Console.Write($"| **{mi.LuaDocString()}**");
if (isActivity) if (isActivity)
Console.WriteLine("<br /><em>Queued Activity</em>"); Console.Write("<br />*Queued Activity*");
Console.WriteLine("</td><td>"); Console.Write(" | ");
if (hasDesc) if (hasDesc)
Console.WriteLine(mi.GetCustomAttributes<DescAttribute>(false).First().Lines.JoinWith("\n")); Console.Write(mi.GetCustomAttributes<DescAttribute>(false).First().Lines.JoinWith("<br />"));
if (hasDesc && hasRequires) if (hasDesc && hasRequires)
Console.WriteLine("<br />"); Console.Write("<br />");
if (hasRequires) if (hasRequires)
Console.WriteLine($"<b>Requires {(required.Length == 1 ? "Trait" : "Traits")}:</b> {required.JoinWith(", ")}"); Console.Write($"**Requires {(required.Length == 1 ? "Trait" : "Traits")}:** {required.JoinWith(", ")}");
Console.WriteLine("</td></tr>"); Console.WriteLine(" |");
} }
Console.WriteLine("</table>");
} }
Console.WriteLine();
Console.WriteLine("## Player Properties / Commands"); Console.WriteLine("## Player Properties / Commands");
var playerCategories = utility.ModData.ObjectCreator.GetTypesImplementing<ScriptPlayerProperties>().SelectMany(cg => var playerCategories = utility.ModData.ObjectCreator.GetTypesImplementing<ScriptPlayerProperties>().SelectMany(cg =>
@@ -140,8 +146,11 @@ namespace OpenRA.Mods.Common.UtilityCommands
foreach (var kv in playerCategories) foreach (var kv in playerCategories)
{ {
Console.WriteLine();
Console.WriteLine("### " + kv.Key); Console.WriteLine("### " + kv.Key);
Console.WriteLine("<table>"); Console.WriteLine();
Console.WriteLine("| Function | Description |");
Console.WriteLine("|---------:|-------------|");
foreach (var property in kv.OrderBy(p => p.Item2.Name)) foreach (var property in kv.OrderBy(p => p.Item2.Name))
{ {
@@ -151,26 +160,26 @@ namespace OpenRA.Mods.Common.UtilityCommands
var hasRequires = required.Any(); var hasRequires = required.Any();
var isActivity = mi.HasAttribute<ScriptActorPropertyActivityAttribute>(); var isActivity = mi.HasAttribute<ScriptActorPropertyActivityAttribute>();
Console.WriteLine("<tr><td width=\"50%\" align=\"right\"><strong>{0}</strong>", mi.LuaDocString()); Console.Write($"| **{mi.LuaDocString()}**");
if (isActivity) if (isActivity)
Console.WriteLine("<br /><em>Queued Activity</em>"); Console.Write("<br />*Queued Activity*");
Console.WriteLine("</td><td>"); Console.Write(" | ");
if (hasDesc) if (hasDesc)
Console.WriteLine(mi.GetCustomAttributes<DescAttribute>(false).First().Lines.JoinWith("\n")); Console.Write(mi.GetCustomAttributes<DescAttribute>(false).First().Lines.JoinWith("<br />"));
if (hasDesc && hasRequires) if (hasDesc && hasRequires)
Console.WriteLine("<br />"); Console.Write("<br />");
if (hasRequires) if (hasRequires)
Console.WriteLine($"<b>Requires {(required.Length == 1 ? "Trait" : "Traits")}:</b> {required.JoinWith(", ")}"); Console.Write($"**Requires {(required.Length == 1 ? "Trait" : "Traits")}:** {required.JoinWith(", ")}");
Console.WriteLine("</td></tr>"); Console.WriteLine(" |");
} }
Console.WriteLine("</table>"); Console.WriteLine();
} }
} }

View File

@@ -85,23 +85,21 @@ namespace OpenRA.Mods.Common.UtilityCommands
var infos = FieldLoader.GetTypeLoadInfo(t); var infos = FieldLoader.GetTypeLoadInfo(t);
if (!infos.Any()) if (!infos.Any())
continue; continue;
doc.AppendLine("<table>"); doc.AppendLine();
doc.AppendLine("<tr><th>Property</th><th>Default Value</th><th>Type</th><th>Description</th></tr>"); doc.AppendLine("| Property | Default Value | Type | Description |");
doc.AppendLine("| -------- | --------------| ---- | ----------- |");
var liveTraitInfo = Game.ModData.ObjectCreator.CreateBasic(t); var liveTraitInfo = Game.ModData.ObjectCreator.CreateBasic(t);
foreach (var info in infos) foreach (var info in infos)
{ {
var fieldDescLines = info.Field.GetCustomAttributes<DescAttribute>(true).SelectMany(d => d.Lines); var fieldDescLines = info.Field.GetCustomAttributes<DescAttribute>(true).SelectMany(d => d.Lines);
var fieldType = Util.FriendlyTypeName(info.Field.FieldType); var fieldType = Util.FriendlyTypeName(info.Field.FieldType);
var loadInfo = info.Field.GetCustomAttributes<FieldLoader.SerializeAttribute>(true).FirstOrDefault(); var loadInfo = info.Field.GetCustomAttributes<FieldLoader.SerializeAttribute>(true).FirstOrDefault();
var defaultValue = loadInfo != null && loadInfo.Required ? "<em>(required)</em>" : FieldSaver.SaveField(liveTraitInfo, info.Field.Name).Value.Value; var defaultValue = loadInfo != null && loadInfo.Required ? "*(required)*" : FieldSaver.SaveField(liveTraitInfo, info.Field.Name).Value.Value;
doc.Append($"<tr><td>{info.YamlName}</td><td>{defaultValue}</td><td>{fieldType}</td>"); doc.Append($"| {info.YamlName} | {defaultValue} | {fieldType} | ");
doc.Append("<td>");
foreach (var line in fieldDescLines) foreach (var line in fieldDescLines)
doc.Append(line + " "); doc.Append(line + " ");
doc.AppendLine("</td></tr>"); doc.AppendLine("|");
} }
doc.AppendLine("</table>");
} }
Console.Write(doc.ToString()); Console.Write(doc.ToString());

View File

@@ -78,8 +78,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
if (!infos.Any()) if (!infos.Any())
continue; continue;
doc.AppendLine("<table>"); doc.AppendLine();
doc.AppendLine("<tr><th>Property</th><th>Default Value</th><th>Type</th><th>Description</th></tr>"); doc.AppendLine("| Property | Default Value | Type | Description |");
doc.AppendLine("| -------- | --------------| ---- | ----------- |");
var liveTraitInfo = t == typeof(WeaponInfo) ? null : objectCreator.CreateBasic(t); var liveTraitInfo = t == typeof(WeaponInfo) ? null : objectCreator.CreateBasic(t);
foreach (var info in infos) foreach (var info in infos)
@@ -87,16 +88,11 @@ namespace OpenRA.Mods.Common.UtilityCommands
var fieldDescLines = info.Field.GetCustomAttributes<DescAttribute>(true).SelectMany(d => d.Lines); var fieldDescLines = info.Field.GetCustomAttributes<DescAttribute>(true).SelectMany(d => d.Lines);
var fieldType = Util.FriendlyTypeName(info.Field.FieldType); var fieldType = Util.FriendlyTypeName(info.Field.FieldType);
var defaultValue = liveTraitInfo == null ? "" : FieldSaver.SaveField(liveTraitInfo, info.Field.Name).Value.Value; var defaultValue = liveTraitInfo == null ? "" : FieldSaver.SaveField(liveTraitInfo, info.Field.Name).Value.Value;
doc.Append($"<tr><td>{info.YamlName}</td><td>{defaultValue}</td><td>{fieldType}</td>"); doc.Append($"| {info.YamlName} | {defaultValue} | {fieldType} | ");
doc.Append("<td>");
foreach (var line in fieldDescLines) foreach (var line in fieldDescLines)
doc.Append(line + " "); doc.Append(line + " ");
doc.AppendLine("|");
doc.AppendLine("</td></tr>");
} }
doc.AppendLine("</table>");
} }
Console.Write(doc.ToString()); Console.Write(doc.ToString());