public void TransformedContent_Set_ShouldBeAbleToSetToNull()
 {
     StreamTransformingEventArgs streamTransformingEventArgs = new StreamTransformingEventArgs("Test", Mock.Of<Encoding>())
     {
         TransformedContent = null
     };
     Assert.IsNull(streamTransformingEventArgs.TransformedContent);
 }
 public void TransformedContent_Set_Test()
 {
     const string transformedContent = "Transformed content";
     StreamTransformingEventArgs streamTransformingEventArgs = new StreamTransformingEventArgs("Test", Mock.Of<Encoding>())
     {
         TransformedContent = transformedContent
     };
     Assert.AreEqual(transformedContent, streamTransformingEventArgs.TransformedContent);
 }
        public override void Close()
        {
            if(this.HasTransformEvents && !this.IsClosed)
            {
                StreamTransformingEventArgs streamTransformingEventArgs = new StreamTransformingEventArgs(this.CapturedStreamToString(), this.Encoding);

                this.OnTransform(streamTransformingEventArgs);

                if(streamTransformingEventArgs.Content != streamTransformingEventArgs.TransformedContent)
                {
                    this.CapturedStream.SetLength(0); // Clear the captured stream.
                    byte[] transformedBuffer = this.Encoding.GetBytes(streamTransformingEventArgs.TransformedContent ?? string.Empty);
                    this.CapturedStream.Write(transformedBuffer, 0, transformedBuffer.Length);
                }

                byte[] buffer = this.CapturedStream.ToArray();
                this.Stream.Write(buffer, 0, buffer.Length);
                this.Stream.Flush();
            }

            base.Close();
        }
        protected internal virtual void OnTransform(StreamTransformingEventArgs streamTransformingEventArgs, IEnumerable<IHtmlTransformer> htmlTransformers)
        {
            if(streamTransformingEventArgs == null)
                throw new ArgumentNullException("streamTransformingEventArgs");

            if(htmlTransformers == null)
                throw new ArgumentNullException("htmlTransformers");

            HtmlDocument htmlDocument = this.HtmlDocumentFactory.Create();
            htmlDocument.LoadHtml(streamTransformingEventArgs.Content);
            HtmlNode htmlNode = htmlDocument.DocumentNode;

            foreach(var htmlTransformer in htmlTransformers)
            {
                htmlTransformer.Transform(htmlNode);
            }

            streamTransformingEventArgs.TransformedContent = htmlNode.OuterHtml;
        }
 private static void TransformEventHandler(object sender, StreamTransformingEventArgs e)
 {
 }
 protected internal virtual void OnTransform(StreamTransformingEventArgs e)
 {
     if(this.HasTransformEvents)
         this.Transform(this, e);
 }