Example #1
0
        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>");
        }
Example #2
0
        // 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();
        }