Example #1
0
        public static string GenerateDirectoryReadme(
            IEnumerable <Snippet> snippets,
            DirectoryReadmeSettings settings)
        {
            MDocument document = Document();

            return(GenerateDirectoryReadme(snippets, document, settings));
        }
Example #2
0
 public static void WriteDirectoryReadme(
     string directoryPath,
     List <Snippet> snippets,
     DirectoryReadmeSettings settings)
 {
     IOUtility.WriteAllText(
         Path.Combine(directoryPath, ReadMeFileName),
         MarkdownGenerator.GenerateDirectoryReadme(snippets, settings),
         IOUtility.UTF8NoBom);
 }
Example #3
0
        protected override void SaveSnippets(List <Snippet> snippets, SnippetGeneratorResult result)
        {
            base.SaveSnippets(snippets, result);

#if !DEBUG
            DirectoryReadmeSettings settings = Environment.CreateDirectoryReadmeSettings(result);

            MarkdownFileWriter.WriteDirectoryReadme(result.Path, snippets, settings);
#endif
        }
        protected override void SaveSnippets(List <Snippet> snippets, SnippetGeneratorResult result)
        {
            base.SaveSnippets(snippets, result);

            if (!result.IsDevelopment)
            {
                IOUtility.SaveSnippetBrowserFile(
                    snippets,
                    Path.Combine(result.Path, $"{result.Language.GetIdentifier()}.xml"));
            }

            Language language = result.Language;

            string languageId = result.Language.GetIdentifier();

            string directoryPath = result.Path;

            string packageDirectoryPath = Path.Combine(directoryPath, "package");

            IOUtility.WriteAllText(
                Path.Combine(packageDirectoryPath, "snippets", Path.ChangeExtension(languageId, "json")),
                JsonUtility.ToJsonText(snippets.OrderBy(f => f.Title)),
                createDirectory: true);

            PackageInfo info = GetDefaultPackageInfo();

            info.Version      = Environment.GetVersion(result.Language);
            info.Name        += "-" + languageId;
            info.DisplayName += " for " + language.GetTitle();
            info.Description += language.GetTitle() + ".";
            info.Homepage    += $"/{Path.GetFileName(directoryPath)}/{ReadMeFileName}";
            info.Keywords.AddRange(language.GetKeywords());
            info.Snippets.Add(new SnippetInfo()
            {
                Language = languageId, Path = $"./snippets/{languageId}.json"
            });

            IOUtility.WriteAllText(Path.Combine(packageDirectoryPath, "package.json"), info.ToString(), IOUtility.UTF8NoBom);

            DirectoryReadmeSettings settings = Environment.CreateDirectoryReadmeSettings(result);

#if !DEBUG
            MarkdownFileWriter.WriteDirectoryReadme(directoryPath, snippets, settings);
#endif

            settings.AddLinkToTitle = false;
            settings.Header         = null;

#if !DEBUG
            MarkdownFileWriter.WriteDirectoryReadme(packageDirectoryPath, snippets, settings);
#endif
        }
Example #5
0
        public static string GenerateDirectoryReadme(
            IEnumerable <Snippet> snippets,
            MDocument document,
            DirectoryReadmeSettings settings)
        {
            document.Add((!string.IsNullOrEmpty(settings.Header)) ? Heading2(settings.Header) : null);

            if (!settings.IsDevelopment)
            {
                document.Add(
                    Heading3("Snippet Browser"),
                    BulletItem("Browse all available snippets with ", Link("Snippet Browser", GetSnippetBrowserUrl(settings.Environment.Kind, settings.Language)), "."));
            }

            if (!settings.IsDevelopment &&
                settings.AddQuickReference)
            {
                document.Add(GetQuickReference());
            }

            document.Add(Heading3("List of Selected Snippets"));

            document.Add(Table(
                             TableRow("Shortcut", "Title"),
                             snippets
                             .Where(f => !f.HasTag(KnownTags.ExcludeFromReadme))
                             .OrderBy(f => f.Shortcut)
                             .ThenBy(f => f.GetTitle())
                             .Select(f =>
            {
                return(TableRow(
                           f.Shortcut,
                           LinkOrText(f.GetTitle(), GetSnippetPath(f))));
            })));

            return(document.GetString());

            IEnumerable <object> GetQuickReference()
            {
                List <ShortcutInfo> shortcuts = settings.Shortcuts
                                                .Where(f => f.Languages.Contains(settings.Language))
                                                .ToList();

                if (shortcuts.Count > 0)
                {
                    yield return(Heading3("Quick Reference"));

                    if (settings.QuickReferenceText != null)
                    {
                        yield return(Raw(settings.QuickReferenceText));
                    }

                    if (settings.GroupShortcuts)
                    {
                        foreach (IGrouping <ShortcutKind, ShortcutInfo> grouping in shortcuts
                                 .GroupBy(f => f.Kind)
                                 .OrderBy(f => f.Key))
                        {
                            string title = grouping.Key.GetTitle();

                            if (!string.IsNullOrEmpty(title))
                            {
                                yield return(Heading4(title));
                            }

                            yield return(TableWithShortcutInfoValueDesriptionComment(grouping));
                        }
                    }
                    else
                    {
                        yield return(NewLine);

                        yield return(TableWithShortcutInfoValueDesriptionComment(shortcuts));
                    }
                }
            }

            string GetSnippetPath(Snippet snippet)
            {
                if (!settings.AddLinkToTitle)
                {
                    return(null);
                }

                string _pattern = $"^{Regex.Escape(settings.DirectoryPath)}{Regex.Escape(Path.DirectorySeparatorChar.ToString())}?";

                string path = Regex.Replace(
                    snippet.FilePath,
                    _pattern,
                    "",
                    RegexOptions.IgnoreCase);

                return(path.Replace('\\', '/'));
            }

            MTable TableWithShortcutInfoValueDesriptionComment(IEnumerable <ShortcutInfo> shortcuts)
            {
                return(Table(
                           TableRow("Shortcut", "Description", "Comment"),
                           shortcuts
                           .OrderBy(f => f.Value)
                           .ThenBy(f => f.Description)
                           .Select(f => TableRow(f.Value, f.Description, f.Comment))));
            }
        }