private static void ColorTests() { ColorConsole.WriteWrappedHeader("Color Console Examples"); Console.WriteLine("\nUsing a splash of color in your Console code more easily... (plain text)\n"); ColorConsole.WriteLine("Color me this - in Red", ConsoleColor.Red); ColorConsole.WriteWrappedHeader("Off with their green Heads!", headerColor: ConsoleColor.Green); ColorConsole.WriteWarning("\nWorking...\n"); Console.WriteLine("Writing some mixed colors: (plain text)"); ColorConsole.WriteEmbeddedColorLine("Launch the site with [darkcyan]https://localhost:5200[/darkcyan] and press [yellow]Ctrl-c[/yellow] to exit.\n"); ColorConsole.WriteSuccess("The operation completed successfully."); }
/// <summary> /// mm markdowntopdf [inputfile] [outputFile] -open /// </summary> public void MarkdownToPdf() { Processor.ConsoleHeader(); string inputFile = Arguments.InputFile; string outputFile = Arguments.OutputFile; if (string.IsNullOrEmpty(inputFile) || !File.Exists(inputFile)) { var fd = new System.Windows.Forms.OpenFileDialog { DefaultExt = ".md", Filter = "HTML files (*.md, *.markdown, *.mdcrypt)|*.md;*.markdown,*.mdcrypt|" + "All files (*.*)|*.*", CheckFileExists = true, RestoreDirectory = true, Title = "Open Markdown File", InitialDirectory = Environment.CurrentDirectory }; var res = fd.ShowDialog(); if (res == System.Windows.Forms.DialogResult.Cancel || res == System.Windows.Forms.DialogResult.Abort) { return; } inputFile = fd.FileName; } if (string.IsNullOrEmpty(outputFile) || !File.Exists(outputFile)) { var fd = new System.Windows.Forms.SaveFileDialog { DefaultExt = ".pdf", Filter = "Pdf files (*.pdf)|*.pdf|" + "All files (*.*)|*.*", CheckFileExists = false, RestoreDirectory = true, Title = "Save as Pdf File", InitialDirectory = Path.GetDirectoryName(inputFile), FileName = Path.ChangeExtension(Path.GetFileName(inputFile), "pdf") }; var res = fd.ShowDialog(); if (res == DialogResult.Cancel || res == DialogResult.Abort) { return; } outputFile = fd.FileName; } var doc = new MarkdownDocument(); if (!string.IsNullOrEmpty(Arguments.Theme)) { mmApp.Configuration.PreviewTheme = Arguments.Theme; } try { if (!doc.Load(inputFile)) { throw new AccessViolationException(); } } catch { ColorConsole.WriteError("Failed: Couldn't read input file."); Processor.ConsoleFooter(); return; } string htmlFilename = System.IO.Path.ChangeExtension(doc.Filename, "html"); var pdfGenerator = new HtmlToPdfGeneration(); pdfGenerator.PageSize = Arguments.PageSize; pdfGenerator.Orientation = Arguments.Orientation; pdfGenerator.DisplayPdfAfterGeneration = Arguments.OpenOutputFile; try { // render the document with template and return only as string (no output yet) doc.RenderHtmlToFile(filename: htmlFilename, removeBaseTag: true); if (!pdfGenerator.GeneratePdfFromHtml(htmlFilename, outputFile)) { throw new InvalidOperationException(pdfGenerator.ErrorMessage); } } catch (Exception ex) { ColorConsole.WriteError("Failed: PDF output generation failed: " + ex.Message); Processor.ConsoleFooter(); return; } finally { File.Delete(htmlFilename); } ColorConsole.WriteSuccess("PDF file generated: " + outputFile); Processor.ConsoleFooter(); }
/// <summary> /// /// mm htmltomarkdown [inputfile] [outputFile] -open /// </summary> /// <param name="inputFile"></param> /// <param name="outputFile"></param> /// <param name="openOutputFile"></param> public void HtmlToMarkdown() { Processor.ConsoleHeader(); string inputFile = Arguments.InputFile; string outputFile = Arguments.OutputFile; if (string.IsNullOrEmpty(inputFile) || !File.Exists(inputFile)) { var fd = new OpenFileDialog { DefaultExt = ".html", Filter = "HTML files (*.html, *.htm)|*.html;*.htm|" + "All files (*.*)|*.*", CheckFileExists = true, RestoreDirectory = true, Title = "Open HTML File", InitialDirectory = Environment.CurrentDirectory }; var res = fd.ShowDialog(); if (res == null) { return; } inputFile = fd.FileName; } if (string.IsNullOrEmpty(outputFile)) { var fd = new SaveFileDialog { DefaultExt = ".md", Filter = "Markdown files (*.md,*.markdown,*.mdcrypt)|*.md;*.markdown;*.mdcrypt|" + "All files (*.*)|*.*", CheckFileExists = false, RestoreDirectory = true, Title = "Save as Markdown File", InitialDirectory = Path.GetDirectoryName(inputFile), FileName = Path.ChangeExtension(Path.GetFileName(inputFile), "md") }; var res = fd.ShowDialog(); if (res == null) { return; } outputFile = fd.FileName; } string md; try { var html = File.ReadAllText(inputFile); md = MarkdownUtilities.HtmlToMarkdown(html, true); } catch { ColorConsole.WriteError("Failed: Couldn't read input file."); Processor.ConsoleFooter(); return; } if (!string.IsNullOrEmpty(outputFile)) { try { File.WriteAllText(outputFile, md); } catch { ColorConsole.WriteError("Failed: Couldn't write output file."); Processor.ConsoleFooter(); return; } if (Arguments.OpenOutputFile) { ShellUtils.ExecuteProcess("markdownmonster.exe", $"'{outputFile}'"); } ColorConsole.WriteSuccess($"Created Markdown file: {outputFile}"); Processor.ConsoleFooter(); } }
/// <summary> /// /// mm markdowntohtml <inputfile> <outputFile> <rendermode> -open /// </summary> /// <param name="inputFile"></param> /// <param name="outputFile"></param> /// <param name="openOutputFile"></param> /// <param name="fileMode">html,packagedhtml,zip</param> public void MarkdownToHtml() { Processor.ConsoleHeader(); string inputFile = Arguments.InputFile; string outputFile = Arguments.OutputFile; if (string.IsNullOrEmpty(inputFile) || !File.Exists(inputFile)) { var fd = new OpenFileDialog { DefaultExt = ".md", Filter = "Markdown files (*.md,*.markdown)|*.md;*.markdown|" + "All files (*.*)|*.*", CheckFileExists = true, RestoreDirectory = true, Title = "Open Markdown File", InitialDirectory = Environment.CurrentDirectory }; var res = fd.ShowDialog(); if (res == null) { return; } inputFile = fd.FileName; } if (string.IsNullOrEmpty(outputFile)) { var fd = new SaveFileDialog { DefaultExt = ".html", Filter = "HTML files (*.html,*.htm)|*.html;*.htm|" + "All files (*.*)|*.*", CheckFileExists = false, RestoreDirectory = true, Title = "Save as HTML File", InitialDirectory = Path.GetDirectoryName(inputFile), FileName = Path.ChangeExtension(Path.GetFileName(inputFile), "html") }; var res = fd.ShowDialog(); if (res == null) { return; } outputFile = fd.FileName; } string html; var doc = new MarkdownDocument(); if (!string.IsNullOrEmpty(Arguments.Theme)) { mmApp.Configuration.PreviewTheme = Arguments.Theme; } try { if (!doc.Load(inputFile)) { throw new AccessViolationException(); } } catch { ColorConsole.WriteError("Failed: Couldn't read input file."); Processor.ConsoleFooter(); return; } try { string renderMode = Arguments.HtmlRenderMode?.ToLower(); if (renderMode == "fragment" || renderMode == "raw") { try { var parser = new MarkdownParserMarkdig(); html = parser.Parse(doc.CurrentText); File.WriteAllText(outputFile, html, new UTF8Encoding(false)); } catch { ColorConsole.WriteError("Failed: Couldn't convert Markdown document or generate output file."); Processor.ConsoleFooter(); return; } } else { if (doc.RenderHtmlToFile(filename: outputFile) == null) { throw new AccessViolationException(); } } if (renderMode == "packagedhtml") { var packager = new Westwind.HtmlPackager.HtmlPackager(); string outputHtml = packager.PackageHtml(outputFile); try { File.WriteAllText(outputFile, outputHtml); } catch { ColorConsole.WriteError("Failed: Couldn't write output file."); Processor.ConsoleFooter(); return; } } else if (renderMode == "htmlfiles") { var packager = new Westwind.HtmlPackager.HtmlPackager(); if (!packager.PackageHtmlToFolder(outputFile, outputFile)) { ColorConsole.WriteLine("Failed: Create output folder.", ConsoleColor.Red); } } else if (renderMode == "zip") { var packager = new Westwind.HtmlPackager.HtmlPackager(); if (!packager.PackageHtmlToZipFile(Path.ChangeExtension(outputFile, "html"), Path.ChangeExtension(outputFile, "zip"))) { ColorConsole.WriteError("Failed: Couldn't create Packaged HTML Zip files."); } try { File.Delete(Path.ChangeExtension(outputFile, "html")); }catch {} } } catch { ColorConsole.WriteError("Failed: Couldn't write output file."); Processor.ConsoleFooter(); return; } if (Arguments.OpenOutputFile) { ShellUtils.GoUrl($"{outputFile}"); } ColorConsole.WriteSuccess($"Created file: {outputFile}"); ColorConsole.WriteSuccess($" Output Mode: {Arguments.HtmlRenderMode}"); Processor.ConsoleFooter(); }