From 6a7cd0f490f14dbec3c1a3677f9810cf8c74e632 Mon Sep 17 00:00:00 2001 From: sornaks Date: Thu, 9 Jul 2015 13:49:02 -0700 Subject: [PATCH] Making TagHelperContent implement IHtmlContent. --- .../TagHelpers/DefaultTagHelperContent.cs | 11 +++++ .../TagHelpers/TagHelperContent.cs | 8 +++- .../project.json | 1 + .../TagHelpers/DefaultTagHelperContentTest.cs | 19 +++++++++ .../project.json | 41 ++++++++++--------- 5 files changed, 59 insertions(+), 21 deletions(-) diff --git a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs index fd06bf7a47..edb31dcb2e 100644 --- a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs +++ b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs @@ -3,7 +3,9 @@ using System; using System.Collections.Generic; +using System.IO; using Microsoft.Framework.Internal; +using Microsoft.Framework.WebEncoders; namespace Microsoft.AspNet.Razor.Runtime.TagHelpers { @@ -208,5 +210,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers // can use this to iterate through the values of the buffer. return _buffer.GetEnumerator(); } + + /// + public override void WriteTo(TextWriter writer, IHtmlEncoder encoder) + { + foreach (var entry in _buffer) + { + writer.Write(entry); + } + } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs index c422089763..e5cb6509a1 100644 --- a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs +++ b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs @@ -4,13 +4,16 @@ using System; using System.Collections; using System.Collections.Generic; +using System.IO; +using Microsoft.AspNet.Html.Abstractions; +using Microsoft.Framework.WebEncoders; namespace Microsoft.AspNet.Razor.Runtime.TagHelpers { /// /// Abstract class used to buffer content returned by s. /// - public abstract class TagHelperContent : IEnumerable + public abstract class TagHelperContent : IEnumerable, IHtmlContent { /// /// Gets a value indicating whether the content was modifed. @@ -191,5 +194,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers { return GetEnumerator(); } + + /// + public abstract void WriteTo(TextWriter writer, IHtmlEncoder encoder); } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.Razor.Runtime/project.json b/src/Microsoft.AspNet.Razor.Runtime/project.json index ac18c4734a..5aa9488534 100644 --- a/src/Microsoft.AspNet.Razor.Runtime/project.json +++ b/src/Microsoft.AspNet.Razor.Runtime/project.json @@ -6,6 +6,7 @@ "url": "git://github.com/aspnet/razor" }, "dependencies": { + "Microsoft.AspNet.Html.Abstractions": "1.0.0-*", "Microsoft.AspNet.Razor": "4.0.0-*", "Microsoft.Framework.BufferEntryCollection.Sources": { "type": "build", "version": "1.0.0-*" }, "Microsoft.Framework.ClosedGenericMatcher.Sources": { "type": "build", "version": "1.0.0-*" }, diff --git a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs index 546cdf3468..3a9cb11fb0 100644 --- a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs +++ b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs @@ -3,8 +3,11 @@ using System; using System.Globalization; +using System.IO; using System.Linq; using Microsoft.AspNet.Testing; +using Microsoft.Framework.WebEncoders; +using Microsoft.Framework.WebEncoders.Testing; using Xunit; namespace Microsoft.AspNet.Razor.Runtime.TagHelpers @@ -622,5 +625,21 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers // Assert Assert.Equal(expected, tagHelperContent.GetContent()); } + + [Fact] + public void WriteTo_WritesToATextWriter() + { + // Arrange + var tagHelperContent = new DefaultTagHelperContent(); + var writer = new StringWriter(); + tagHelperContent.SetContent("Hello "); + tagHelperContent.Append("World"); + + // Act + tagHelperContent.WriteTo(writer, new CommonTestEncoder()); + + // Assert + Assert.Equal("Hello World", writer.ToString()); + } } } diff --git a/test/Microsoft.AspNet.Razor.Runtime.Test/project.json b/test/Microsoft.AspNet.Razor.Runtime.Test/project.json index a37a57bfe0..d65fa4cd84 100644 --- a/test/Microsoft.AspNet.Razor.Runtime.Test/project.json +++ b/test/Microsoft.AspNet.Razor.Runtime.Test/project.json @@ -1,24 +1,25 @@ { - "version": "1.0.0", - "dependencies": { - "Microsoft.AspNet.Razor.Runtime": "4.0.0-*", - "Microsoft.AspNet.Testing": "1.0.0-*", - "xunit.runner.aspnet": "2.0.0-aspnet-*" - }, - "commands": { - "test": "xunit.runner.aspnet" - }, - "frameworks": { - "dnx451": { - "dependencies": { - "Moq": "4.2.1312.1622" - } + "version": "1.0.0", + "dependencies": { + "Microsoft.AspNet.Razor.Runtime": "4.0.0-*", + "Microsoft.AspNet.Testing": "1.0.0-*", + "Microsoft.Framework.WebEncoders.Testing": "1.0.0-*", + "xunit.runner.aspnet": "2.0.0-aspnet-*" }, - "dnxcore50": { - "dependencies": { - "System.Reflection.TypeExtensions": "4.0.0-beta-*", - "System.Runtime.Extensions": "4.0.10-beta-*" - } + "commands": { + "test": "xunit.runner.aspnet" + }, + "frameworks": { + "dnx451": { + "dependencies": { + "Moq": "4.2.1312.1622" + } + }, + "dnxcore50": { + "dependencies": { + "System.Reflection.TypeExtensions": "4.0.0-beta-*", + "System.Runtime.Extensions": "4.0.10-beta-*" + } + } } - } }