コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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());
            }
        }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
        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);
            }
        }