1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using TidyNet;
namespace QMVC
{
class IndentingFilter : MemoryStream
{
private Stream outputStream;
private Encoding encoding;
public IndentingFilter(Stream output, Encoding encoding)
{
outputStream = output;
this.encoding = encoding;
}
public override void Write(byte[] buffer, int offset, int count)
{
var sb = new StringBuilder(count + 1024);
sb.Append(this.encoding.GetString(buffer, offset, count));
using (System.IO.MemoryStream tmpstream = new System.IO.MemoryStream())
using (System.IO.MemoryStream parsetmpstream = new System.IO.MemoryStream())
{
//var lol = @"<html><head>
//</head><body>LOLLLLLLLLLLLL<div>truc
//
// </div>
//
// ................
//
//
// </body></html>";
//var lolB = encoding.GetBytes(lol);
//tmpstream.Write(lolB, 0, lolB.Length);
tmpstream.Write(encoding.GetBytes(sb.ToString()), 0, sb.Length);
tmpstream.Position = 0;
var tidy = new Tidy();
tidy.Options.CharEncoding = CharEncoding.UTF8;
tidy.Options.DocType = DocType.Omit;
tidy.Options.DropFontTags = true;
tidy.Options.LogicalEmphasis = true;
tidy.Options.Xhtml = true;
tidy.Options.XmlOut = true;
tidy.Options.MakeClean = false;
tidy.Options.TidyMark = false;
tidy.Options.QuoteNbsp = false;
tidy.Options.NumEntities = true;
tidy.Options.BreakBeforeBR = true;
tidy.Options.SmartIndent = true;
tidy.Options.WrapScriptlets = true;
tidy.Parse(tmpstream, parsetmpstream, new TidyMessageCollection());
byte[] buff = parsetmpstream.ToArray();
outputStream.Write(buff, 0, buff.Length);
base.Write(buffer, offset, count);
}
}
}
} |
Partager