How spectreconsole/spectre.console works
Spectre.Console is a .NET library for building styled, interactive console applications. An application writes renderables through the console API; renderables are measured and converted into segments, then the console backend emits text and terminal control sequences. The repository also contains dedicated subsystems for prompts, live displays and progress, structured widgets, JSON and image extensions, and terminal styling/capability detection. The sampled sources establish the rendering and test-console paths; links to several unsampled subsystems are shown as unverified rather than asserted as observed calls.
Main entry points: AnsiConsole.cs Console API · IRenderable.cs Renderable contract · AnsiWriter.cs ANSI writer · TestConsole.cs Test console
Components 21
Console runtime
- Console API
src/Spectre.Console/AnsiConsole.cs - Console contract
src/Spectre.Console/IAnsiConsole.cs - Console profile
src/Spectre.Console/Profile.cs - Capabilities
src/Spectre.Console/Capabilities.cs - Console backends
src/Spectre.Console/Internal/Backends/Ansi/AnsiConsoleBackend.cs - Test console
src/Spectre.Console.Testing/TestConsole.cs
Rendering and widgets
- Render pipeline
src/Spectre.Console/Rendering/RenderPipeline.cs - Renderable contract
src/Spectre.Console/Rendering/IRenderable.cs - Rendered segments
src/Spectre.Console/Rendering/Segment.cs - Text and paragraphs
src/Spectre.Console/Widgets/Paragraph.cs - Markup
src/Spectre.Console/Widgets/Markup.cs - Structured widgets
src/Spectre.Console/Widgets/Table/TableRendererContext.cs
Terminal styling
- ANSI writer
src/Spectre.Console.Ansi/AnsiWriter.cs - Styles and colors
src/Spectre.Console.Ansi/Style.cs
Interactive displays
- Prompts
src/Spectre.Console/Prompts - Live displays
src/Spectre.Console/Live/LiveDisplay.cs - Progress reporting
src/Spectre.Console/Live/Progress/Progress.cs
Extensions
- JSON rendering
src/Extensions/Spectre.Console.Json/JsonParser.cs - Canvas images
src/Extensions/Spectre.Console.ImageSharp/CanvasImage.cs
Other components
- Application
- Terminal
Connections 21
- Application → Console API: writes through
README.md - Console API → Renderable contract: accepts renderables
- Renderable contract → Render pipeline: processes through
src/Spectre.Console/Rendering/IRenderable.cs - Renderable contract → Rendered segments: renders as
src/Spectre.Console/Rendering/IRenderable.cs - Text and paragraphs → Rendered segments: produces
src/Spectre.Console/Widgets/Paragraph.cs - Console API → Console profile: uses profile
- Console profile → Capabilities: holds capabilities
src/Spectre.Console/Profile.cs - Console API → Console backends: dispatches to
- Console backends → ANSI writer: emits terminal codes
- ANSI writer → Styles and colors: encodes styling
src/Spectre.Console.Ansi/AnsiWriter.cs - Markup → Styles and colors: parses styles
src/Spectre.Console/Widgets/Markup.cs - Console API → Prompts: offers prompts
- Console API → Live displays: offers live output
- Live displays → Progress reporting: includes progress
- Application → Structured widgets: uses widgets
README.md - Application → Markup: styles text with
README.md - JSON rendering → Renderable contract: renders as
- Canvas images → Renderable contract: implements rendering
src/Extensions/Spectre.Console.ImageSharp/CanvasImage.cs - Test console → Console API: creates console
src/Spectre.Console.Testing/TestConsole.cs - Test console → Terminal: captures output
src/Spectre.Console.Testing/TestConsole.cs - ANSI writer → Terminal: writes sequences