public async Task EnumerateSolutionsInRepository(RepositoryInfo repository)
        {
            Dictionary <string, Stream?> SolutionStreamTable = await GitHubApi.GitHub.EnumerateFiles(repository.Source, "/", ".sln");

            NotifyStatusUpdated();

            bool IsMainProjectExe = false;

            foreach (KeyValuePair <string, Stream?> Entry in SolutionStreamTable)
            {
                if (Entry.Value != null)
                {
                    string SolutionName   = Path.GetFileNameWithoutExtension(Entry.Key);
                    Stream SolutionStream = Entry.Value;

                    using StreamReader Reader = new(SolutionStream, Encoding.UTF8);
                    SlnExplorer.Solution Solution          = new(SolutionName, Reader);
                    List <ProjectInfo>   LoadedProjectList = new();

                    foreach (SlnExplorer.Project ProjectItem in Solution.ProjectList)
                    {
                        bool IsIgnored = ProjectItem.ProjectType > SlnExplorer.ProjectType.KnownToBeMSBuildFormat;

                        if (!IsIgnored)
                        {
                            byte[]? Content = await GitHubApi.GitHub.DownloadFile(repository.Source, ProjectItem.RelativePath);

                            NotifyStatusUpdated();

                            if (Content != null)
                            {
                                using MemoryStream Stream = new MemoryStream(Content);
                                ProjectItem.LoadDetails(Stream);
                            }

                            ProjectInfo NewProject = new(ProjectList, ProjectItem);
                            ProjectList.Add(NewProject);
                            LoadedProjectList.Add(NewProject);
                        }
                    }

                    if (LoadedProjectList.Count > 0)
                    {
                        SolutionInfo NewSolution = new(SolutionList, repository, Solution, LoadedProjectList);
                        SolutionList.Add(NewSolution);

                        foreach (ProjectInfo Item in NewSolution.ProjectList)
                        {
                            Item.ParentSolution = NewSolution;
                        }

                        repository.SolutionList.Add(NewSolution);

                        IsMainProjectExe |= CheckMainProjectExe(NewSolution);
                    }
                }
            }

            repository.IsMainProjectExe = IsMainProjectExe;
        }
Esempio n. 2
0
 public Interpreter(Program tacnyProgram)
 {
     Contract.Requires(tacnyProgram != null);
     this.tacnyProgram = tacnyProgram;
     solution_list     = new SolutionList();
     //Console.SetOut(System.IO.TextWriter.Null);
 }
Esempio n. 3
0
 public Interpreter(Program tacnyProgram)
 {
     Contract.Requires(tacnyProgram != null);
     this.tacnyProgram = tacnyProgram;
     solution_list = new SolutionList();
     //Console.SetOut(System.IO.TextWriter.Null);
 }
Esempio n. 4
0
        public SolutionListComponent(Guid solutionId, string key, string category)
        {
            if (!string.IsNullOrEmpty(key))
            {
                mifnexsoEntities = new MIFNEXSOEntities();
                try
                {
                    solutionList = mifnexsoEntities.SolutionLists.FirstOrDefault(a => a.SolutionId == solutionId && a.Key == key && a.Category == category);


                    if (solutionList == null)
                    {
                        solutionList            = new SolutionList();
                        solutionList.ListId     = Guid.NewGuid();
                        solutionList.Key        = key;
                        solutionList.SolutionId = solutionId;
                        solutionList.Category   = category;

                        mifnexsoEntities.SolutionLists.AddObject(solutionList);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
Esempio n. 5
0
        public async Task StorageService_SetSolutionList()
        {
            var fileUtils        = new FileUtilities();
            var solutionAnalyzer = new SolutionAnalyzer(new ProjectAnalyzer(fileUtils), fileUtils);
            var solution         = await solutionAnalyzer.AnalyzeSolution(@"C:\VS2015\pp-git\LocationService\LocationService.sln", projectNamesToIgnore : new List <string> {
                "Test"
            });

            var solutionList = new SolutionList {
                solution
            };
            var storage = new StorageService();

            storage.Initialize("1000.01", "UseDevelopmentStorage=true", "solutioncontainer");

            for (var i = 0; i < 20; i++)
            {
                await storage.SetSolutionList(new SolutionConfiguration
                {
                    StorageIdentifier = "LocationService",
                    AreaTags          = SolutionAreaTag.Location | SolutionAreaTag.TimeCapture | SolutionAreaTag.DigitalAssistant
                },
                                              solutionList);
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Create the Dlx grid:
        /// Create the column headers for the grid and chains them
        /// together with the linked list.
        /// </summary>
        private void CreateDlxGrid()
        {
            // reset
            _columnHeaders.Clear();
            _solutionNodes.Clear();
            SolutionList.Clear();

            var primaryColCount = _puzzleSize.ToInt32() * _puzzleSize.ToInt32() * 4;

            // build DLX network
            _columnHeaders[0] = new DlxHeader(0);

            for (var column = 1; column <= primaryColCount; column++)
            {
                _columnHeaders[column] = new DlxHeader(column)
                {
                    Right = null,
                    Left  = _columnHeaders[column - 1]
                };

                // Connect the current column to the previous column.
                _columnHeaders[column - 1].Right = _columnHeaders[column];
            }

            // Connect last primary column to the root node.
            _columnHeaders[primaryColCount].Right = _columnHeaders[0];
            _columnHeaders[0].Left = _columnHeaders[primaryColCount];
        }
Esempio n. 7
0
        /// <summary>
        /// Create a puzzle solution out of the Dlx result.
        /// </summary>
        /// <param name="rows">The remaining Dlx nodes containing the solution values.</param>
        private void SolutionFound(IEnumerable <DlxNode> rows)
        {
            var size        = _puzzleSize.ToInt32();
            var newSolution = new Dictionary <PuzzleCoordinate, int>();

            foreach (var rowNode in rows)
            {
                if (rowNode != null)
                {
                    var value = rowNode.Coordinate.Row - 1;
                    var digit = value % size + 1;
                    value /= size;
                    var col = value % size;
                    value /= size;
                    var row = value % size;

                    var coord = new PuzzleCoordinate(row, col);
                    newSolution[coord] = digit;
                }
            }

            var solvedPuzzle = new Puzzle(_puzzleSize);

            foreach (var coord in newSolution.Keys.OrderBy(k => k))
            {
                solvedPuzzle[coord] = Convert.ToByte(newSolution[coord]);
            }

            SolutionList.Add(solvedPuzzle);
        }
Esempio n. 8
0
 private async Task StoreResults(SolutionConfiguration solutionConfiguration, SolutionList solutionList)
 {
     try
     {
         await _storageService.SetSolutionList(solutionConfiguration, solutionList);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Esempio n. 9
0
        private void ExecuteSolve(object p)
        {
            string word = Model.Solve();

            if (word != null)
            {
                char[] conundrum = new char[Model.cLetterCount];

                for (int index = 0; index < Model.cLetterCount; ++index)
                {
                    conundrum[index] = Model.Conundrum[index][0];
                }

                Solution = word;
                SolutionList.Add(new ConundrumItem(new string(conundrum), word));
            }
        }
Esempio n. 10
0
        private async Task <SolutionList> AnalyzeSolutions(SolutionConfiguration solutionConfiguration)
        {
            var tasks = new List <Task <Solution> >();

            foreach (var solutionInformation in solutionConfiguration.Solutions)
            {
                var solutionFile = Path.Combine(solutionConfiguration.RootFolder, solutionInformation.SolutionFile);
                tasks.Add(_solutionAnalyzer.AnalyzeSolution(solutionFile, solutionInformation.ProjectReferencesToIgnore, solutionInformation.ProjectsToIgnore));
            }

            var results = await Task.WhenAll(tasks);

            var retVal = new SolutionList();

            retVal.AddRange(results);
            return(retVal);
        }
Esempio n. 11
0
        /// <summary>
        /// This will return the list side menu from Solution to Configuration
        /// </summary>
        /// <returns></returns>
        public MDTTransactionInfo GetSideMenu(int UserID)
        {
            MDTTransactionInfo         mdt           = new MDTTransactionInfo();
            IEnumerable <SolutionList> solutionLists = null;
            SolutionList        solutionList         = null;
            List <SqlParameter> prm    = new List <SqlParameter>();
            SqlParameter        Status = new SqlParameter("@Status", 0);

            Status.Direction = ParameterDirection.Output;
            prm.Add(Status);
            int       StatusValue = 0;
            DataTable dt          = DatabaseSettings.GetDataSet("sp_GetSolutions", out StatusValue, prm).Tables[0];

            if (StatusValue == 1)
            {
                if (dt.Rows.Count > 0)
                {
                    solutionLists = from d in dt.AsEnumerable()
                                    select new SolutionList
                    {
                        SOLUTION_ID   = d.Field <int>("SOLUTION_ID"),
                        SOLUTION_NAME = d.Field <string>("SOLUTION_NAME"),
                        Packages      = GetPackageList(d.Field <int>("SOLUTION_ID"), UserID)
                    };

                    //solutionLists = new List<SolutionList>();
                    //foreach (DataRow row in dt.Rows)
                    //{
                    //    solutionList = new SolutionList();
                    //    solutionList.SOLUTION_ID = Convert.ToInt32(row["SOLUTION_ID"]);
                    //    solutionList.SOLUTION_NAME = row["SOLUTION_NAME"].ToString();
                    //    if (Convert.ToInt32(row["SOLUTION_ID"]) > 0)
                    //    {
                    //        solutionList.Packages = GetPackageList(Convert.ToInt32(row["SOLUTION_ID"]), UserID);
                    //    }

                    //    solutionLists.Add(solutionList);
                    //}
                }
            }
            mdt = DatabaseSettings.GetTransObject(solutionLists, StatusValue, "Record Found", dt);
            return(mdt);
        }
        public async Task EnumerateSolutions()
        {
            foreach (RepositoryInfo Repository in RepositoryList)
            {
                if (Repository.IsChecked)
                {
                    continue;
                }

                List <SolutionInfo> SolutionToRemoveList = new();
                foreach (SolutionInfo Item in SolutionList)
                {
                    if (Item.ParentRepository == Repository)
                    {
                        SolutionToRemoveList.Add(Item);
                    }
                }

                List <ProjectInfo> ProjectToRemoveList = new();
                foreach (ProjectInfo Item in ProjectList)
                {
                    if (Item.ParentSolution.ParentRepository == Repository)
                    {
                        ProjectToRemoveList.Add(Item);
                    }
                }

                foreach (SolutionInfo Item in SolutionToRemoveList)
                {
                    SolutionList.Remove(Item);
                }

                foreach (ProjectInfo Item in ProjectToRemoveList)
                {
                    ProjectList.Remove(Item);
                }

                await EnumerateSolutionsInRepository(Repository);
            }
        }
Esempio n. 13
0
    private void AddFunc()
    {
        SolutionList pl = new SolutionList();

        pl.title      = txt_title.Text;
        pl.img        = txt_img.Text;
        pl.mainstyle  = txt_mainstyle.Text;
        pl.memo       = txt_memo.Text;
        pl.pagetype   = ddl_pagetype.SelectedValue;
        pl.titlestyle = txt_titlestyle.Text;
        pl.city       = ddl_city.SelectedValue;


        string jpath            = @"\json\SolutionList.json";
        List <SolutionList> pll = GetJsonToObject <List <SolutionList> >(jpath);

        pl.id = pll.Count + 1;
        pll.Add(pl);
        //保存修改
        string s1 = JsonSerializer <List <SolutionList> >(pll);

        Write(CurrentPath + "\\" + jpath, s1);

        Product product = new Product();

        product.id = pll.Count;
        string jpath2 = @"\json\Solutions\Solution" + product.id + ".json";

        product.date    = DateTime.Now.ToLongDateString();
        product.content = txt_content.Text;
        string s2 = JsonSerializer <List <Product> >(new List <Product>()
        {
            product
        });

        Write(CurrentPath + "\\" + jpath2, s2);
        ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>successCallback('添加成功!');</script>");
        //Alert("添加成功!");
    }
Esempio n. 14
0
        private async void SolutionListTreeViewService_ActionPresentBlobs(object sender, ActionPresentBlobsEventArgs e)
        {
            var tasks = new List <Task <SolutionList> >();

            foreach (var blobName in e.BlobNames)
            {
                tasks.Add(_applicationStorageService.GetSolutionList(blobName));
            }

            var solutionLists = await Task.WhenAll(tasks);

            var combinedSolutionList = new SolutionList();

            //Todo: log instances that are not of type Solution
            combinedSolutionList.AddRange(solutionLists.SelectMany(s => s).OfType <Solution>());

            _html = await _htmlRenderer.RenderToString(_renderingOptionsTreeViewService.GetRenderProperties(), combinedSolutionList, "Third party dependencies", "Third party dependencies");

            _synchronizationContext.Send(new SendOrPostCallback(o =>
            {
                var htmlToRender         = (string)o;
                _webBrowser.DocumentText = htmlToRender;
            }), _html);
        }
        public async Task <string> Render(SolutionConfiguration solutionConfiguration, SolutionList solutionList)
        {
            var renderProperties = solutionConfiguration.RenderProperties;
            var outputPath       = solutionConfiguration.OutputPath;
            var indexFileName    = solutionConfiguration.IndexFileName;
            var titleText        = !string.IsNullOrWhiteSpace(solutionConfiguration.PageTitle) ? solutionConfiguration.PageTitle : "Third party dependencies";
            var headerText       = !string.IsNullOrWhiteSpace(solutionConfiguration.HeaderText) ? solutionConfiguration.HeaderText : "Third party dependencies";

            return(await Render(renderProperties, solutionList, titleText, headerText, outputPath, indexFileName));
        }
    private void AddFunc()
    {
        SolutionList pl = new SolutionList();
        pl.title = txt_title.Text;
        pl.img = txt_img.Text;
        pl.mainstyle = txt_mainstyle.Text;
        pl.memo = txt_memo.Text;
        pl.pagetype = ddl_pagetype.SelectedValue;
        pl.titlestyle = txt_titlestyle.Text;
        pl.city = ddl_city.SelectedValue;

        string jpath = @"\json\SolutionList.json";
        List<SolutionList> pll = GetJsonToObject<List<SolutionList>>(jpath);
        pl.id = pll.Count + 1;
        pll.Add(pl);
        //保存修改
        string s1 = JsonSerializer<List<SolutionList>>(pll);
        Write(CurrentPath + "\\" + jpath, s1);

        Product product = new Product();
        product.id = pll.Count;
        string jpath2 = @"\json\Solutions\Solution" + product.id + ".json";
        product.date = DateTime.Now.ToLongDateString();
        product.content = txt_content.Text;
        string s2 = JsonSerializer<List<Product>>(new List<Product>() { product });
        Write(CurrentPath + "\\" + jpath2, s2);
         ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>successCallback('添加成功!');</script>");
        //Alert("添加成功!");
    }
Esempio n. 17
0
 private async Task Render(SolutionConfiguration solutionConfiguration, SolutionList solutionList)
 {
     await _htmlRenderer.Render(solutionConfiguration, solutionList);
 }
Esempio n. 18
0
 public void Stop()
 {
     RepositoryList.Clear();
     SolutionList.Clear();
     ProjectList.Clear();
 }
Esempio n. 19
0
 private bool CanSelectAll(object p)
 {
     return((SolutionList != null) && SolutionList.Any(e => !e.IsSelected));
 }
Esempio n. 20
0
        public async Task <bool> SetSolutionList(SolutionConfiguration solutionConfiguration, SolutionList solutionList)
        {
            var identifier = CreateIdentifier(solutionConfiguration);

            if (!string.IsNullOrWhiteSpace(identifier))
            {
                var blockBlob = await GetBlockBlob(identifier);

                if (blockBlob != null && !(await blockBlob.ExistsAsync()))
                {
                    var serializedSolutionList = JsonConvert.SerializeObject(solutionList, Formatting.None);
                    using (var ms = new MemoryStream())
                    {
                        using (var writer = new StreamWriter(ms))
                        {
                            writer.Write(serializedSolutionList);
                            writer.Flush();
                            ms.Seek(0, SeekOrigin.Begin);

                            await blockBlob.UploadFromStreamAsync(ms);

                            Console.WriteLine($"Stored solution results with identifier {identifier}.");
                            return(true);
                        }
                    }
                }
                {
                    var reason = blockBlob != null ? "Block blob already exits." : "Could not get a block blob reference.";
                    Console.WriteLine($"Could not store solution information in backing storage. Reason: {reason}");
                }
            }
            else
            {
                Console.WriteLine("Could not create a valid storage identifier. Results will not be stored in the backing storage.");
            }

            return(false);
        }
Esempio n. 21
0
        private string ScanMemberBody(MemberDecl md)
        {
            Contract.Requires(md != null);
            solution_list.plist.Clear();
            Method m = md as Method;
            if (m == null)
                return null;
            if (m.Body == null)
                return null;
            
            List<IVariable> variables = new List<IVariable>();
            variables.AddRange(m.Ins);
            variables.AddRange(m.Outs);
            SolutionList sol_list = new SolutionList();
            sol_list.AddRange(solution_list.plist);
            if (TacnyOptions.O.ParallelExecution)
            {
                Parallel.ForEach(m.Body.Body, st =>
                    {
                        // register local variables
                        VarDeclStmt vds = st as VarDeclStmt;
                        if (vds != null)
                            variables.AddRange(vds.Locals);

                        UpdateStmt us = st as UpdateStmt;
                        if (us != null)
                        {
                            if (tacnyProgram.IsTacticCall(us))
                            {
                                try
                                {
                                    tacnyProgram.SetCurrent(tacnyProgram.GetTactic(us), md);
                                    // get the resolved variables
                                    List<IVariable> resolved = tacnyProgram.GetResolvedVariables(md);
                                    resolved.AddRange(m.Ins); // add input arguments as resolved variables
                                    Atomic.ResolveTactic(tacnyProgram.GetTactic(us), us, md, tacnyProgram, variables, resolved, ref sol_list);
                                    tacnyProgram.CurrentDebug.Fin();
                                }
                                catch (AggregateException e)
                                {
                                    foreach (var err in e.Data)
                                    {
                                        Printer.Error(err.ToString());
                                    }
                                }
                            }
                        }
                    });
            }
            else
            {
                foreach (var st in m.Body.Body)
                {
                    // register local variables
                    VarDeclStmt vds = st as VarDeclStmt;
                    if (vds != null)
                        variables.AddRange(vds.Locals);

                    UpdateStmt us = st as UpdateStmt;
                    if (us != null)
                    {
                        if (tacnyProgram.IsTacticCall(us))
                        {
                            try
                            {
                                tacnyProgram.SetCurrent(tacnyProgram.GetTactic(us), md);
                                // get the resolved variables
                                List<IVariable> resolved = tacnyProgram.GetResolvedVariables(md);
                                resolved.AddRange(m.Ins); // add input arguments as resolved variables
                                Atomic.ResolveTactic(tacnyProgram.GetTactic(us), us, md, tacnyProgram, variables, resolved, ref sol_list);
                                tacnyProgram.CurrentDebug.Fin();
                            }
                            catch (Exception e)
                            {
                                return e.Message;
                            }
                        }
                    }
                }
            }
            solution_list.AddRange(sol_list.plist);
            return null;
        }
Esempio n. 22
0
        private string ScanMemberBody(MemberDecl md)
        {
            Contract.Requires(md != null);
            solution_list.plist.Clear();
            Method m = md as Method;

            if (m == null)
            {
                return(null);
            }
            if (m.Body == null)
            {
                return(null);
            }

            List <IVariable> variables = new List <IVariable>();

            variables.AddRange(m.Ins);
            variables.AddRange(m.Outs);
            SolutionList sol_list = new SolutionList();

            sol_list.AddRange(solution_list.plist);
            if (TacnyOptions.O.ParallelExecution)
            {
                Parallel.ForEach(m.Body.Body, st =>
                {
                    // register local variables
                    VarDeclStmt vds = st as VarDeclStmt;
                    if (vds != null)
                    {
                        variables.AddRange(vds.Locals);
                    }

                    UpdateStmt us = st as UpdateStmt;
                    if (us != null)
                    {
                        if (tacnyProgram.IsTacticCall(us))
                        {
                            try
                            {
                                tacnyProgram.SetCurrent(tacnyProgram.GetTactic(us), md);
                                // get the resolved variables
                                List <IVariable> resolved = tacnyProgram.GetResolvedVariables(md);
                                resolved.AddRange(m.Ins);     // add input arguments as resolved variables
                                Atomic.ResolveTactic(tacnyProgram.GetTactic(us), us, md, tacnyProgram, variables, resolved, ref sol_list);
                                tacnyProgram.CurrentDebug.Fin();
                            }
                            catch (AggregateException e)
                            {
                                foreach (var err in e.Data)
                                {
                                    Printer.Error(err.ToString());
                                }
                            }
                        }
                    }
                });
            }
            else
            {
                foreach (var st in m.Body.Body)
                {
                    // register local variables
                    VarDeclStmt vds = st as VarDeclStmt;
                    if (vds != null)
                    {
                        variables.AddRange(vds.Locals);
                    }

                    UpdateStmt us = st as UpdateStmt;
                    if (us != null)
                    {
                        if (tacnyProgram.IsTacticCall(us))
                        {
                            try
                            {
                                tacnyProgram.SetCurrent(tacnyProgram.GetTactic(us), md);
                                // get the resolved variables
                                List <IVariable> resolved = tacnyProgram.GetResolvedVariables(md);
                                resolved.AddRange(m.Ins); // add input arguments as resolved variables
                                Atomic.ResolveTactic(tacnyProgram.GetTactic(us), us, md, tacnyProgram, variables, resolved, ref sol_list);
                                tacnyProgram.CurrentDebug.Fin();
                            }
                            catch (Exception e)
                            {
                                return(e.Message);
                            }
                        }
                    }
                }
            }
            solution_list.AddRange(sol_list.plist);
            return(null);
        }
 public async Task <string> RenderToString(RenderProperties renderProperties, SolutionList solutionList, string titleText, string headerText)
 {
     return(await Render(renderProperties, solutionList, titleText, headerText));
 }
        private async Task <string> Render(RenderProperties renderProperties, SolutionList solutionList, string titleText, string headerText, string outputPath = null, string indexFileName = null)
        {
            var createFile = !string.IsNullOrWhiteSpace(outputPath) && !string.IsNullOrWhiteSpace(indexFileName);

            var packageReferences = solutionList.GetPackageReferences(!renderProperties.IncludeDuplicates, !renderProperties.IncludePackageDependencies, "<br>");

            if (packageReferences.Any())
            {
                if (createFile && !Directory.Exists(outputPath))
                {
                    Directory.CreateDirectory(outputPath);
                }

                var tabPos = 0;

                string txt = string.Empty;
                RenderLine(ref txt, tabPos, "<html>");
                RenderLine(ref txt, ++tabPos, "<head>");
                RenderLine(ref txt, ++tabPos, $"<title>{titleText}</title>");

                if (renderProperties.PageAutomaticRefresh)
                {
                    RenderLine(ref txt, tabPos, "<meta http-equiv=\"refresh\" content=\"5\">");
                }

                RenderLine(ref txt, --tabPos, "</head>");
                RenderLine(ref txt, tabPos, "<body style=\"font-family: Verdana, Helvetica, sans-serif;font-size:8pt;\">");
                RenderLine(ref txt, ++tabPos, $"<h1>{headerText}</h1>");

                if (renderProperties.IncludeSolutionInformation)
                {
                    solutionList.ForEach(s =>
                    {
                        RenderLine(ref txt, tabPos, $"<b>{s.Name}</b><br>");
                        RenderLine(ref txt, tabPos, $"<ul>");

                        s.Projects.ForEach(p =>
                        {
                            RenderLine(ref txt, ++tabPos, $"<li>{p.Name}<br></li>");
                        });

                        RenderLine(ref txt, --tabPos, $"</ul>");
                        RenderLine(ref txt, tabPos, $"<br>");
                    });

                    RenderLine(ref txt, tabPos, $"<br>");
                }

                if (createFile)
                {
                    RenderLine(ref txt, tabPos, "<button onclick=\"createMarkdown();\">Markdown to clipboard</button>");
                }

                RenderLine(ref txt, tabPos, $"<table id=\"mainTable\" cellspacing=\"1\" cellpadding=\"3\" style=\"font-size:8pt;\">");

                txt += RenderTableHeaderRow(tabPos, renderProperties);
                txt += await RenderTableRows(tabPos, renderProperties, packageReferences, outputPath, createFile);

                RenderLine(ref txt, tabPos--, "</table>");

                if (createFile)
                {
                    txt += AddMarkdownScript(tabPos);
                    txt += "<textarea type=\"text\" id=\"hiddenInput\" style=\"position:absolute;left:-100px;top:-100px;width:10px;height:10px;\"></textarea>";
                }

                RenderLine(ref txt, tabPos--, "</body>");
                RenderLine(ref txt, tabPos, "</html>");

                if (createFile)
                {
                    var file = Path.Combine(outputPath, indexFileName);
                    await _fileUtilities.CreateFile(file, txt);
                }

                return(txt);
            }

            return(null);
        }