示例#1
0
        public DocumentationGenerator Download(DocumentType docType,
                                               string fileName,
                                               VideoForUser video)
        {
            DocumentationGenerator documentGenerator = DocumentationGenerator.Create(_domain, _fontPath, docType, fileName);

            var fields = new List <string> {
                "Отрывок текста"
            };

            if (video.HasAnyTranslation)
            {
                fields.Add("Перевод");
            }
            var tableData = new TableData(fields.Count, false);

            tableData.AddHeader(fields);
            foreach (var sentence in video.Sentences)
            {
                fields = new List <string> {
                    sentence.Item1
                };
                if (video.HasTranslation(sentence))
                {
                    fields.Add(sentence.Item2);
                }
                tableData.AddRow(fields);
            }

            documentGenerator.AddHeader(string.Format("Текст из видео «{0}»", video.Title));
            documentGenerator.AddTable(tableData);

            return(documentGenerator);
        }
示例#2
0
        public void HappyFlow()
        {
            var dg     = new DocumentationGenerator();
            var result = dg.GenerateDocumentation();

            Assert.That(result, Is.Not.Null);
        }
示例#3
0
        public void ShowColumnDocumentation(bool showInTaskbar)
        {
            var documentationGenerator = new DocumentationGenerator(ChooseColumnsTab.ViewInfo.ParentColumn);
            DocumentationViewer documentationViewer = new DocumentationViewer(showInTaskbar);

            documentationViewer.DocumentationHtml = documentationGenerator.GetDocumentationHtmlPage();
            documentationViewer.Show(this);
        }
示例#4
0
文件: SetXml.cs 项目: jujis008/docu
        public void should_load_xml_files_if_names_used()
        {
            var xmlLoader = MockRepository.GenerateMock<IXmlLoader>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, xmlLoader, StubParser, StubWriter, StubResourceManager, StubEventAggregator);

            generator.SetXmlFiles(new[] { "assembly.xml", "assembly2.xml" });

            xmlLoader.AssertWasCalled(x => x.LoadFrom("assembly.xml"));
            xmlLoader.AssertWasCalled(x => x.LoadFrom("assembly2.xml"));
        }
示例#5
0
        public void should_load_assemblies_if_strings_used()
        {
            var assemblyLoader = MockRepository.GenerateMock<IAssemblyLoader>();
            var generator = new DocumentationGenerator(assemblyLoader, StubXmlLoader, StubParser, StubWriter, StubResourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { "assembly.dll", "assembly2.dll" });

            assemblyLoader.AssertWasCalled(x => x.LoadFrom("assembly.dll"));
            assemblyLoader.AssertWasCalled(x => x.LoadFrom("assembly2.dll"));
        }
示例#6
0
文件: SetAssembly.cs 项目: wsky/docu
        public void should_load_assemblies_if_strings_used()
        {
            var assemblyLoader = MockRepository.GenerateMock <IAssemblyLoader>();
            var generator      = new DocumentationGenerator(assemblyLoader, StubXmlLoader, StubParser, StubWriter, StubResourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { "assembly.dll", "assembly2.dll" });

            assemblyLoader.AssertWasCalled(x => x.LoadFrom("assembly.dll"));
            assemblyLoader.AssertWasCalled(x => x.LoadFrom("assembly2.dll"));
        }
示例#7
0
        public void should_not_error_if_it_can_not_find_assemblies_to_doc()
        {
            var resourceManager = MockRepository.GenerateMock<IUntransformableResourceManager>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, StubParser, StubWriter, resourceManager, StubEventAggregator);

            generator.SetOutputPath("output-dir");
            generator.Generate();

            StubWriter.AssertWasNotCalled(x => x.CreatePagesFromDirectory(null, null, null), x => x.Constraints(Is.Anything(), Is.Anything(), Is.Anything()));
        }
示例#8
0
文件: SetXml.cs 项目: wsky/docu
        public void should_load_xml_files_if_names_used()
        {
            var xmlLoader = MockRepository.GenerateMock <IXmlLoader>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, xmlLoader, StubParser, StubWriter, StubResourceManager, StubEventAggregator);

            generator.SetXmlFiles(new[] { "assembly.xml", "assembly2.xml" });

            xmlLoader.AssertWasCalled(x => x.LoadFrom("assembly.xml"));
            xmlLoader.AssertWasCalled(x => x.LoadFrom("assembly2.xml"));
        }
示例#9
0
文件: Generate.cs 项目: wsky/docu
        public void should_not_error_if_it_can_not_find_assemblies_to_doc()
        {
            var resourceManager = MockRepository.GenerateMock <IUntransformableResourceManager>();
            var generator       = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, StubParser, StubWriter, resourceManager, StubEventAggregator);

            generator.SetOutputPath("output-dir");
            generator.Generate();

            StubWriter.AssertWasNotCalled(x => x.CreatePagesFromDirectory(null, null, null), x => x.Constraints(Is.Anything(), Is.Anything(), Is.Anything()));
        }
示例#10
0
        public void should_pass_default_output_path_to_writer_if_not_set()
        {
            var writer = MockRepository.GenerateMock<IBulkPageWriter>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, StubParser, writer, StubResourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { "unimportant_file_path" });
            generator.Generate();

            writer.AssertWasCalled(x => x.CreatePagesFromDirectory(null, null, null),
                                   x => x.Constraints(Is.Anything(), Is.Equal("output"), Is.Anything()));
        }
示例#11
0
文件: SetAssembly.cs 项目: wsky/docu
        public void generate_should_pass_assemblies_to_parser_when_set_directly()
        {
            var parser    = MockRepository.GenerateMock <IAssemblyXmlParser>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, parser, StubWriter, StubResourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { typeof(IAssemblyLoader).Assembly });
            generator.Generate();

            parser.AssertWasCalled(x => x.CreateDocumentModel(null, null),
                                   x => x.Constraints(List.ContainsAll(new[] { typeof(IAssemblyLoader).Assembly }), Is.Anything()));
        }
示例#12
0
文件: SetXml.cs 项目: jujis008/docu
        public void generate_should_pass_assemblies_to_parser_when_set_directly()
        {
            var parser = MockRepository.GenerateMock<IAssemblyXmlParser>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, parser, StubWriter, StubResourceManager, StubEventAggregator);

            generator.SetXmlContent(new[] { "content" });
            generator.Generate();

            parser.AssertWasCalled(x => x.CreateDocumentModel(null, null),
                x => x.Constraints(Is.Anything(), List.ContainsAll(new[] { "content" })));
        }
示例#13
0
        public void should_pass_default_output_path_to_writer_if_not_set()
        {
            var writer    = MockRepository.GenerateMock <IBulkPageWriter>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, StubParser, writer, StubResourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { "unimportant_file_path" });
            generator.Generate();

            writer.AssertWasCalled(x => x.CreatePagesFromDirectory(null, null, null),
                                   x => x.Constraints(Is.Anything(), Is.Equal("output"), Is.Anything()));
        }
示例#14
0
文件: Generate.cs 项目: wsky/docu
        public void should_move_untransformable_resources_to_output_dir()
        {
            var resourceManager = MockRepository.GenerateMock <IUntransformableResourceManager>();
            var generator       = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, StubParser, StubWriter, resourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { "unimportant_file_path" });
            generator.SetOutputPath("output-dir");
            generator.Generate();

            resourceManager.AssertWasCalled(x => x.MoveResources(null, null),
                                            x => x.Constraints(Is.Anything(), Is.Equal("output-dir")));
        }
示例#15
0
        public DocumentationGenerator Download(DocumentType docType, string fileName, ComparisonForUser comparisonForUser)
        {
            string header = comparisonForUser.Title;
            DocumentationGenerator documentGenerator = DocumentationGenerator.Create(_domain, _fontPath, docType, fileName);

            documentGenerator.AddHeader(header, false);
            if (comparisonForUser.HasDescription)
            {
                documentGenerator.AddParagraph(TextFormatter.AppendCharIfNeed(comparisonForUser.Description));
            }
            foreach (ComparisonItemForUser item in comparisonForUser.Items)
            {
                string title = item.Title;
                if (item.HasTranslatedTitle)
                {
                    title += " – " + item.TitleTranslated;
                }
                documentGenerator.AddSubheader(title);
                documentGenerator.AddParagraph(item.GetRuleHeader());
                int ruleNumber = 1;
                foreach (ComparisonRuleForUser rule in item.Rules)
                {
                    string ruleDescription = TextFormatter.AppendCharIfNeed(rule.Description);
                    if (!item.IsOneRule)
                    {
                        ruleDescription = ruleNumber + ". " + ruleDescription;
                        ruleNumber++;
                    }
                    documentGenerator.AddParagraph(ruleDescription);
                    if (EnumerableValidator.IsNotEmpty(rule.Examples))
                    {
                        foreach (ComparisonRuleExampleForUser example in @rule.Examples)
                        {
                            documentGenerator.AddParagraph(example.Example.Source.Text + " – "
                                                           + example.Example.Translation.Text,
                                                           new TextFormat {
                                CountLeftPaddings = 1
                            });
                            if (!string.IsNullOrWhiteSpace(example.Description))
                            {
                                documentGenerator.AddParagraph("Пояснение к примеру: "
                                                               + TextFormatter.AppendCharIfNeed(example.Description),
                                                               new TextFormat {
                                    IsItalic = true, CountLeftPaddings = 1
                                });
                            }
                        }
                    }
                }
            }

            return(documentGenerator);
        }
示例#16
0
        public void set_assemblies_should_fire_event_if_bad_file_found()
        {
            var parser = MockRepository.GenerateMock<IAssemblyXmlParser>();
            var badFileFound = false;

            var generator = new DocumentationGenerator(new AssemblyLoader(), StubXmlLoader, parser, StubWriter, StubResourceManager);
            generator.BadFileEvent += (s, e) => badFileFound = true;

            generator.SetAssemblies(new[] { "docu.pdb" });

            badFileFound.ShouldBeTrue();
        }
示例#17
0
        public void should_move_untransformable_resources_to_output_dir()
        {
            var resourceManager = MockRepository.GenerateMock<IUntransformableResourceManager>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, StubParser, StubWriter, resourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { "unimportant_file_path" });
            generator.SetOutputPath("output-dir");
            generator.Generate();

            resourceManager.AssertWasCalled(x => x.MoveResources(null, null),
                                            x => x.Constraints(Is.Anything(), Is.Equal("output-dir")));
        }
示例#18
0
 internal TemplateDocumentGenerator(ProjectDocumentationModel project,
                                    DocumentationGenerator documentationGenerator,
                                    TemplateModel template, DocumentFileModel document,
                                    string urlBase, DocumentFileModelCollection allDocuments)
 {
     Project            = project;
     Generator          = documentationGenerator;
     Template           = template;
     Document           = document;
     UrlBase            = urlBase;
     DocumentsGenerated = allDocuments;
 }
示例#19
0
 public void TestSetUp()
 {
     this.schemas      = new List <Schema>();
     this.dataServices = new DataServices {
         Schemas = this.schemas
     };
     this.entityFramework = new EntityFramework {
         DataServices = this.dataServices
     };
     this.documentationGenerator = new DocumentationGenerator();
     this.schema = this.GetSchema("microsoft.graph");
 }
 internal TemplateDocumentGenerator(Models.Projects.ProjectDocumentationModel objProject,
                                    DocumentationGenerator objDocumentationGenerator,
                                    TemplateModel objTemplate, DocumentFileModel objDocument,
                                    string strUrlBase,
                                    DocumentFileModelCollection objColAllDocuments)
 {
     Project            = objProject;
     Generator          = objDocumentationGenerator;
     Template           = objTemplate;
     Document           = objDocument;
     UrlBase            = strUrlBase;
     DocumentsGenerated = objColAllDocuments;
 }
示例#21
0
        public void set_assemblies_should_publish_event_if_bad_file_found()
        {
            var ev = MockRepository.GenerateMock<BadFileEvent>();
            var parser = MockRepository.GenerateMock<IAssemblyXmlParser>();

            StubEventAggregator.Stub(x => x.GetEvent<BadFileEvent>())
                .Return(ev);

            var generator = new DocumentationGenerator(new AssemblyLoader(), StubXmlLoader, parser, StubWriter, StubResourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { "docu.pdb" });

            ev.AssertWasCalled(x => x.Publish("docu.pdb"));
        }
示例#22
0
文件: SetAssembly.cs 项目: wsky/docu
        public void set_assemblies_should_publish_event_if_bad_file_found()
        {
            var ev     = MockRepository.GenerateMock <BadFileEvent>();
            var parser = MockRepository.GenerateMock <IAssemblyXmlParser>();

            StubEventAggregator.Stub(x => x.GetEvent <BadFileEvent>())
            .Return(ev);

            var generator = new DocumentationGenerator(new AssemblyLoader(), StubXmlLoader, parser, StubWriter, StubResourceManager, StubEventAggregator);

            generator.SetAssemblies(new[] { "docu.pdb" });

            ev.AssertWasCalled(x => x.Publish("docu.pdb"));
        }
示例#23
0
文件: SetXml.cs 项目: wsky/docu
        public void generate_should_pass_xmls_to_parser_when_set_by_name()
        {
            var parser    = MockRepository.GenerateMock <IAssemblyXmlParser>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, parser, StubWriter, StubResourceManager, StubEventAggregator);

            StubXmlLoader.Stub(x => x.LoadFrom(null))
            .IgnoreArguments()
            .Return("content");

            generator.SetXmlFiles(new[] { "assembly.xml" });
            generator.Generate();

            parser.AssertWasCalled(x => x.CreateDocumentModel(null, null),
                                   x => x.Constraints(Is.Anything(), List.ContainsAll(new[] { "content" })));
        }
示例#24
0
        public void GenerateDocumentationForTagLib()
        {
            var lib = new TagLib();

            lib.Register(new TestGroup());

            //When
            var model  = new DocumentationGenerator().For(lib).BuildModel();
            var result = JsonConvert.SerializeObject(model, Formatting.Indented);


            // Then
            File.WriteAllText("c:/Temp/TagLib.json", result);
            Assert.That(result, Is.Not.Null);
        }
示例#25
0
        public void generate_should_pass_assemblies_to_parser_when_set_by_name()
        {
            var parser = MockRepository.GenerateMock<IAssemblyXmlParser>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, parser, StubWriter, StubResourceManager);

            StubAssemblyLoader.Stub(x => x.LoadFrom(null))
                .IgnoreArguments()
                .Return(typeof(IAssemblyLoader).Assembly);

            generator.SetAssemblies(new[] { "assembly.dll" });
            generator.Generate();

            parser.AssertWasCalled(x => x.CreateDocumentModel(null, null),
                x => x.Constraints(List.ContainsAll(new[] { typeof(IAssemblyLoader).Assembly }), Is.Anything()));
        }
示例#26
0
文件: SetXml.cs 项目: jujis008/docu
        public void generate_should_pass_xmls_to_parser_when_set_by_name()
        {
            var parser = MockRepository.GenerateMock<IAssemblyXmlParser>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, parser, StubWriter, StubResourceManager, StubEventAggregator);

            StubXmlLoader.Stub(x => x.LoadFrom(null))
                .IgnoreArguments()
                .Return("content");

            generator.SetXmlFiles(new[] { "assembly.xml" });
            generator.Generate();

            parser.AssertWasCalled(x => x.CreateDocumentModel(null, null),
                x => x.Constraints(Is.Anything(), List.ContainsAll(new[] { "content" })));
        }
示例#27
0
文件: Generate.cs 项目: wsky/docu
        public void should_pass_document_model_to_writer()
        {
            var writer        = MockRepository.GenerateMock <IBulkPageWriter>();
            var generator     = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, StubParser, writer, StubResourceManager, StubEventAggregator);
            var documentModel = new List <Namespace>();

            StubParser.Stub(x => x.CreateDocumentModel(null, null))
            .IgnoreArguments()
            .Return(documentModel);

            generator.SetAssemblies(new [] { "unimportant_file_path" });
            generator.Generate();

            writer.AssertWasCalled(x => x.CreatePagesFromDirectory(null, null, null),
                                   x => x.Constraints(Is.Anything(), Is.Anything(), Is.Equal(documentModel)));
        }
示例#28
0
        public void should_pass_document_model_to_writer()
        {
            var writer = MockRepository.GenerateMock<IBulkPageWriter>();
            var generator = new DocumentationGenerator(StubAssemblyLoader, StubXmlLoader, StubParser, writer, StubResourceManager, StubEventAggregator);
            var documentModel = new List<Namespace>();

            StubParser.Stub(x => x.CreateDocumentModel(null, null))
                .IgnoreArguments()
                .Return(documentModel);

            generator.SetAssemblies(new []{"unimportant_file_path"});
            generator.Generate();

            writer.AssertWasCalled(x => x.CreatePagesFromDirectory(null, null, null),
                                   x => x.Constraints(Is.Anything(), Is.Anything(), Is.Equal(documentModel)));
        }
示例#29
0
        public byte[] Generate(long languageId, UserLanguages userLanguages)
        {
            var allMaterialsQuery = new AllMaterialsQuery(languageId, userLanguages, _forbiddenSectionsChecker);
            Dictionary <SectionId, List <Tuple <long, string, DateTime> > > tupleBySections =
                allMaterialsQuery.GetDataBySections();

            string keyFromContent = GetKeyFromContent(tupleBySections);
            string zipKey         = "AllMaterials" + "_" + keyFromContent + "_" + userLanguages.From.ShortName + "_"
                                    + userLanguages.To.ShortName + ".zip";

            byte[] result = _cache.Get(zipKey);
            if (result != null)
            {
                return(result);
            }

            foreach (var pairBySection in tupleBySections)
            {
                SectionId sectionId  = pairBySection.Key;
                string    folderName = allMaterialsQuery.GetHeader(sectionId);

                foreach (var tuple in pairBySection.Value)
                {
                    DocumentationGenerator generator = GetGenerator(allMaterialsQuery, sectionId, tuple.Item1,
                                                                    tuple.Item2);
                    if (generator == null)
                    {
                        //TODO: логировать и отсылать мне на почту
                        continue;
                    }

                    Stream fileContent = generator.Generate();
                    if (fileContent == null)
                    {
                        //TODO: логировать и отсылать мне на почту
                        continue;
                    }

                    string entryName = folderName + "/" + generator.FileName;
                    _zipCompressor.AddFileToArchive(entryName, fileContent);
                }
            }

            result = _zipCompressor.GetArchive();
            WriteToCache(zipKey, result);
            return(result);
        }
示例#30
0
        public DocumentationGenerator Download(DocumentType docType,
                                               string fileName,
                                               Dictionary <KnowledgeDataType, List <GeneratedKnowledgeItem> >
                                               generatedItems)
        {
            DocumentationGenerator documentGenerator = DocumentationGenerator.Create(_domain, _fontPath, docType,
                                                                                     fileName);

            var tables = new Dictionary <string, TableData>();

            foreach (KnowledgeDataType knowledgeDataType in generatedItems.Keys)
            {
                var tableData = new TableData(2, true);

                string tableHeader = GetTableHeader(knowledgeDataType);
                if (!string.IsNullOrEmpty(tableHeader))
                {
                    tableData.AddHeader(tableHeader, "Перевод");

                    string subHeader = GetHeader(knowledgeDataType);
                    tables.Add(subHeader, tableData);
                }

                List <GeneratedKnowledgeItem> items = generatedItems[knowledgeDataType];
                foreach (GeneratedKnowledgeItem item in items)
                {
                    var sourceTranslation = (SourceWithTranslation)item.ParsedData;
                    tableData.AddRow(sourceTranslation.Source.Text, sourceTranslation.Translation.Text);
                }
            }

            if (string.IsNullOrEmpty(Header))
            {
                Header = "Генератор знаний";
            }

            documentGenerator.AddHeader(Header, false);
            foreach (var pair in tables)
            {
                documentGenerator.AddHeader(pair.Key);
                documentGenerator.AddTable(pair.Value);
            }

            return(documentGenerator);
        }
        public DocumentationGenerator Download(DocumentType docType,
                                               string fileName,
                                               RepresentationForUser representationForUser)
        {
            DocumentationGenerator documentGenerator = DocumentationGenerator.Create(_domain, _fontPath, docType, fileName);

            var tableData = new TableData(2, true);

            tableData.AddHeader("Слово", "Перевод");
            foreach (RepresentationAreaForUser area in representationForUser.Areas)
            {
                tableData.AddRow(area.Source.Text, area.Translation.Text);
            }

            documentGenerator.AddHeader(string.Format("Визуальный словарь на тему «{0}»", representationForUser.Title));
            documentGenerator.AddTable(tableData);

            return(documentGenerator);
        }
示例#32
0
        /// <summary>
        ///		Gemera la documentación
        /// </summary>
        private void GenerateDocuments()
        {
            if (ValidateData())
            {
                DocumentFileModelCollection objColDocuments;
                ProgramModel objProgram = new ProgramParser().ParseSolution(fnSolution.FileName);

                // Borra el directorio destino
                Bau.Libraries.LibHelper.Files.HelperFiles.KillPath(pthTarget.PathName);
                // Genera la documentación
                objColDocuments = new DocumentationGenerator(GetParametersDocuments(), pthTarget.PathName).Process(objProgram);
                // Muestra la documentación
                txtLog.Text = objColDocuments.Debug(0);
                // Muestra los nodos
                trvNodes.Nodes.Clear();
                ShowDocumentNodes(objColDocuments, null);
                trvNodes.ExpandAll();
            }
        }
示例#33
0
        public DocumentationGenerator Download(DocumentType docType,
                                               string fileName,
                                               List <SourceWithTranslation> elemsWithTranslations)
        {
            DocumentationGenerator documentGenerator = DocumentationGenerator.Create(_domain, _fontPath, docType,
                                                                                     fileName);

            var tableData = new TableData(2, true);

            tableData.AddHeader(TableHeader, "Перевод");
            foreach (SourceWithTranslation elem in elemsWithTranslations)
            {
                tableData.AddRow(elem.Source.Text, elem.Translation.Text);
            }

            documentGenerator.AddHeader(Header);
            documentGenerator.AddTable(tableData);

            return(documentGenerator);
        }
示例#34
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Sharptiles documentation generation");
            if (args.Length != 1 && args.Length != 2)
            {
                throw new ArgumentException("Usage " + ASSEMLBY_NAME +
                                            " <documentation target path> [--json]");
            }
            var json = false;
            var targetPath = args[0];
            if (args.Length == 2 && args[1].Equals("--json"))
            {
                json = true;
            }
            Console.WriteLine($"Generating to {targetPath}");

            var generator = new DocumentationGenerator()
                .For(Scope)
                .AddSpecial(HandleHtmlTags);
//            generator.CopyFiles(targetPath, templatePath);
            try
            {
                if (json)
                {
                    var documentation = generator.BuildModel();
                    var result = JsonConvert.SerializeObject(documentation, Formatting.Indented, new TypeJsonConverter(), new StringEnumConverter());
                    File.WriteAllText(targetPath, result);
                }
                else
                {
                    var documentation = generator.GenerateDocumentation();
                    File.WriteAllText(targetPath, documentation);
                }
            }
            catch (ExceptionWithContext EWC)
            {
                Console.WriteLine(EWC.Message);
                Console.WriteLine(EWC.Context);
            }
            Console.WriteLine("Finished");
        }
        public ActionResult Download(UserLanguages userLanguages, string group, DocumentType type)
        {
            if (UserLanguages.IsInvalid(userLanguages))
            {
                return(RedirectToAction("Index", RouteConfig.VISUAL_DICTIONARIES_CONTROLLER_NAME));
            }
            RepresentationForUser representationForUser = GetRepresentationForUser(userLanguages, group);

            if (representationForUser == null)
            {
                return(RedirectToActionPermanent("Index", RouteConfig.VISUAL_DICTIONARIES_CONTROLLER_NAME));
            }

            var downloader = new VisualDictionaryDownloader(WebSettingsConfig.Instance.DomainWithProtocol,
                                                            CommonConstants.GetFontPath(Server));
            string fileName = string.Format("Визуальный словарь на тему {0}",
                                            representationForUser.Title.ToLowerInvariant());
            DocumentationGenerator documentGenerator = downloader.Download(type, fileName, representationForUser);

            return(File(documentGenerator.Generate(), documentGenerator.ContentType, documentGenerator.FileName));
        }
示例#36
0
        public ActionResult Download(UserLanguages userLanguages, DocumentType type)
        {
            if (IsInvalid(userLanguages))
            {
                return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME));
            }

            List <SourceWithTranslation> words = GetWords(userLanguages);

            string header = WebSettingsConfig.Instance.GetTemplateText(SectionId.PopularWord, PageId.Index,
                                                                       TemplateId.Header);

            var downloader = new PopularWordsDownloader(WebSettingsConfig.Instance.DomainWithProtocol,
                                                        CommonConstants.GetFontPath(Server))
            {
                Header = header
            };
            DocumentationGenerator documentGenerator = downloader.Download(type, header, words);

            return(File(documentGenerator.Generate(), documentGenerator.ContentType, documentGenerator.FileName));
        }
示例#37
0
        public DocumentationGenerator Download(DocumentType docType,
                                               string fileName,
                                               List <SourceWithTranslation> words)
        {
            DocumentationGenerator documentGenerator = DocumentationGenerator.Create(_domain, _fontPath, docType, fileName);

            var tableData = new TableData(2, true);

            tableData.AddHeader("Слово", "Перевод");
            foreach (SourceWithTranslation word in words)
            {
                tableData.AddRow(word.Source.Text, word.Translation.Text);
            }

            if (string.IsNullOrEmpty(Header))
            {
                Header = "Минилекс Гуннемарка";
            }

            documentGenerator.AddHeader(Header);
            documentGenerator.AddTable(tableData);

            return(documentGenerator);
        }
示例#38
0
        void IPropellerModule.Init(LoggerBase log, JsonValue settings, ISettingsSaver saver)
        {
            _log      = log;
            _saver    = saver;
            _settings = ClassifyJson.Deserialize <Settings>(settings) ?? new Settings();

            var validPaths = new List <string>();

            foreach (var path in _settings.Paths)
            {
                if (!Directory.Exists(path))
                {
                    _log.Warn(@"DocGen: Warning: The folder ""{0}"" specified in the settings does not exist. Ignoring path.".Fmt(path));
                }
                else
                {
                    validPaths.Add(path);
                }
            }
            _settings.Paths = validPaths.ToArray();

            saver.SaveSettings(ClassifyJson.Serialize(_settings));

            string copyToPath = null;

            if (_settings.DllTempPath != null)
            {
                // Try to clean up old folders we've created before
                var tempPath = _settings.DllTempPath;
                Directory.CreateDirectory(tempPath);
                foreach (var path in Directory.GetDirectories(tempPath, "docgen-tmp-*"))
                {
                    try { Directory.Delete(path, true); }
                    catch { }
                }

                // Find a new folder to put the DLL files into
                int j = 1;
                copyToPath = Path.Combine(tempPath, "docgen-tmp-" + j);
                while (Directory.Exists(copyToPath))
                {
                    j++;
                    copyToPath = Path.Combine(tempPath, "docgen-tmp-" + j);
                }
                Directory.CreateDirectory(copyToPath);
            }

            _docGen = new DocumentationGenerator(_settings.Paths, _settings.RequireAuthentication ? _settings.UsernamePasswordFile ?? "" : null, copyToPath);
            lock (_log)
            {
                _log.Info("DocGen initialised with {0} assemblies: {1}".Fmt(_docGen.AssembliesLoaded.Count, _docGen.AssembliesLoaded.JoinString(", ")));
                if (_docGen.AssemblyLoadErrors.Count > 0)
                {
                    _log.Warn("{0} assembly load errors:".Fmt(_docGen.AssemblyLoadErrors.Count));
                    foreach (var tuple in _docGen.AssemblyLoadErrors)
                    {
                        _log.Warn("{0} error: {1}".Fmt(tuple.Item1, tuple.Item2));
                    }
                }
            }
        }
示例#39
0
 internal ProgramDocumentationGenerator(DocumentationGenerator objGenerator)
 {
     DocumentationProcessor = objGenerator;
 }
 public void HappyFlow()
 {
     var dg = new DocumentationGenerator();
     var result=dg.GenerateDocumentation();
     Assert.That(result, Is.Not.Null);
 }
示例#41
0
 private IEnumerable <ColumnDescriptor> GetChildColumns(ColumnDescriptor columnDescriptor)
 {
     return(DocumentationGenerator.GetChildColumns(columnDescriptor));
 }
示例#42
0
文件: Program.cs 项目: yeomann/MMM
        public static void Main(string[] args)
        {
#if DEBUG
            args = new[]
            {
                "D:/coding/MMM/src/StEn.MMM/Mql.Mail|D:/coding/MMM/src/StEn.MMM/Mql.Telegram",
                "D:/coding/MMM/doc",
            };
#endif
            if (args.Length < 2)
            {
                Console.WriteLine("Not enough arguments given.");
                Environment.Exit(1);
            }

            var pathToSourcesList = args[0].Split("|");
            var pathToOutput      = args[1];

            foreach (var pathToSources in pathToSourcesList)
            {
                if (!Directory.Exists(pathToSources))
                {
                    Console.WriteLine("Directory to sources does not exist.");
                    Environment.Exit(1);
                }

                if (!Directory.Exists(args[1]))
                {
                    Console.WriteLine("Directory for output does not exist.");
                    Environment.Exit(1);
                }

                // Detect export file
                var dllExportFile = Directory.EnumerateFiles(pathToSources, "*.*", SearchOption.AllDirectories)
                                    .FirstOrDefault(file => file.ToLower().EndsWith("Module.cs".ToLower()));

                // Detect project file
                var projectFile = Directory.EnumerateFiles(pathToSources, "*.*", SearchOption.AllDirectories)
                                  .FirstOrDefault(file => file.ToLower().EndsWith(".csproj".ToLower()));

                var xmlCommentFile = Directory.EnumerateFiles(pathToSources, "*.*", SearchOption.AllDirectories)
                                     .FirstOrDefault(file => file.ToLower().EndsWith($"{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile)}.xml".ToLower()) &&
                                                     file.ToLower().Contains("release"));

                var binaryFile = Directory.EnumerateFiles(pathToSources, "*.*", SearchOption.AllDirectories)
                                 .FirstOrDefault(file => file.ToLower().EndsWith($"{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile)}.dll".ToLower()) &&
                                                 file.ToLower().Contains("release"));

                if (dllExportFile == null)
                {
                    throw new FileNotFoundException($"{nameof(dllExportFile)} in {pathToSources} was not found");
                }

                if (projectFile == null)
                {
                    throw new FileNotFoundException($"{nameof(projectFile)} in {pathToSources} was not found");
                }

                if (xmlCommentFile == null)
                {
                    throw new FileNotFoundException($"{nameof(xmlCommentFile)} in {pathToSources} was not found");
                }

                if (binaryFile == null)
                {
                    throw new FileNotFoundException($"{nameof(binaryFile)} in {pathToSources} was not found");
                }

                // Read exported functions and their properties
                var functionDefinitions = DllExportParser.GetFunctionDefinitionBySourceFile(dllExportFile);

                // Generate the template text
                var templateText = MqlTemplateGenerator.GenerateTemplateText(
                    "Templates/Mql5Basic.template",
                    AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile),
                    AssemblyPropertyParser.GetAssemblyVersionByProjectFile(projectFile),
                    functionDefinitions);

                // Write the MQL template text to output files
                MqlTemplateGenerator.WriteTemplateOutput(
                    $"{pathToOutput}/module_usage/implementation/metatrader5/MQL5/Experts/MMM_Modules/{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile).ToLower()}/{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile)}_{AssemblyPropertyParser.GetAssemblyVersionByProjectFile(projectFile)}.mq5",
                    templateText);
                MqlTemplateGenerator.WriteTemplateOutput(
                    $"{pathToOutput}/module_usage/implementation/metatrader5/MQL5/Experts/MMM_Modules/{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile).ToLower()}/{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile)}_latest.mq5",
                    templateText);

                // Write the online documentation to output files
                var documentationText = DocumentationGenerator.GenerateDocumentationText(
                    xmlCommentFile,
                    binaryFile,
                    AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile),
                    AssemblyPropertyParser.GetAssemblyVersionByProjectFile(projectFile),
                    functionDefinitions);

                DocumentationGenerator.WriteTemplateOutput(
                    $"{pathToOutput}/module_usage/api/{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile).ToLower()}/{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile)}_{AssemblyPropertyParser.GetAssemblyVersionByProjectFile(projectFile)}.md",
                    documentationText);
                DocumentationGenerator.WriteTemplateOutput(
                    $"{pathToOutput}/module_usage/api/{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile).ToLower()}/{AssemblyPropertyParser.GetAssemblyNameByProjectFile(projectFile)}_latest.md",
                    documentationText);
            }
        }