public static string GenerateProjectReadme( IEnumerable <SnippetGeneratorResult> results, MDocument document, ProjectReadmeSettings settings, bool addFootnote = true) { document.Add( (!string.IsNullOrEmpty(settings.Header)) ? Heading2(settings.Header) : null, BulletItem("Browse all available snippets with ", Link("Snippet Browser", GetSnippetBrowserUrl(settings.Environment.Kind)), "."), BulletItem("Download extension from ", Link("Marketplace", $"http://marketplace.visualstudio.com/search?term=publisher%3A\"Josef%20Pihrt\"%20{ProductName}&target={settings.Environment.Kind.GetIdentifier()}&sortBy=Name"), "."), Heading3("Snippets"), Table( TableRow("Group", "Count", TableColumn(HorizontalAlignment.Right)), results.OrderBy(f => f.DirectoryName).Select(f => { return(TableRow( Link(f.DirectoryName, $"{VisualStudioExtensionGitHubUrl}/{f.DirectoryName}/{ReadMeFileName}"), f.Snippets.Count, Link("Browse", GetSnippetBrowserUrl(settings.Environment.Kind, f.Language)))); }))); return(document.GetString(addFootnote: addFootnote)); }
public static string GenerateVisualStudioMarketplaceOverview(IEnumerable <SnippetGeneratorResult> results) { MDocument document = Document( Heading3("Introduction"), BulletItem(GetProjectSubtitle(results)), Heading3("Links"), BulletList( Link("Project Website", GitHubUrl), Link("Release Notes", $"{MasterGitHubUrl}/{ChangeLogFileName}"), BulletItem("Browse all available snippets with ", Link("Snippet Browser", GetSnippetBrowserUrl(EnvironmentKind.VisualStudio)))), Heading3("Snippets"), Table( TableRow("Language", TableColumn(HorizontalAlignment.Right, "Count"), TableColumn(HorizontalAlignment.Center, "Snippet Browser")), results.Select(f => { return(TableRow( Link(f.DirectoryName, VisualStudioExtensionGitHubUrl + "/" + f.DirectoryName + "/" + ReadMeFileName), f.Snippets.Count, Link("browse", GetSnippetBrowserUrl(EnvironmentKind.VisualStudio, f.Language)))); })), NewLine); return(document.GetString(addFootnote: false)); }
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)))); } }