Exemplo n.º 1
0
        /// <summary>
        /// Gets the types.
        /// </summary>
        /// <param name="assembly">The assembly.</param>
        /// <param name="NameSpace">The name space.</param>
        private static void GetTypes(Assembly assembly, Models.Namespace NameSpace)
        {
            Console.WriteLine(NameSpace.Name);
            List <Type> types    = new List <Type>();
            List <Type> AllTypes = assembly.GetTypes().ToList();

            types.AddRange(AllTypes.Where((t) => t.Namespace.ToLower() == NameSpace.Name.ToLower()));
            if (types != null)
            {
                types.ForEach((n) =>
                {
                    if (!n.Name.Contains("$"))
                    {
                        if (n.IsInterface)
                        {
                            NameSpace.Interfaces.Add(ConvertToInterface(n));
                        }
                        if (n.IsClass)
                        {
                            NameSpace.Classes.Add(ConvertToClass(n));
                        }
                        if (n.IsEnum)
                        {
                            NameSpace.Enums.Add(ConvertToEnum(n));
                        }
                    }
                });
            }
        }
Exemplo n.º 2
0
        internal static string GetNamespaceDocumentation(Models.Namespace @namespace)
        {
            Console.WriteLine("Reading " + @namespace.Name);
            var    docTitle = string.Format(Title, @namespace.Name);
            string docIndex = string.Empty;
            string docBody  = string.Empty;

            @namespace.Classes.ForEach((c) =>
            {
                Console.WriteLine("Reading " + c.Name);
                docIndex          += string.Format(ClassLink, c.Name, c.Name.ToLower());
                Core.CurrentObject = c;
                docBody           += c.Documentation;
            });

            @namespace.Interfaces.ForEach((i) =>
            {
                Console.WriteLine("Reading " + i.Name);
                docIndex          += string.Format(ClassLink, i.Name, i.Name.ToLower());
                Core.CurrentObject = i;
                docBody           += i.Documentation;
            });

            @namespace.Enums.ForEach((e) =>
            {
                Console.WriteLine("Reading " + e.Name);
                docIndex          += string.Format(ClassLink, e.Name, e.Name.ToLower());
                Core.CurrentObject = e;
                docBody           += string.Format(Templates.DiagramTemplate, e.Name, e.DiagramUrl);
            });

            var topography = string.Format(Templates.DiagramTemplate, @namespace.Name, @namespace.TopographyUrl);

            return(string.Format(
                       Templates.MainTemplate.
                       Replace("[$Topography]", topography).
                       Replace("[$PseudoNamespace]", $"[Pseudo Namespace]({Core.DocumentRoot}/{docTitle.Replace("#", "")})").
                       Replace("[$NavigationUp]", $"[{GetNavigationUpLink(docTitle).Replace("#", "")}]({Core.DocumentRoot}/{GetNavigationUpLink(docTitle).Replace("#", "")}.md)"),
                       docTitle,
                       docIndex,
                       docBody,
                       Core.DocumentRoot
                       ));
        }
        /// <summary>
        /// Maps the topography.
        /// </summary>
        /// <param name="Namespace">The namespace.</param>
        /// <returns></returns>
        internal static string MapTopography(Models.Namespace Namespace)
        {
            string markup = Templates.NamespaceDescriptor;

            markup = markup.Replace(NameElement, Namespace.Name);
            List <string> body = new List <string>();

            Namespace.Classes.ForEach((c) =>
            {
                string item = Templates.ClassDescriptor;
                if (c.Module)
                {
                    item = item.Replace(ProtoTypeElement, "").Replace(StereoTypeElement, string.Format(StereoType, "M", "application", "module "));
                }
                if (c.Static)
                {
                    item = item.Replace(ProtoTypeElement, "").Replace(StereoTypeElement, string.Format(StereoType, "S", "orchid", "static "));
                }
                if (c.Abstract)
                {
                    item = item.Replace(ProtoTypeElement, "abstract ").Replace(StereoTypeElement, "");
                }
                item = item.Replace(TypeElement, "class ").Replace(NameElement, c.Name);
                body.Add(item);
            });
            Namespace.Interfaces.ForEach((i) =>
            {
                string item = Templates.ClassDescriptor;
                item        = item.Replace(TypeElement, "interface ").Replace(NameElement, i.Name).Replace(ProtoTypeElement, "").Replace(StereoTypeElement, "");
                body.Add(item);
            });
            Namespace.Enums.ForEach((e) =>
            {
                string item = Templates.ClassDescriptor;
                item        = item.Replace(TypeElement, "enum ").Replace(NameElement, e.Name).Replace(ProtoTypeElement, "").Replace(StereoTypeElement, "");
                body.Add(item);
            });
            markup = markup.Replace(BodyElement, string.Join(Environment.NewLine, body.ToArray()));
            return(markup);
        }