Пример #1
0
 /// <summary>
 /// Registers the file, with description provided. Later, this description is used for <see cref="generateReadmeFiles(aceAuthorNotation, string, int)"/> />
 /// </summary>
 /// <param name="filename">The filename.</param>
 /// <param name="fileDescription">The file description.</param>
 /// <param name="updateExisting">if set to <c>true</c> it will force update if any existing file description was found.</param>
 public void RegisterFile(String filename, String fileDescription, Boolean updateExisting = false)
 {
     lock (addFileDescriptionLock)
     {
         if (updateExisting)
         {
             if (AdditionalFileEntries.ContainsKey(filename))
             {
                 AdditionalFileEntries.Remove(filename);
             }
         }
         if (!AdditionalFileEntries.ContainsKey(filename))
         {
             AdditionalFileEntries.Add(filename, this.GetFileDescription(filename, fileDescription));
         }
         else
         {
             if (!fileDescription.isNullOrEmpty())
             {
                 AdditionalFileEntries[filename] = this.GetFileDescription(filename, fileDescription);
             }
         }
     }
 }
Пример #2
0
        /// <summary>
        /// Generates the folder readme.
        /// </summary>
        /// <param name="notation">The notation.</param>
        /// <param name="builder">The builder.</param>
        /// <param name="directoryStructureDepthLimit">The directory structure depth limit - i.e. until what subdirectory depth is described in the readme file.</param>
        /// <returns></returns>
        internal string generateFolderReadme(aceAuthorNotation notation, ITextRender builder = null, Int32 directoryStructureDepthLimit = 3)
        {
            if (builder == null)
            {
                builder = new builderForMarkdown();
            }
            String prefix = "";

            String mypath = path;

            if (parent != null)
            {
                mypath = mypath.removeStartsWith(parent.path);
                prefix = path;
            }

            builder.AppendHeading("Directory information", 2);

            builder.AppendHeading(caption, 3);
            builder.AppendLine(" > " + mypath);
            builder.AppendLine(" > " + description);

            builder.AppendHorizontalLine();

            foreach (String st in AdditionalDescriptionLines)
            {
                builder.AppendLine(st);
            }

            if (AdditionalDescriptionLines.Any())
            {
                builder.AppendHorizontalLine();
            }

            if (AdditionalFileEntries.Any())
            {
                builder.AppendHeading("Files in this directory:", 2);
                String format = "D" + AdditionalFileEntries.Count().ToString().Length.ToString();
                Int32  flc    = 1;

                List <String> sortedKeys = AdditionalFileEntries.Keys.ToList();
                sortedKeys.Sort(String.CompareOrdinal);

                foreach (String key in sortedKeys)
                {
                    builder.AppendLine(flc.ToString(format) + " : " + AdditionalFileEntries[key].description);
                    flc++;
                }
            }

            //builder.AppendHeading("Folder treeview", 2);

            //builder.Append(this.tree)

            builder.AppendHorizontalLine();

            builder.AppendHeading("Subdirectories of: " + prefix, 2);

            var folderNodes = this.getAllChildrenInType <folderNode>(null, false, true, 0, directoryStructureDepthLimit);

            foreach (var fold in folderNodes)
            {
                Int32 levelDistance = fold.level - level;

                String insert = " -- ".Repeat(levelDistance);

                if (levelDistance > directoryStructureDepthLimit)
                {
                    if (fold.count() > 0)
                    {
                        builder.AppendCite(insert + "> directory " + fold.caption + " with [" + fold.count() + "] sub directories ...");
                    }
                }
                else
                {
                    builder.AppendLine(String.Format("{0,-60} : {1,-100}", insert + "> " + fold.caption, fold.path.removeStartsWith(prefix)));
                    if (!fold.description.isNullOrEmpty())
                    {
                        builder.AppendLine(insert + "| " + fold.description);
                    }
                }
                //builder.AppendLine();
                //  builder.prevTabLevel();
            }

            //  AdditionalFileEntries.Sort(String.CompareOrdinal);

            if (notation != null)
            {
                builder.AppendHorizontalLine();
                notation.GetDescription(builder);
            }

            builder.AppendLine();
            builder.AppendHorizontalLine();

            builder.AppendLine(imbSciStringExtensions.add(imbSciStringExtensions.add("File generated: ", DateTime.Now.ToLongDateString(), " "), DateTime.Now.ToLongTimeString()));

            return(builder.ContentToString(true));
        }