parent
8009350176
commit
faf60675fe
|
|
@ -2,6 +2,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>$(DefaultNetCoreTargetFramework)</TargetFrameworks>
|
<TargetFrameworks>$(DefaultNetCoreTargetFramework)</TargetFrameworks>
|
||||||
|
<Nullable>annotations</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == '$(DefaultNetCoreTargetFramework)'">
|
<ItemGroup Condition="'$(TargetFramework)' == '$(DefaultNetCoreTargetFramework)'">
|
||||||
<Compile Include="Microsoft.AspNetCore.Html.Abstractions.netcoreapp.cs" />
|
<Compile Include="Microsoft.AspNetCore.Html.Abstractions.netcoreapp.cs" />
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,16 @@
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Html
|
namespace Microsoft.AspNetCore.Html
|
||||||
{
|
{
|
||||||
|
[System.Diagnostics.DebuggerDisplayAttribute("{DebuggerToString()}")]
|
||||||
public partial class HtmlContentBuilder : Microsoft.AspNetCore.Html.IHtmlContent, Microsoft.AspNetCore.Html.IHtmlContentBuilder, Microsoft.AspNetCore.Html.IHtmlContentContainer
|
public partial class HtmlContentBuilder : Microsoft.AspNetCore.Html.IHtmlContent, Microsoft.AspNetCore.Html.IHtmlContentBuilder, Microsoft.AspNetCore.Html.IHtmlContentContainer
|
||||||
{
|
{
|
||||||
public HtmlContentBuilder() { }
|
public HtmlContentBuilder() { }
|
||||||
public HtmlContentBuilder(System.Collections.Generic.IList<object> entries) { }
|
public HtmlContentBuilder(System.Collections.Generic.IList<object> entries) { }
|
||||||
public HtmlContentBuilder(int capacity) { }
|
public HtmlContentBuilder(int capacity) { }
|
||||||
public int Count { get { throw null; } }
|
public int Count { get { throw null; } }
|
||||||
public Microsoft.AspNetCore.Html.IHtmlContentBuilder Append(string unencoded) { throw null; }
|
public Microsoft.AspNetCore.Html.IHtmlContentBuilder Append(string? unencoded) { throw null; }
|
||||||
public Microsoft.AspNetCore.Html.IHtmlContentBuilder AppendHtml(Microsoft.AspNetCore.Html.IHtmlContent htmlContent) { throw null; }
|
public Microsoft.AspNetCore.Html.IHtmlContentBuilder AppendHtml(Microsoft.AspNetCore.Html.IHtmlContent? htmlContent) { throw null; }
|
||||||
public Microsoft.AspNetCore.Html.IHtmlContentBuilder AppendHtml(string encoded) { throw null; }
|
public Microsoft.AspNetCore.Html.IHtmlContentBuilder AppendHtml(string? encoded) { throw null; }
|
||||||
public Microsoft.AspNetCore.Html.IHtmlContentBuilder Clear() { throw null; }
|
public Microsoft.AspNetCore.Html.IHtmlContentBuilder Clear() { throw null; }
|
||||||
public void CopyTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) { }
|
public void CopyTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) { }
|
||||||
public void MoveTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) { }
|
public void MoveTo(Microsoft.AspNetCore.Html.IHtmlContentBuilder destination) { }
|
||||||
|
|
@ -32,7 +33,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
[System.Diagnostics.DebuggerDisplayAttribute("{DebuggerToString()}")]
|
[System.Diagnostics.DebuggerDisplayAttribute("{DebuggerToString()}")]
|
||||||
public partial class HtmlFormattableString : Microsoft.AspNetCore.Html.IHtmlContent
|
public partial class HtmlFormattableString : Microsoft.AspNetCore.Html.IHtmlContent
|
||||||
{
|
{
|
||||||
public HtmlFormattableString(System.IFormatProvider formatProvider, string format, params object[] args) { }
|
public HtmlFormattableString(System.IFormatProvider? formatProvider, string format, params object[] args) { }
|
||||||
public HtmlFormattableString(string format, params object[] args) { }
|
public HtmlFormattableString(string format, params object[] args) { }
|
||||||
public void WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) { }
|
public void WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) { }
|
||||||
}
|
}
|
||||||
|
|
@ -40,8 +41,8 @@ namespace Microsoft.AspNetCore.Html
|
||||||
{
|
{
|
||||||
public static readonly Microsoft.AspNetCore.Html.HtmlString Empty;
|
public static readonly Microsoft.AspNetCore.Html.HtmlString Empty;
|
||||||
public static readonly Microsoft.AspNetCore.Html.HtmlString NewLine;
|
public static readonly Microsoft.AspNetCore.Html.HtmlString NewLine;
|
||||||
public HtmlString(string value) { }
|
public HtmlString(string? value) { }
|
||||||
public string Value { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } }
|
public string? Value { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } }
|
||||||
public override string ToString() { throw null; }
|
public override string ToString() { throw null; }
|
||||||
public void WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) { }
|
public void WriteTo(System.IO.TextWriter writer, System.Text.Encodings.Web.HtmlEncoder encoder) { }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.Encodings.Web;
|
using System.Text.Encodings.Web;
|
||||||
|
|
||||||
|
|
@ -11,6 +12,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An <see cref="IHtmlContentBuilder"/> implementation using an in memory list.
|
/// An <see cref="IHtmlContentBuilder"/> implementation using an in memory list.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[DebuggerDisplay("{DebuggerToString()}")]
|
||||||
public class HtmlContentBuilder : IHtmlContentBuilder
|
public class HtmlContentBuilder : IHtmlContentBuilder
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -61,7 +63,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
internal IList<object> Entries { get; }
|
internal IList<object> Entries { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IHtmlContentBuilder Append(string unencoded)
|
public IHtmlContentBuilder Append(string? unencoded)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(unencoded))
|
if (!string.IsNullOrEmpty(unencoded))
|
||||||
{
|
{
|
||||||
|
|
@ -72,7 +74,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IHtmlContentBuilder AppendHtml(IHtmlContent htmlContent)
|
public IHtmlContentBuilder AppendHtml(IHtmlContent? htmlContent)
|
||||||
{
|
{
|
||||||
if (htmlContent == null)
|
if (htmlContent == null)
|
||||||
{
|
{
|
||||||
|
|
@ -84,7 +86,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IHtmlContentBuilder AppendHtml(string encoded)
|
public IHtmlContentBuilder AppendHtml(string? encoded)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(encoded))
|
if (!string.IsNullOrEmpty(encoded))
|
||||||
{
|
{
|
||||||
|
|
@ -113,13 +115,11 @@ namespace Microsoft.AspNetCore.Html
|
||||||
{
|
{
|
||||||
var entry = Entries[i];
|
var entry = Entries[i];
|
||||||
|
|
||||||
string entryAsString;
|
if (entry is string entryAsString)
|
||||||
IHtmlContentContainer entryAsContainer;
|
|
||||||
if ((entryAsString = entry as string) != null)
|
|
||||||
{
|
{
|
||||||
destination.Append(entryAsString);
|
destination.Append(entryAsString);
|
||||||
}
|
}
|
||||||
else if ((entryAsContainer = entry as IHtmlContentContainer) != null)
|
else if (entry is IHtmlContentContainer entryAsContainer)
|
||||||
{
|
{
|
||||||
// Since we're copying, do a deep flatten.
|
// Since we're copying, do a deep flatten.
|
||||||
entryAsContainer.CopyTo(destination);
|
entryAsContainer.CopyTo(destination);
|
||||||
|
|
@ -144,13 +144,11 @@ namespace Microsoft.AspNetCore.Html
|
||||||
{
|
{
|
||||||
var entry = Entries[i];
|
var entry = Entries[i];
|
||||||
|
|
||||||
string entryAsString;
|
if (entry is string entryAsString)
|
||||||
IHtmlContentContainer entryAsContainer;
|
|
||||||
if ((entryAsString = entry as string) != null)
|
|
||||||
{
|
{
|
||||||
destination.Append(entryAsString);
|
destination.Append(entryAsString);
|
||||||
}
|
}
|
||||||
else if ((entryAsContainer = entry as IHtmlContentContainer) != null)
|
else if (entry is IHtmlContentContainer entryAsContainer)
|
||||||
{
|
{
|
||||||
// Since we're moving, do a deep flatten.
|
// Since we're moving, do a deep flatten.
|
||||||
entryAsContainer.MoveTo(destination);
|
entryAsContainer.MoveTo(destination);
|
||||||
|
|
@ -197,11 +195,9 @@ namespace Microsoft.AspNetCore.Html
|
||||||
|
|
||||||
private string DebuggerToString()
|
private string DebuggerToString()
|
||||||
{
|
{
|
||||||
using (var writer = new StringWriter())
|
using var writer = new StringWriter();
|
||||||
{
|
WriteTo(writer, HtmlEncoder.Default);
|
||||||
WriteTo(writer, HtmlEncoder.Default);
|
return writer.ToString();
|
||||||
return writer.ToString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
/// <param name="formatProvider">An object that provides culture-specific formatting information.</param>
|
/// <param name="formatProvider">An object that provides culture-specific formatting information.</param>
|
||||||
/// <param name="format">A composite format string.</param>
|
/// <param name="format">A composite format string.</param>
|
||||||
/// <param name="args">An array that contains objects to format.</param>
|
/// <param name="args">An array that contains objects to format.</param>
|
||||||
public HtmlFormattableString(IFormatProvider formatProvider, string format, params object[] args)
|
public HtmlFormattableString(IFormatProvider? formatProvider, string format, params object[] args)
|
||||||
{
|
{
|
||||||
if (format == null)
|
if (format == null)
|
||||||
{
|
{
|
||||||
|
|
@ -94,7 +94,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
private readonly HtmlEncoder _encoder;
|
private readonly HtmlEncoder _encoder;
|
||||||
private readonly IFormatProvider _formatProvider;
|
private readonly IFormatProvider _formatProvider;
|
||||||
|
|
||||||
private StringWriter _writer;
|
private StringWriter? _writer;
|
||||||
|
|
||||||
public EncodingFormatProvider(IFormatProvider formatProvider, HtmlEncoder encoder)
|
public EncodingFormatProvider(IFormatProvider formatProvider, HtmlEncoder encoder)
|
||||||
{
|
{
|
||||||
|
|
@ -105,7 +105,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
_encoder = encoder;
|
_encoder = encoder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Format(string format, object arg, IFormatProvider formatProvider)
|
public string Format(string? format, object? arg, IFormatProvider? formatProvider)
|
||||||
{
|
{
|
||||||
// These are the cases we need to special case. We trust the HtmlString or IHtmlContent instance
|
// These are the cases we need to special case. We trust the HtmlString or IHtmlContent instance
|
||||||
// to do the right thing with encoding.
|
// to do the right thing with encoding.
|
||||||
|
|
@ -118,7 +118,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
var htmlContent = arg as IHtmlContent;
|
var htmlContent = arg as IHtmlContent;
|
||||||
if (htmlContent != null)
|
if (htmlContent != null)
|
||||||
{
|
{
|
||||||
_writer = _writer ?? new StringWriter();
|
_writer ??= new StringWriter();
|
||||||
|
|
||||||
htmlContent.WriteTo(_writer, _encoder);
|
htmlContent.WriteTo(_writer, _encoder);
|
||||||
|
|
||||||
|
|
@ -133,7 +133,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
//
|
//
|
||||||
// First check for an ICustomFormatter - if the IFormatProvider is a CultureInfo, then it's likely
|
// First check for an ICustomFormatter - if the IFormatProvider is a CultureInfo, then it's likely
|
||||||
// that ICustomFormatter will be null.
|
// that ICustomFormatter will be null.
|
||||||
var customFormatter = (ICustomFormatter)_formatProvider.GetFormat(typeof(ICustomFormatter));
|
var customFormatter = (ICustomFormatter?)_formatProvider.GetFormat(typeof(ICustomFormatter));
|
||||||
if (customFormatter != null)
|
if (customFormatter != null)
|
||||||
{
|
{
|
||||||
var result = customFormatter.Format(format, arg, _formatProvider);
|
var result = customFormatter.Format(format, arg, _formatProvider);
|
||||||
|
|
@ -170,7 +170,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public object GetFormat(Type formatType)
|
public object? GetFormat(Type? formatType)
|
||||||
{
|
{
|
||||||
if (formatType == typeof(ICustomFormatter))
|
if (formatType == typeof(ICustomFormatter))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
/// Creates a new <see cref="HtmlString"/>.
|
/// Creates a new <see cref="HtmlString"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="value">The HTML encoded value.</param>
|
/// <param name="value">The HTML encoded value.</param>
|
||||||
public HtmlString(string value)
|
public HtmlString(string? value)
|
||||||
{
|
{
|
||||||
Value = value;
|
Value = value;
|
||||||
}
|
}
|
||||||
|
|
@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Html
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the HTML encoded value.
|
/// Gets the HTML encoded value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Value { get; }
|
public string? Value { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public void WriteTo(TextWriter writer, HtmlEncoder encoder)
|
public void WriteTo(TextWriter writer, HtmlEncoder encoder)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Description>ASP.NET Core HTML abstractions used for building HTML content.
|
<Description>ASP.NET Core HTML abstractions used for building HTML content.
|
||||||
|
|
@ -11,6 +11,7 @@ Microsoft.AspNetCore.Html.IHtmlContent</Description>
|
||||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
<PackageTags>aspnetcore</PackageTags>
|
<PackageTags>aspnetcore</PackageTags>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ namespace Microsoft.Extensions.Internal
|
||||||
return _content.GetHashCode();
|
return _content.GetHashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Equals(object obj)
|
public override bool Equals(object? obj)
|
||||||
{
|
{
|
||||||
var other = obj as TestHtmlContent;
|
var other = obj as TestHtmlContent;
|
||||||
if (other != null)
|
if (other != null)
|
||||||
|
|
@ -267,9 +267,9 @@ namespace Microsoft.Extensions.Internal
|
||||||
return base.Equals(obj);
|
return base.Equals(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Equals(TestHtmlContent other)
|
public bool Equals(TestHtmlContent? other)
|
||||||
{
|
{
|
||||||
return string.Equals(_content, other._content);
|
return other != null && string.Equals(_content, other._content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue