private void Enumerar(UnidadDafny dfy, StreamWriter sw) { sw.WriteLine("<tr><td> " + "<a href=\"ver/" + dfy.Uri + "\">" + dfy.Nombre + "</a></td>"); InformeDafny informe = null; if (DCaché.Consulta(dfy.Uri, out informe)) { sw.WriteLine(@"<td style=""text-align: center;"">" + informe.Tiempo.TotalSeconds + "s</td>"); string color = "greenyellow"; if (informe.Resultado.EsError()) { color = "red"; } sw.WriteLine(@"<td style=""background-color: " + color + @";"">" + informe.Resultado.Desc() + "</td>"); } sw.WriteLine("</tr>"); }
// Responde con la vista de un archivo public void ResponderVer(HttpListenerContext ctx, string archivo) { if (DCaché == null || DExplorador == null) { Responder404(ctx); return; } StreamWriter wout = new StreamWriter(ctx.Response.OutputStream); ctx.Response.StatusCode = 200; wout.WriteLine(String.Format(Encabezado, "Archivo - " + archivo)); // Color para indicar si es error string color = "blue"; // Busca el informe en la caché InformeDafny informe = null; bool está = DCaché.Consulta(archivo, out informe); if (está) { if (informe.Resultado.EsError()) { color = "red"; } else { color = "greenyellow"; } } wout.WriteLine(String.Format(@"<header style=""background-color: {0};"">{1}</header>", color, archivo )); if (está && informe.Resultado.EsError()) { var salida = Lincol.Replace(informe.Salida, @"dfy<a href=""#l$1"">($1, $2)</a>:"); wout.WriteLine(@"<pre style=""background-color: #faff5c;"">" + salida + "</pre>"); wout.WriteLine("<br />"); } // Muy ineficiente var unis = DExplorador.Unidades.ToList(); var elem = unis.Where(nodo => nodo.Uri == archivo).ToList()[0]; var arch = File.OpenText(elem.Uri); int nlinea = 1; string lineas = ""; wout.Write("<style>.numlin { color: #999999; text-decoration: none; }</style>"); wout.WriteLine("\t<pre style=\"float: left; text-align: right; margin-right: 2ex;\">"); // Recorre las líneas pintando números de línea while (arch.Peek() >= 0) { string line = arch.ReadLine(); wout.WriteLine(String.Format(@"<a class=""numlin"" id=""l{0}"">{0}</a>", nlinea++)); lineas += line + "\n"; } wout.WriteLine("</pre>"); wout.WriteLine("\t<pre class=\"codi\">"); wout.WriteLine(lineas); //arch.CopyTo (wout.BaseStream); wout.WriteLine("\t</pre></body></html>"); wout.Flush(); ctx.Response.Close(); }