/// <summary> /// Exports the specified <paramref name="changes">changeset</paramref> to a Html <paramref name="file" />. /// </summary> /// <param name="changes">The changes to export.</param> /// <param name="file">The file to create or overwrite. <see cref="ExportOptions.Append" /> is ignored.</param> /// <param name="options">The options for exporting.</param> /// <exception cref="NotImplementedException"></exception> public void Export(ChangeSet changes, FileInfo file, ExportOptions options = null) { var markdown = MarkDownChangelogExporter.WriteChanges(changes, options); var changesAsHtml = Markdig.Markdown.ToHtml(markdown.ToString()); var html = $@"<!DOCTYPE html> <html> <head> <title>Changelog for {changes.Name}</title> <!-- Custom CSS --> <style> /* Enable line-breaks withing change log messages */ li {{ white-space:pre-line; }} </style> <!-- CSS from markdownpad-github --> <style> {Css} </style> </head> <body> {changesAsHtml} </body> </html>"; using (var w = file.CreateText()) w.Write(html); }
/// <summary>Exports the specified format.</summary> /// <param name="changes">The changes to exort.</param> /// <param name="format">The format to export to.</param> /// <param name="targetFile">The target file (when applicable).</param> /// <param name="exportOptions">The export options.</param> /// <exception cref="NotImplementedException">When an export format (<paramref name="format"/>) is not supported yet</exception> /// <returns>A <see cref="FileInfo"/> referring to the exported file (when applicable).</returns> public static FileInfo Export( this ChangeSet changes, OutputFormat format, string targetFile, ExportOptions exportOptions) { IChangelogExporter exporter = null; var file = new FileInfo(targetFile); if (string.IsNullOrWhiteSpace(file.Extension)) { file = new FileInfo($"{targetFile}.{format.FileExtension()}"); } switch (format) { case OutputFormat.MarkDown: exporter = new MarkDownChangelogExporter(); break; case OutputFormat.Console: exporter = new ConsoleChangelogExporter(); break; case OutputFormat.JSON: exporter = new JsonChangelogExporter(); break; case OutputFormat.XML: exporter = new XmlChangelogExporter(); break; case OutputFormat.Html: exporter = new HtmlChangelogExporter(); break; default: throw new NotImplementedException($"Export to {format} is not yet implemented"); } file.Directory.AssertExistence(); exporter.Export(changes, file, exportOptions); file.Refresh(); return(file); }