// // AnsiToHtmlEncoder.cs // /* // paul schneider 19/06/2018 15:58 20182018 6 19 // */ using System.IO; using System.Diagnostics; using System.Threading.Tasks; namespace Yavsc.Helpers { public static class AnsiToHtmlEncoder { const string DocStart = "\n\n"+ "\n"+ "
\n";
        const string DocEnd = "
"; public static Stream GetStream(StreamReader reader) { var procStart = new ProcessStartInfo("node", "node_modules/ansi-to-html/bin/ansi-to-html"); procStart.UseShellExecute = false; procStart.RedirectStandardInput = true; procStart.RedirectStandardOutput = true; // procStart.RedirectStandardError = true; var mem = new MemoryStream(); var writer = new StreamWriter(mem); var proc = Process.Start(procStart); Task.Run(() => { while (reader.Peek()>-1) { proc.StandardInput.WriteLine(reader.ReadLine()); } proc.StandardInput.Close(); }); writer.WriteLine(DocStart); while (proc.StandardOutput.Peek()>-1) { writer.WriteLine(proc.StandardOutput.ReadLine()); } writer.WriteLine(DocEnd); writer.Flush(); mem.Seek(0,SeekOrigin.Begin); return mem; } public static Stream GetStream(Stream inner) { var reader = new StreamReader(inner); return GetStream(reader); } } }