mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-24 12:12:51 +08:00

* Introduce MarkupInterpolated and MarkupLineInterpolated extensions These new methods enable easily writing markup with a nice and intuitive syntax without having to worry about escaping the markup. ```csharp string input = args[0]; string output = Process(input); AnsiConsole.MarkupLineInterpolated($"[blue]{input}[/] -> [green]{output}[/]"); ``` The `Interpolated` suffix was inspired by the Entity Framework Core [FromSqlInterpolated][1] method. [1]: https://docs.microsoft.com/en-us/ef/core/querying/raw-sql#passing-parameters * Fixing whitespace to match file scoped namespaces * Adding FromInterpolated helper to Markup widget Allows automatic handling of interpolated strings to be used on the Markup widget. This would be helpful for people working with Tables and the Tree control who would not be using the MarkupInterpolated methods. * Documentation for markup interpolated methods. Co-authored-by: Cédric Luthi <cedric.luthi@gmail.com>
110 lines
3.0 KiB
Markdown
110 lines
3.0 KiB
Markdown
Title: Markup
|
|
Order: 30
|
|
Description: The Markup class allows you to output rich text to the console.
|
|
Highlights:
|
|
- Easily add *color*.
|
|
- Add hyperlinks to for supported terminals.
|
|
- Emoji 🚀 parsing.
|
|
Reference:
|
|
- M:Spectre.Console.AnsiConsole.Markup(System.String)
|
|
- M:Spectre.Console.AnsiConsole.MarkupLine(System.String)
|
|
- T:Spectre.Console.Markup
|
|
---
|
|
|
|
The `Markup` class allows you to output rich text to the console.
|
|
|
|
## Syntax
|
|
|
|
Console markup uses a syntax inspired by bbcode. If you write the style (see [Styles](xref:styles))
|
|
in square brackets, e.g. `[bold red]`, that style will apply until it is closed with a `[/]`.
|
|
|
|
```csharp
|
|
AnsiConsole.Write(new Markup("[bold yellow]Hello[/] [red]World![/]"));
|
|
```
|
|
|
|
The `Markup` class implements `IRenderable` which means that you
|
|
can use this in tables, grids, and panels. Most classes that support
|
|
rendering of `IRenderable` also have overloads for rendering rich text.
|
|
|
|
```csharp
|
|
var table = new Table();
|
|
table.AddColumn(new TableColumn(new Markup("[yellow]Foo[/]")));
|
|
table.AddColumn(new TableColumn("[blue]Bar[/]"));
|
|
AnsiConsole.Write(table);
|
|
```
|
|
|
|
## Convenience methods
|
|
|
|
There is also convenience methods on `AnsiConsole` that can be used
|
|
to write markup text to the console without instantiating a new `Markup`
|
|
instance.
|
|
|
|
```csharp
|
|
AnsiConsole.Markup("[underline green]Hello[/] ");
|
|
AnsiConsole.MarkupLine("[bold]World[/]");
|
|
```
|
|
|
|
## Escaping format characters
|
|
|
|
To output a `[` you use `[[`, and to output a `]` you use `]]`.
|
|
|
|
```csharp
|
|
AnsiConsole.Markup("[[Hello]] "); // [Hello]
|
|
AnsiConsole.Markup("[red][[World]][/]"); // [World]
|
|
```
|
|
|
|
You can also use the `EscapeMarkup` extension method.
|
|
|
|
```csharp
|
|
AnsiConsole.Markup("[red]{0}[/]", "Hello [World]".EscapeMarkup());
|
|
```
|
|
You can also use the `Markup.Escape` method.
|
|
|
|
```csharp
|
|
AnsiConsole.Markup("[red]{0}[/]", Markup.Escape("Hello [World]"));
|
|
```
|
|
|
|
## Escaping Interpolated Strings
|
|
|
|
When working with interpolated string, you can use the `MarkupInterpolated` and `MarkupInterpolatedLine` methods to automatically escape the values in the interpolated string holes.
|
|
|
|
```csharp
|
|
AnsiConsole.MarkupInterpolated("[red]{0}[/]", "Hello [World]");
|
|
```
|
|
|
|
## Setting background color
|
|
|
|
You can set the background color in markup by prefixing the color with
|
|
`on`.
|
|
|
|
```csharp
|
|
AnsiConsole.Markup("[bold yellow on blue]Hello[/]");
|
|
AnsiConsole.Markup("[default on blue]World[/]");
|
|
```
|
|
|
|
## Rendering emojis
|
|
|
|
To output an emoji as part of markup, you can use emoji shortcodes.
|
|
|
|
```csharp
|
|
AnsiConsole.Markup("Hello :globe_showing_europe_africa:!");
|
|
```
|
|
|
|
For a list of emoji, see the [Emojis](xref:emojis) appendix section.
|
|
|
|
## Colors
|
|
|
|
In the examples above, all colors were referenced by their name,
|
|
but you can also use the hex or rgb representation for colors in markdown.
|
|
|
|
```csharp
|
|
AnsiConsole.Markup("[red]Foo[/] ");
|
|
AnsiConsole.Markup("[#ff0000]Bar[/] ");
|
|
AnsiConsole.Markup("[rgb(255,0,0)]Baz[/] ");
|
|
```
|
|
|
|
For a list of colors, see the [Colors](xref:colors) appendix section.
|
|
|
|
## Styles
|
|
|
|
For a list of styles, see the [Styles](xref:styles) appendix section. |