public static string GenerateDirectoryReadme( IEnumerable <Snippet> snippets, DirectoryReadmeSettings settings) { MDocument document = Document(); return(GenerateDirectoryReadme(snippets, document, settings)); }
public static void WriteDirectoryReadme( string directoryPath, List <Snippet> snippets, DirectoryReadmeSettings settings) { IOUtility.WriteAllText( Path.Combine(directoryPath, ReadMeFileName), MarkdownGenerator.GenerateDirectoryReadme(snippets, settings), IOUtility.UTF8NoBom); }
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 }
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)))); } }