mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-17 17:32:50 +08:00
Add Markdown.Escape method
This commit is contained in:
parent
70fc14e9cd
commit
1410cba6c5
@ -6,6 +6,24 @@ namespace Spectre.Console.Tests.Unit
|
|||||||
{
|
{
|
||||||
public sealed class MarkupTests
|
public sealed class MarkupTests
|
||||||
{
|
{
|
||||||
|
public sealed class TheEscapeMethod
|
||||||
|
{
|
||||||
|
[Theory]
|
||||||
|
[InlineData("Hello World", "Hello World")]
|
||||||
|
[InlineData("Hello World [", "Hello World [[")]
|
||||||
|
[InlineData("Hello World ]", "Hello World ]]")]
|
||||||
|
[InlineData("Hello [World]", "Hello [[World]]")]
|
||||||
|
[InlineData("Hello [[World]]", "Hello [[[[World]]]]")]
|
||||||
|
public void Should_Escape_Markup_As_Expected(string input, string expected)
|
||||||
|
{
|
||||||
|
// Given, When
|
||||||
|
var result = Markup.Escape(input);
|
||||||
|
|
||||||
|
// Then
|
||||||
|
result.ShouldBe(expected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData("Hello [[ World ]")]
|
[InlineData("Hello [[ World ]")]
|
||||||
[InlineData("Hello [[ World ] !")]
|
[InlineData("Hello [[ World ] !")]
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
namespace Spectre.Console
|
namespace Spectre.Console
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -6,12 +8,11 @@ namespace Spectre.Console
|
|||||||
public static class StringExtensions
|
public static class StringExtensions
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Converts the string to something that is safe to
|
/// Escapes text so that it won’t be interpreted as markup.
|
||||||
/// use in a markup string.
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="text">The text to convert.</param>
|
/// <param name="text">The text to escape.</param>
|
||||||
/// <returns>A string that is safe to use in a markup string.</returns>
|
/// <returns>A string that is safe to use in markup.</returns>
|
||||||
public static string SafeMarkup(this string text)
|
public static string EscapeMarkup(this string text)
|
||||||
{
|
{
|
||||||
if (text == null)
|
if (text == null)
|
||||||
{
|
{
|
||||||
@ -22,5 +23,16 @@ namespace Spectre.Console
|
|||||||
.Replace("[", "[[")
|
.Replace("[", "[[")
|
||||||
.Replace("]", "]]");
|
.Replace("]", "]]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Escapes text so that it won’t be interpreted as markup.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="text">The text to escape.</param>
|
||||||
|
/// <returns>A string that is safe to use in markup.</returns>
|
||||||
|
[Obsolete("Use EscapeMarkup extension instead.", false)]
|
||||||
|
public static string SafeMarkup(this string text)
|
||||||
|
{
|
||||||
|
return EscapeMarkup(text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ namespace Spectre.Console
|
|||||||
{
|
{
|
||||||
var shortenTypes = (settings.Format & ExceptionFormats.ShortenTypes) != 0;
|
var shortenTypes = (settings.Format & ExceptionFormats.ShortenTypes) != 0;
|
||||||
var type = Emphasize(ex.Type, new[] { '.' }, settings.Style.Exception, shortenTypes, settings);
|
var type = Emphasize(ex.Type, new[] { '.' }, settings.Style.Exception, shortenTypes, settings);
|
||||||
var message = $"[{settings.Style.Message.ToMarkup()}]{ex.Message.SafeMarkup()}[/]";
|
var message = $"[{settings.Style.Message.ToMarkup()}]{ex.Message.EscapeMarkup()}[/]";
|
||||||
return new Markup(string.Concat(type, ": ", message));
|
return new Markup(string.Concat(type, ": ", message));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ namespace Spectre.Console
|
|||||||
{
|
{
|
||||||
var typeColor = settings.Style.ParameterType.ToMarkup();
|
var typeColor = settings.Style.ParameterType.ToMarkup();
|
||||||
var nameColor = settings.Style.ParameterName.ToMarkup();
|
var nameColor = settings.Style.ParameterName.ToMarkup();
|
||||||
var parameters = frame.Parameters.Select(x => $"[{typeColor}]{x.Type.SafeMarkup()}[/] [{nameColor}]{x.Name}[/]");
|
var parameters = frame.Parameters.Select(x => $"[{typeColor}]{x.Type.EscapeMarkup()}[/] [{nameColor}]{x.Name}[/]");
|
||||||
builder.Append(string.Join(", ", parameters));
|
builder.Append(string.Join(", ", parameters));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ namespace Spectre.Console
|
|||||||
|
|
||||||
if (ShowHeader)
|
if (ShowHeader)
|
||||||
{
|
{
|
||||||
var heading = new DateTime(Year, Month, Day).ToString("Y", culture).SafeMarkup();
|
var heading = new DateTime(Year, Month, Day).ToString("Y", culture).EscapeMarkup();
|
||||||
table.Heading = new Title(heading, HeaderStyle);
|
table.Heading = new Title(heading, HeaderStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Spectre.Console.Internal;
|
using Spectre.Console.Internal;
|
||||||
using Spectre.Console.Rendering;
|
using Spectre.Console.Rendering;
|
||||||
@ -46,5 +47,20 @@ namespace Spectre.Console
|
|||||||
{
|
{
|
||||||
return ((IRenderable)_paragraph).Render(context, maxWidth);
|
return ((IRenderable)_paragraph).Render(context, maxWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Escapes text so that it won’t be interpreted as markup.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="text">The text to escape.</param>
|
||||||
|
/// <returns>A string that is safe to use in markup.</returns>
|
||||||
|
public static string Escape(string text)
|
||||||
|
{
|
||||||
|
if (text is null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
return text.EscapeMarkup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user