private static void WriteTops(Node root, StreamWriter writer, int level = 2) { if (!root.HasNodes) { return; } foreach (var node in root.Children) { string name = Path.GetFileName(node.Path); writer.WriteLine(MarkdownConverter.GetHead(name, level)); if (node.HasSystems) { WriteTableSystem(node.Systems, writer); } if (node.HasComponents) { WriteTableComponent(node.Components, writer); } writer.WriteLine(MarkdownConverter.GetLocalLink(imgArrowUp, context)); if (node.HasNodes) { WriteTops(node, writer, level + 1); } } }
private static void WriteTableComponent(List <string> elements, StreamWriter writer) { writer.WriteLine(MarkdownConverter.GetTableHead( new HeadCell(componentNameTable, AlignmentCell.None), new HeadCell(contextTable, AlignmentCell.Left), new HeadCell(uniqueTable, AlignmentCell.Center), new HeadCell(eventTable, AlignmentCell.Center), new HeadCell(fieldsTable, AlignmentCell.Left), new HeadCell(descriptionTable, AlignmentCell.Left))); foreach (var element in elements) { var component = ParseComponentFile(element); string description = component.Description.Replace("\r\n", "<br/>"); string contexts = component.Contexts.Count > 1 ? MarkdownConverter.ConvertToUnnumaricalList(component.Contexts) : (component.Contexts.FirstOrDefault() ?? imgNegCheckMark); string unique = component.Unique ? imgCheckMark : string.Empty; string ecsEvent = component.Event ? imgCheckMark : string.Empty; string fields = component.Fields.Count > 1 ? MarkdownConverter.ConvertToUnnumaricalList(component.Fields) : (component.Fields.FirstOrDefault() ?? imgFlagMark); writer.WriteLine(MarkdownConverter.GetTableCustomRow(component.Name, contexts, unique, ecsEvent, fields, description)); } writer.WriteLine(MarkdownConverter.GetHorizontalLine()); }
private static void WriteTableSystem(List <string> elements, StreamWriter writer) { List <SystemData> systems = new List <SystemData>(); foreach (var element in elements) { systems.Add(ParseSystemFile(element)); } // system if (systems.Where(x => !x.IsReactive).Count() > 0) { writer.WriteLine(MarkdownConverter.GetTableHead( new HeadCell(systemNameTable, AlignmentCell.None), new HeadCell(typeTable, AlignmentCell.Left), new HeadCell(descriptionTable, AlignmentCell.Left))); foreach (var system in systems.Where(x => !x.IsReactive)) { string description = system.Description.Replace("\r\n", "<br/>"); string types = system.Types.Count > 1 ? MarkdownConverter.ConvertToUnnumaricalList(system.Types) : system.Types.First(); writer.WriteLine(MarkdownConverter.GetTableCustomRow(system.Name, types, description)); } writer.WriteLine(MarkdownConverter.GetHorizontalLine()); } // reactive if (systems.Where(x => x.IsReactive).Count() > 0) { writer.WriteLine(MarkdownConverter.GetTableHead( new HeadCell(reactiveSystemNameTable, AlignmentCell.None), new HeadCell(typeTable, AlignmentCell.Left), new HeadCell(EntityTable, AlignmentCell.Center), new HeadCell(triggerTable, AlignmentCell.Left), new HeadCell(descriptionTable, AlignmentCell.Left))); foreach (var system in systems.Where(x => x.IsReactive)) { string description = system.Description.Replace("\r\n", "<br/>"); string types = system.Types.Count > 1 ? MarkdownConverter.ConvertToUnnumaricalList(system.Types) : (system.Types.FirstOrDefault() ?? imgNegCheckMark); string triggerType = (!string.IsNullOrEmpty(system.Reactive.TriggerType) ? string.Format("{0}:<br/>", system.Reactive.TriggerType) : string.Empty); string triggers = system.Reactive.Triggers.Count > 1 ? MarkdownConverter.ConvertToUnnumaricalList(system.Reactive.Triggers) : (system.Reactive.Triggers.FirstOrDefault() ?? imgNegCheckMark); writer.WriteLine(MarkdownConverter.GetTableCustomRow(system.Name, types, system.Reactive.Entity, triggerType + triggers, description)); } writer.WriteLine(MarkdownConverter.GetHorizontalLine()); } }
private static void WriteContext(Node root, StreamWriter writer, int indent = 0) { if (!root.HasNodes) { return; } foreach (var node in root.Children) { string text = Path.GetFileName(node.Path); writer.WriteLine(MarkdownConverter.GetMarkContext(text, indent)); if (node.HasNodes) { WriteContext(node, writer, indent + 1); } } }
internal static void CreateDocumetation(Node root, string docDirectory) { string projectName = "NeonZuma documentation"; using (var streamWriter = new StreamWriter(Path.Combine(docDirectory, docName), false, Encoding.UTF8)) { // Before context streamWriter.WriteLine(MarkdownConverter.GetHead(projectName, 1)); streamWriter.WriteLine(String.Format(projectDescription, projectName)); streamWriter.WriteLine(); // Context streamWriter.WriteLine(MarkdownConverter.GetHead(context, 2)); WriteContext(root, streamWriter); streamWriter.WriteLine(MarkdownConverter.GetHorizontalLine()); // Parse each top WriteTops(root, streamWriter); } }