コード例 #1
0
        public int Generate(IArticleSaver saver)
        {
            var articleCount = 0;

            foreach (var package in _lib.Packages)
            {
                articleCount += ProcessModule(package, saver);
            }

            return(articleCount);
        }
コード例 #2
0
        public int Generate(IArticleSaver saver)
        {
            _logger?.LogInformation($"Processing assemblies in {_srcPath}...");
            LoadLibraryTypes();

            var dest         = Directory.GetCurrentDirectory();
            int articleCount = 0;

            foreach (var g in _types.GroupBy(x => x.Namespace).OrderBy(x => x.Key))
            {
                string sectionName = g.Key + " namespace";

                foreach (var item in g.OrderBy(x => x.Name).Distinct(new MarkdownableTypeEqualityComparer()))
                {
                    SetLinks(item, _types, _aistantSettings.Kb, _aistantSettings.Section.Uri, _aistantSettings.Team);

                    string itemName = item.GetNameWithKind();

                    string itemString  = item.ToString();
                    string itemSummary = item.GetSummary();

                    bool ok = saver.SaveArticle(new ArticleSaveModel
                    {
                        SectionTitle   = sectionName,
                        SectionUri     = sectionName.MakeUriFromString(),
                        ArticleTitle   = itemName,
                        ArticleUri     = itemName.MakeUriFromString(),
                        ArticleBody    = itemString,
                        ArticleExcerpt = itemSummary
                    });

                    if (ok)
                    {
                        articleCount++;
                    }
                }

                articleCount++;
            }

            return(articleCount);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: onlyutkarsh/aistdoc
        static void Main(string[] args)
        {
            System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
            Console.WriteLine($"aistdoc utility {assembly.GetName().Version.ToString()} (c) Aistant 2018");
            Console.WriteLine("Current folder: " + Directory.GetCurrentDirectory());

            var loggerFactory = new LoggerFactory();
            var logger        = loggerFactory.AddConsole()
                                .CreateLogger("AistDoc");


            var startTime = DateTime.UtcNow;

            try {
                var dest = Directory.GetCurrentDirectory();

                var result = ReadArgs(args);
                if (!result)
                {
                    return;
                }

                var builder = new ConfigurationBuilder()
                              .SetBasePath(Directory.GetCurrentDirectory());

                if (string.IsNullOrEmpty(_configFilePath))
                {
                    GenerateDefaultConfig("aistdoc.json", "cs");
                    throw new FileNotFoundException("Config file is required");
                }

                Console.WriteLine($"Reading config: {_configFilePath} ...");
                try {
                    builder.AddJsonFile(_configFilePath);
                }
                catch (FileNotFoundException ex) {
                    GenerateDefaultConfig(_configFilePath, "cs");
                    throw ex;
                }

                var configuration = builder.Build();

                var aistantSettings = configuration.GetSection("aistant").Get <AistantSettings>();

                IArticleSaver saver = null;
                if (!string.IsNullOrEmpty(_outputPath))
                {
                    saver = new FileSaver(_outputPath, logger);
                }
                else
                {
                    saver = new AistantSaver(aistantSettings, logger);
                }

                var mode = configuration["source:mode"].ToString();

                IDocGenerator generator;
                if (mode == "typescript")
                {
                    generator = new TypeScriptDocGenerator(configuration);
                }
                else
                {
                    generator = new CSharpDocGenerator(configuration, logger, _outputPath);
                }

                var articleCount = generator.Generate(saver);

                logger.LogInformation("Done! " + $"{articleCount} documents added or updated");
            }
            catch (Exception ex) {
                logger.LogCritical(ex.Message);
            }

            logger.LogInformation("Time Elapsed : " + (DateTime.UtcNow - startTime));
            Thread.Sleep(100);
        }
コード例 #4
0
        private int ProcessModule(ITypeScriptModule module, IArticleSaver saver, string parentSectionUrl = null)
        {
            var articleCount   = 0;
            var sectionName    = module.BeautifulName;
            var sectionUrl     = sectionName.MakeUriFromString();
            var fullSectionUrl = (parentSectionUrl != null) ? parentSectionUrl.CombineWithUri(sectionUrl) : sectionUrl;

            var enums      = module.Enumerations.Where(e => e.IsExported).ToList();
            var classes    = module.Classes.Where(c => c.IsExported).ToList();
            var interfaces = module.Interfaces.Where(i => i.IsExported).ToList();
            var functions  = module.Functions.Where(f => f.IsExported).ToList();
            var variables  = module.Variables.Where(v => v.IsExported).ToList();
            var nspaces    = module.Namespaces.Where(n => n.IsExported).ToList();

            if (enums.Any() || classes.Any() || interfaces.Any() || functions.Any() || variables.Any())
            {
                var parentSection = new ArticleSaveModel
                {
                    SectionUri     = parentSectionUrl,
                    ArticleTitle   = sectionName,
                    ArticleUri     = sectionUrl,
                    ArticleExcerpt = module.Comment?.ShortText,
                    ArticleBody    = module.Comment?.ShortText ?? "",
                    IsSection      = true
                };

                //Create section for package/namespace
                if (saver.SaveArticle(parentSection))
                {
                    articleCount++;
                }

                foreach (var nspace in nspaces)
                {
                    articleCount += ProcessModule(nspace, saver, fullSectionUrl);
                }

                if (enums.Any())
                {
                    var section = new ArticleSaveModel
                    {
                        SectionTitle = sectionName,
                        SectionUri   = fullSectionUrl,
                        ArticleTitle = "Enumerations",
                        ArticleUri   = "enumerations",
                        IsSection    = true
                    };

                    //Create section for package/namespace
                    if (saver.SaveArticle(section))
                    {
                        articleCount++;
                    }

                    //Processing Enumerations
                    foreach (var @enum in enums)
                    {
                        var itemName    = @enum.BeautifulName;
                        var itemSummary = @enum.Comment?.ShortText;
                        var itemContent = BuildContent(@enum);

                        var articleSaveModel = new ArticleSaveModel
                        {
                            SectionTitle   = section.ArticleTitle,
                            SectionUri     = fullSectionUrl.CombineWithUri(section.ArticleUri),
                            ArticleTitle   = itemName,
                            ArticleUri     = itemName.MakeUriFromString(),
                            ArticleExcerpt = itemSummary,
                            ArticleBody    = itemContent
                        };

                        if (saver.SaveArticle(articleSaveModel))
                        {
                            articleCount++;
                        }
                    }
                }

                if (interfaces.Any())
                {
                    var section = new ArticleSaveModel
                    {
                        SectionTitle = sectionName,
                        SectionUri   = fullSectionUrl,
                        ArticleTitle = "Interfaces",
                        ArticleUri   = "interfaces",
                        IsSection    = true
                    };

                    //Create section for interfaces
                    if (saver.SaveArticle(section))
                    {
                        articleCount++;
                    }


                    //Processing Interfaces
                    foreach (var @interface in interfaces)
                    {
                        var itemName    = @interface.BeautifulName;
                        var itemSummary = @interface.Comment?.ShortText;
                        var itemContent = BuildContent(@interface);

                        var articleSaveModel = new ArticleSaveModel
                        {
                            SectionTitle   = section.ArticleTitle,
                            SectionUri     = fullSectionUrl.CombineWithUri(section.ArticleUri),
                            ArticleTitle   = itemName,
                            ArticleUri     = itemName.MakeUriFromString(),
                            ArticleExcerpt = itemSummary,
                            ArticleBody    = itemContent
                        };

                        if (saver.SaveArticle(articleSaveModel))
                        {
                            articleCount++;
                        }
                    }
                }


                if (classes.Any())
                {
                    var section = new ArticleSaveModel
                    {
                        SectionTitle = sectionName,
                        SectionUri   = fullSectionUrl,
                        ArticleTitle = "Classes",
                        ArticleUri   = "classes",
                        IsSection    = true
                    };

                    //Create section for interfaces
                    if (saver.SaveArticle(section))
                    {
                        articleCount++;
                    }

                    //Processing Classes
                    foreach (var @class in classes)
                    {
                        var itemName    = @class.BeautifulName;
                        var itemSummary = @class.Comment?.ShortText;
                        var itemContent = BuildContent(@class);

                        var articleSaveModel = new ArticleSaveModel
                        {
                            SectionTitle   = section.ArticleTitle,
                            SectionUri     = fullSectionUrl.CombineWithUri(section.ArticleUri),
                            ArticleTitle   = itemName,
                            ArticleUri     = itemName.MakeUriFromString(),
                            ArticleExcerpt = itemSummary,
                            ArticleBody    = itemContent
                        };

                        if (saver.SaveArticle(articleSaveModel))
                        {
                            articleCount++;
                        }
                    }
                }


                if (functions.Any())
                {
                    var articleSaveModel = new ArticleSaveModel
                    {
                        SectionTitle = sectionName,
                        SectionUri   = fullSectionUrl,
                        ArticleTitle = "Functions",
                        ArticleUri   = "functions",
                        ArticleBody  = BuildContent(functions)
                    };

                    if (saver.SaveArticle(articleSaveModel))
                    {
                        articleCount++;
                    }
                }

                if (variables.Any())
                {
                    var articleSaveModel = new ArticleSaveModel
                    {
                        SectionTitle = sectionName,
                        SectionUri   = fullSectionUrl,
                        ArticleTitle = "Variables",
                        ArticleUri   = "Variables",
                        ArticleBody  = BuildContent(variables)
                    };

                    if (saver.SaveArticle(articleSaveModel))
                    {
                        articleCount++;
                    }
                }
            }

            return(articleCount);
        }