Repository files navigation

ConsoleInk.NET

Build StatusNuGetLicense

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

  • Targets: .NET Standard 2.0 (C# 10.0 features required)
  • NuGet Package:ConsoleInk.Net
  • PowerShell Module: Included (ConsoleInk) for native PowerShell cmdlets
  • Latest Version: 0.1.4
  • Compatible with: .NET Core, .NET Framework, PowerShell 7+, Windows PowerShell 5.1+

Features

  • Streaming Markdown Processing: Renders Markdown incrementally, perfect for real-time display.
  • Zero External Dependencies: Relies only on the .NET Base Class Library (BCL).
  • ANSI Formatting: Outputs text with ANSI escape codes for colors and styles (bold, italic, underline, strikethrough).
  • CommonMark & GFM Support: Handles standard Markdown syntax including headings, lists (ordered, unordered, task lists), code blocks (indented and fenced), blockquotes, links (inline, reference*), images (inline alt text), and emphasis. Basic GFM table support is included. (Reference links render literally if definition appears after usage due to streaming nature).
  • Theming: Configurable themes (Default, Monochrome, or custom) to control output appearance.
  • HTML Stripping: Removes HTML tags from the output by default.
  • Word Wrapping: Automatically wraps text to fit the specified console width.
  • .NET Library & PowerShell Usage: Provides a C# library (ConsoleInk.Net) and can be used directly from PowerShell.
  • Hyperlinks: Supports true OSC-8 hyperlinks in terminal emulators that support them, with fallback to styled text rendering.
  • Code Blocks: Handles both indented and fenced code blocks with proper line preservation, indentation control, and syntax-highlighting style.

Feature Details

Hyperlinks

ConsoleInk.NET supports two styles of hyperlink rendering:

  1. True Hyperlinks (OSC-8): When UseHyperlinks = true (default) and the terminal supports it, clickable links are rendered using the OSC-8 ANSI escape sequence standard.
  2. Styled Text Fallback: When UseHyperlinks = false or in terminals without hyperlink support, links are rendered with styled text showing the URL in parentheses.
varoptions=newMarkdownRenderOptions{UseHyperlinks=true,// Enable true hyperlinks (default)Theme=newConsoleTheme{LinkTextStyle=Ansi.Underline+Ansi.FgBrightBlue,// Customize link text appearanceLinkUrlStyle=Ansi.FgBrightCyan// Customize URL text appearance (when not using hyperlinks)}};// Render markdown with hyperlinksstringmarkdown="Visit [GitHub](https://github.com/) for more info.";MarkdownConsole.Render(markdown,Console.Out,options);

Code Blocks

ConsoleInk.NET supports both indented and fenced code blocks with careful handling of line breaks:

  1. Indented Code Blocks: Code indented with 4 spaces or a tab.
  2. Fenced Code Blocks: Code surrounded by triple backticks (```), optionally specifying a language.

Code blocks preserve line breaks, maintain indentation within the block as written in the original markdown, and are rendered with optional syntax highlighting styles.

varoptions=newMarkdownRenderOptions{Theme=newConsoleTheme{CodeBlockStyle=Ansi.FgBrightBlack// Light gray code blocks}};// Example with fenced code blockstringmarkdown= """
# Code Example
```csharp
// This code will be rendered with proper indentation
if (condition)
{
Console.WriteLine("Indented line");
}

Regular text continues after the code block. """;

MarkdownConsole.Render(markdown, Console.Out, options);


## Installation
You can install the library via NuGet.
### NuGet Package Manager
```powershell
Install-Package ConsoleInk.Net -Version 0.1.4 # Adjust version if needed

.NET CLI

dotnet add package ConsoleInk.Net --version 0.1.4 # Adjust version if needed

PowerShell Module (ConsoleInk)

A native PowerShell module is included! Use the ConvertTo-Markdown cmdlet for Markdown rendering directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

All debugging logs and manual type checks have been removed—the module now provides clean, user-friendly output. If Import-Module succeeds, all cmdlets will work as shown in the demo. Troubleshooting is only needed if you see a true error message.

PowerShell Module Quick Start

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

See samples/PowerShell/Demo-Module-PSGallery.ps1 for a comprehensive, feature-rich example covering:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Cmdlet:

  • ConvertTo-Markdown

Supports pipeline and file input, width, theme selection, color toggling, and hyperlinks. See the Demo-Module.ps1 for a full-featured demonstration.

Tip: The .NET namespace for all types is ConsoleInk (e.g., [ConsoleInk.MarkdownRenderOptions]).

Usage

C# Library (ConsoleInk.Net)

Add a reference to the ConsoleInk.Net package or project.

See the src/ConsoleInk.Demo project for a runnable example.

usingConsoleInk.Net;// Namespace is ConsoleInkusingSystem.IO;// --- Batch Rendering ---stringmarkdown="""# Hello Console!This is **ConsoleInk.NET**.* Renders Markdown* Uses *ANSI* codes""";// Configure options (optional)varoptions=newMarkdownRenderOptions{ConsoleWidth=100,Theme=ConsoleTheme.Default};// Render to a stringstringansiOutput=MarkdownConsole.Render(markdown,options);Console.WriteLine(ansiOutput);// Render directly to the consoleMarkdownConsole.Render(markdown,Console.Out,options);// --- Streaming Rendering ---varinputStream=newStringReader("## Streaming Demo\nContent arrives piece by piece...");// Use the writer within a 'using' block for automatic disposal and completionusing(varwriter=newMarkdownConsoleWriter(Console.Out,options)){char[]buffer=newchar[50];intbytesRead;while((bytesRead=inputStream.Read(buffer,0,buffer.Length))>0){writer.Write(buffer,0,bytesRead);// writer.Flush(); // Optional: Flush periodically if neededSystem.Threading.Thread.Sleep(100);// Simulate delay}// writer.Complete(); // No longer needed! Dispose called implicitly by 'using'.}

To run the included C# demo:

dotnet run --project src/ConsoleInk.Demo/ConsoleInk.Demo.csproj

PowerShell Usage

Option 1: PowerShell Module (Recommended)

The ConsoleInk PowerShell module provides the ConvertTo-Markdown cmdlet for rendering Markdown directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

For a comprehensive, feature-rich example, see Demo-Module-PSGallery.ps1, which covers:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Option 2: Direct DLL Loading

You can also use ConsoleInk.Net directly from PowerShell by loading the compiled DLL. See samples/PowerShell/Demo.ps1 for a working example.

Steps:

  1. Build the Library: Ensure ConsoleInk.Net.dll exists (e.g., run dotnet build src/ConsoleInk.sln).
  2. Run the Script:
pwsh -File ./samples/PowerShell/Demo.ps1

You can specify -LibPath if you want to use a custom build directory.

Building & Testing

  1. Clone the repository:

    git clone https://github.com/stimpy77/ConsoleInk.NET.git
    cd ConsoleInk.NET
  2. Build the library:

    # Builds the ConsoleInk.Net library
    dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj
    • This will compile the ConsoleInk.Net library.
    • If building in Release configuration (dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj -c Release), the NuGet package (.nupkg) and symbols package (.snupkg) will be generated in src/ConsoleInk.Net/bin/Release/.
  3. Build the PowerShell module:

    # Build and copy DLL to PowerShell module
    ./build-psmodule.ps1
    • The PowerShell module requires the ConsoleInk.Net.dll to be copied to src/powershell-module/ConsoleInk/lib/.
    • Note: The DLL is not committed to git and must be built locally.
    • See src/powershell-module/README.md for more details.
  4. Run tests:

    dotnet test src/ConsoleInk.sln

Version Compatibility

  • Library: .NET Standard 2.0 (requires C# 10.0 features; ensure your build environment supports this)
  • Demo & PowerShell Module: .NET Standard 2.0
  • Tests: May target newer .NET for compatibility with latest test SDKs
  • PowerShell: Compatible with PowerShell 7+ and Windows PowerShell 5.1 (when run with .NET Standard 2.0 DLL)

Release Notes

  • 0.1.6 (2025-10-26):
    • Fixed hyperlinks and inline formatting (bold, italic, strikethrough) not rendering in list items
    • Improved PowerShell module build process - DLLs no longer committed to git
    • Added build-psmodule.ps1 script for streamlined PowerShell module builds
    • Fixed PowerShell Demo.ps1 script issues
  • 0.1.4 (2025-06-01):
    • Full .NET Standard 2.0 migration for library, demo, and PowerShell module
    • PowerShell module (ConsoleInk) released: ConvertTo-Markdown and Show-Markdown cmdlets, pipeline/file input, themes, color
    • All build/test/demo projects updated for compatibility and C# 10.0 features
    • Type-mismatch and build errors resolved for .NET Standard
    • Documentation updated for new module and usage

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ConsoleInk.NET

Build StatusNuGetLicense

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

  • Targets: .NET Standard 2.0 (C# 10.0 features required)
  • NuGet Package:ConsoleInk.Net
  • PowerShell Module: Included (ConsoleInk) for native PowerShell cmdlets
  • Latest Version: 0.1.4
  • Compatible with: .NET Core, .NET Framework, PowerShell 7+, Windows PowerShell 5.1+

Features

  • Streaming Markdown Processing: Renders Markdown incrementally, perfect for real-time display.
  • Zero External Dependencies: Relies only on the .NET Base Class Library (BCL).
  • ANSI Formatting: Outputs text with ANSI escape codes for colors and styles (bold, italic, underline, strikethrough).
  • CommonMark & GFM Support: Handles standard Markdown syntax including headings, lists (ordered, unordered, task lists), code blocks (indented and fenced), blockquotes, links (inline, reference*), images (inline alt text), and emphasis. Basic GFM table support is included. (Reference links render literally if definition appears after usage due to streaming nature).
  • Theming: Configurable themes (Default, Monochrome, or custom) to control output appearance.
  • HTML Stripping: Removes HTML tags from the output by default.
  • Word Wrapping: Automatically wraps text to fit the specified console width.
  • .NET Library & PowerShell Usage: Provides a C# library (ConsoleInk.Net) and can be used directly from PowerShell.
  • Hyperlinks: Supports true OSC-8 hyperlinks in terminal emulators that support them, with fallback to styled text rendering.
  • Code Blocks: Handles both indented and fenced code blocks with proper line preservation, indentation control, and syntax-highlighting style.

Feature Details

Hyperlinks

ConsoleInk.NET supports two styles of hyperlink rendering:

  1. True Hyperlinks (OSC-8): When UseHyperlinks = true (default) and the terminal supports it, clickable links are rendered using the OSC-8 ANSI escape sequence standard.
  2. Styled Text Fallback: When UseHyperlinks = false or in terminals without hyperlink support, links are rendered with styled text showing the URL in parentheses.
varoptions=newMarkdownRenderOptions{UseHyperlinks=true,// Enable true hyperlinks (default)Theme=newConsoleTheme{LinkTextStyle=Ansi.Underline+Ansi.FgBrightBlue,// Customize link text appearanceLinkUrlStyle=Ansi.FgBrightCyan// Customize URL text appearance (when not using hyperlinks)}};// Render markdown with hyperlinksstringmarkdown="Visit [GitHub](https://github.com/) for more info.";MarkdownConsole.Render(markdown,Console.Out,options);

Code Blocks

ConsoleInk.NET supports both indented and fenced code blocks with careful handling of line breaks:

  1. Indented Code Blocks: Code indented with 4 spaces or a tab.
  2. Fenced Code Blocks: Code surrounded by triple backticks (```), optionally specifying a language.

Code blocks preserve line breaks, maintain indentation within the block as written in the original markdown, and are rendered with optional syntax highlighting styles.

varoptions=newMarkdownRenderOptions{Theme=newConsoleTheme{CodeBlockStyle=Ansi.FgBrightBlack// Light gray code blocks}};// Example with fenced code blockstringmarkdown= """
# Code Example
```csharp
// This code will be rendered with proper indentation
if (condition)
{
Console.WriteLine("Indented line");
}

Regular text continues after the code block. """;

MarkdownConsole.Render(markdown, Console.Out, options);


## Installation
You can install the library via NuGet.
### NuGet Package Manager
```powershell
Install-Package ConsoleInk.Net -Version 0.1.4 # Adjust version if needed

.NET CLI

dotnet add package ConsoleInk.Net --version 0.1.4 # Adjust version if needed

PowerShell Module (ConsoleInk)

A native PowerShell module is included! Use the ConvertTo-Markdown cmdlet for Markdown rendering directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

All debugging logs and manual type checks have been removed—the module now provides clean, user-friendly output. If Import-Module succeeds, all cmdlets will work as shown in the demo. Troubleshooting is only needed if you see a true error message.

PowerShell Module Quick Start

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

See samples/PowerShell/Demo-Module-PSGallery.ps1 for a comprehensive, feature-rich example covering:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Cmdlet:

  • ConvertTo-Markdown

Supports pipeline and file input, width, theme selection, color toggling, and hyperlinks. See the Demo-Module.ps1 for a full-featured demonstration.

Tip: The .NET namespace for all types is ConsoleInk (e.g., [ConsoleInk.MarkdownRenderOptions]).

Usage

C# Library (ConsoleInk.Net)

Add a reference to the ConsoleInk.Net package or project.

See the src/ConsoleInk.Demo project for a runnable example.

usingConsoleInk.Net;// Namespace is ConsoleInkusingSystem.IO;// --- Batch Rendering ---stringmarkdown="""# Hello Console!This is **ConsoleInk.NET**.* Renders Markdown* Uses *ANSI* codes""";// Configure options (optional)varoptions=newMarkdownRenderOptions{ConsoleWidth=100,Theme=ConsoleTheme.Default};// Render to a stringstringansiOutput=MarkdownConsole.Render(markdown,options);Console.WriteLine(ansiOutput);// Render directly to the consoleMarkdownConsole.Render(markdown,Console.Out,options);// --- Streaming Rendering ---varinputStream=newStringReader("## Streaming Demo\nContent arrives piece by piece...");// Use the writer within a 'using' block for automatic disposal and completionusing(varwriter=newMarkdownConsoleWriter(Console.Out,options)){char[]buffer=newchar[50];intbytesRead;while((bytesRead=inputStream.Read(buffer,0,buffer.Length))>0){writer.Write(buffer,0,bytesRead);// writer.Flush(); // Optional: Flush periodically if neededSystem.Threading.Thread.Sleep(100);// Simulate delay}// writer.Complete(); // No longer needed! Dispose called implicitly by 'using'.}

To run the included C# demo:

dotnet run --project src/ConsoleInk.Demo/ConsoleInk.Demo.csproj

PowerShell Usage

Option 1: PowerShell Module (Recommended)

The ConsoleInk PowerShell module provides the ConvertTo-Markdown cmdlet for rendering Markdown directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

For a comprehensive, feature-rich example, see Demo-Module-PSGallery.ps1, which covers:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Option 2: Direct DLL Loading

You can also use ConsoleInk.Net directly from PowerShell by loading the compiled DLL. See samples/PowerShell/Demo.ps1 for a working example.

Steps:

  1. Build the Library: Ensure ConsoleInk.Net.dll exists (e.g., run dotnet build src/ConsoleInk.sln).
  2. Run the Script:
pwsh -File ./samples/PowerShell/Demo.ps1

You can specify -LibPath if you want to use a custom build directory.

Building & Testing

  1. Clone the repository:

    git clone https://github.com/stimpy77/ConsoleInk.NET.git
    cd ConsoleInk.NET
  2. Build the library:

    # Builds the ConsoleInk.Net library
    dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj
    • This will compile the ConsoleInk.Net library.
    • If building in Release configuration (dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj -c Release), the NuGet package (.nupkg) and symbols package (.snupkg) will be generated in src/ConsoleInk.Net/bin/Release/.
  3. Build the PowerShell module:

    # Build and copy DLL to PowerShell module
    ./build-psmodule.ps1
    • The PowerShell module requires the ConsoleInk.Net.dll to be copied to src/powershell-module/ConsoleInk/lib/.
    • Note: The DLL is not committed to git and must be built locally.
    • See src/powershell-module/README.md for more details.
  4. Run tests:

    dotnet test src/ConsoleInk.sln

Version Compatibility

  • Library: .NET Standard 2.0 (requires C# 10.0 features; ensure your build environment supports this)
  • Demo & PowerShell Module: .NET Standard 2.0
  • Tests: May target newer .NET for compatibility with latest test SDKs
  • PowerShell: Compatible with PowerShell 7+ and Windows PowerShell 5.1 (when run with .NET Standard 2.0 DLL)

Release Notes

  • 0.1.6 (2025-10-26):
    • Fixed hyperlinks and inline formatting (bold, italic, strikethrough) not rendering in list items
    • Improved PowerShell module build process - DLLs no longer committed to git
    • Added build-psmodule.ps1 script for streamlined PowerShell module builds
    • Fixed PowerShell Demo.ps1 script issues
  • 0.1.4 (2025-06-01):
    • Full .NET Standard 2.0 migration for library, demo, and PowerShell module
    • PowerShell module (ConsoleInk) released: ConvertTo-Markdown and Show-Markdown cmdlets, pipeline/file input, themes, color
    • All build/test/demo projects updated for compatibility and C# 10.0 features
    • Type-mismatch and build errors resolved for .NET Standard
    • Documentation updated for new module and usage

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ConsoleInk.NET

Build StatusNuGetLicense

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

  • Targets: .NET Standard 2.0 (C# 10.0 features required)
  • NuGet Package:ConsoleInk.Net
  • PowerShell Module: Included (ConsoleInk) for native PowerShell cmdlets
  • Latest Version: 0.1.4
  • Compatible with: .NET Core, .NET Framework, PowerShell 7+, Windows PowerShell 5.1+

Features

  • Streaming Markdown Processing: Renders Markdown incrementally, perfect for real-time display.
  • Zero External Dependencies: Relies only on the .NET Base Class Library (BCL).
  • ANSI Formatting: Outputs text with ANSI escape codes for colors and styles (bold, italic, underline, strikethrough).
  • CommonMark & GFM Support: Handles standard Markdown syntax including headings, lists (ordered, unordered, task lists), code blocks (indented and fenced), blockquotes, links (inline, reference*), images (inline alt text), and emphasis. Basic GFM table support is included. (Reference links render literally if definition appears after usage due to streaming nature).
  • Theming: Configurable themes (Default, Monochrome, or custom) to control output appearance.
  • HTML Stripping: Removes HTML tags from the output by default.
  • Word Wrapping: Automatically wraps text to fit the specified console width.
  • .NET Library & PowerShell Usage: Provides a C# library (ConsoleInk.Net) and can be used directly from PowerShell.
  • Hyperlinks: Supports true OSC-8 hyperlinks in terminal emulators that support them, with fallback to styled text rendering.
  • Code Blocks: Handles both indented and fenced code blocks with proper line preservation, indentation control, and syntax-highlighting style.

Feature Details

Hyperlinks

ConsoleInk.NET supports two styles of hyperlink rendering:

  1. True Hyperlinks (OSC-8): When UseHyperlinks = true (default) and the terminal supports it, clickable links are rendered using the OSC-8 ANSI escape sequence standard.
  2. Styled Text Fallback: When UseHyperlinks = false or in terminals without hyperlink support, links are rendered with styled text showing the URL in parentheses.
varoptions=newMarkdownRenderOptions{UseHyperlinks=true,// Enable true hyperlinks (default)Theme=newConsoleTheme{LinkTextStyle=Ansi.Underline+Ansi.FgBrightBlue,// Customize link text appearanceLinkUrlStyle=Ansi.FgBrightCyan// Customize URL text appearance (when not using hyperlinks)}};// Render markdown with hyperlinksstringmarkdown="Visit [GitHub](https://github.com/) for more info.";MarkdownConsole.Render(markdown,Console.Out,options);

Code Blocks

ConsoleInk.NET supports both indented and fenced code blocks with careful handling of line breaks:

  1. Indented Code Blocks: Code indented with 4 spaces or a tab.
  2. Fenced Code Blocks: Code surrounded by triple backticks (```), optionally specifying a language.

Code blocks preserve line breaks, maintain indentation within the block as written in the original markdown, and are rendered with optional syntax highlighting styles.

varoptions=newMarkdownRenderOptions{Theme=newConsoleTheme{CodeBlockStyle=Ansi.FgBrightBlack// Light gray code blocks}};// Example with fenced code blockstringmarkdown= """
# Code Example
```csharp
// This code will be rendered with proper indentation
if (condition)
{
Console.WriteLine("Indented line");
}

Regular text continues after the code block. """;

MarkdownConsole.Render(markdown, Console.Out, options);


## Installation
You can install the library via NuGet.
### NuGet Package Manager
```powershell
Install-Package ConsoleInk.Net -Version 0.1.4 # Adjust version if needed

.NET CLI

dotnet add package ConsoleInk.Net --version 0.1.4 # Adjust version if needed

PowerShell Module (ConsoleInk)

A native PowerShell module is included! Use the ConvertTo-Markdown cmdlet for Markdown rendering directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

All debugging logs and manual type checks have been removed—the module now provides clean, user-friendly output. If Import-Module succeeds, all cmdlets will work as shown in the demo. Troubleshooting is only needed if you see a true error message.

PowerShell Module Quick Start

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

See samples/PowerShell/Demo-Module-PSGallery.ps1 for a comprehensive, feature-rich example covering:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Cmdlet:

  • ConvertTo-Markdown

Supports pipeline and file input, width, theme selection, color toggling, and hyperlinks. See the Demo-Module.ps1 for a full-featured demonstration.

Tip: The .NET namespace for all types is ConsoleInk (e.g., [ConsoleInk.MarkdownRenderOptions]).

Usage

C# Library (ConsoleInk.Net)

Add a reference to the ConsoleInk.Net package or project.

See the src/ConsoleInk.Demo project for a runnable example.

usingConsoleInk.Net;// Namespace is ConsoleInkusingSystem.IO;// --- Batch Rendering ---stringmarkdown="""# Hello Console!This is **ConsoleInk.NET**.* Renders Markdown* Uses *ANSI* codes""";// Configure options (optional)varoptions=newMarkdownRenderOptions{ConsoleWidth=100,Theme=ConsoleTheme.Default};// Render to a stringstringansiOutput=MarkdownConsole.Render(markdown,options);Console.WriteLine(ansiOutput);// Render directly to the consoleMarkdownConsole.Render(markdown,Console.Out,options);// --- Streaming Rendering ---varinputStream=newStringReader("## Streaming Demo\nContent arrives piece by piece...");// Use the writer within a 'using' block for automatic disposal and completionusing(varwriter=newMarkdownConsoleWriter(Console.Out,options)){char[]buffer=newchar[50];intbytesRead;while((bytesRead=inputStream.Read(buffer,0,buffer.Length))>0){writer.Write(buffer,0,bytesRead);// writer.Flush(); // Optional: Flush periodically if neededSystem.Threading.Thread.Sleep(100);// Simulate delay}// writer.Complete(); // No longer needed! Dispose called implicitly by 'using'.}

To run the included C# demo:

dotnet run --project src/ConsoleInk.Demo/ConsoleInk.Demo.csproj

PowerShell Usage

Option 1: PowerShell Module (Recommended)

The ConsoleInk PowerShell module provides the ConvertTo-Markdown cmdlet for rendering Markdown directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

For a comprehensive, feature-rich example, see Demo-Module-PSGallery.ps1, which covers:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Option 2: Direct DLL Loading

You can also use ConsoleInk.Net directly from PowerShell by loading the compiled DLL. See samples/PowerShell/Demo.ps1 for a working example.

Steps:

  1. Build the Library: Ensure ConsoleInk.Net.dll exists (e.g., run dotnet build src/ConsoleInk.sln).
  2. Run the Script:
pwsh -File ./samples/PowerShell/Demo.ps1

You can specify -LibPath if you want to use a custom build directory.

Building & Testing

  1. Clone the repository:

    git clone https://github.com/stimpy77/ConsoleInk.NET.git
    cd ConsoleInk.NET
  2. Build the library:

    # Builds the ConsoleInk.Net library
    dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj
    • This will compile the ConsoleInk.Net library.
    • If building in Release configuration (dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj -c Release), the NuGet package (.nupkg) and symbols package (.snupkg) will be generated in src/ConsoleInk.Net/bin/Release/.
  3. Build the PowerShell module:

    # Build and copy DLL to PowerShell module
    ./build-psmodule.ps1
    • The PowerShell module requires the ConsoleInk.Net.dll to be copied to src/powershell-module/ConsoleInk/lib/.
    • Note: The DLL is not committed to git and must be built locally.
    • See src/powershell-module/README.md for more details.
  4. Run tests:

    dotnet test src/ConsoleInk.sln

Version Compatibility

  • Library: .NET Standard 2.0 (requires C# 10.0 features; ensure your build environment supports this)
  • Demo & PowerShell Module: .NET Standard 2.0
  • Tests: May target newer .NET for compatibility with latest test SDKs
  • PowerShell: Compatible with PowerShell 7+ and Windows PowerShell 5.1 (when run with .NET Standard 2.0 DLL)

Release Notes

  • 0.1.6 (2025-10-26):
    • Fixed hyperlinks and inline formatting (bold, italic, strikethrough) not rendering in list items
    • Improved PowerShell module build process - DLLs no longer committed to git
    • Added build-psmodule.ps1 script for streamlined PowerShell module builds
    • Fixed PowerShell Demo.ps1 script issues
  • 0.1.4 (2025-06-01):
    • Full .NET Standard 2.0 migration for library, demo, and PowerShell module
    • PowerShell module (ConsoleInk) released: ConvertTo-Markdown and Show-Markdown cmdlets, pipeline/file input, themes, color
    • All build/test/demo projects updated for compatibility and C# 10.0 features
    • Type-mismatch and build errors resolved for .NET Standard
    • Documentation updated for new module and usage

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ConsoleInk.NET

Build StatusNuGetLicense

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

  • Targets: .NET Standard 2.0 (C# 10.0 features required)
  • NuGet Package:ConsoleInk.Net
  • PowerShell Module: Included (ConsoleInk) for native PowerShell cmdlets
  • Latest Version: 0.1.4
  • Compatible with: .NET Core, .NET Framework, PowerShell 7+, Windows PowerShell 5.1+

Features

  • Streaming Markdown Processing: Renders Markdown incrementally, perfect for real-time display.
  • Zero External Dependencies: Relies only on the .NET Base Class Library (BCL).
  • ANSI Formatting: Outputs text with ANSI escape codes for colors and styles (bold, italic, underline, strikethrough).
  • CommonMark & GFM Support: Handles standard Markdown syntax including headings, lists (ordered, unordered, task lists), code blocks (indented and fenced), blockquotes, links (inline, reference*), images (inline alt text), and emphasis. Basic GFM table support is included. (Reference links render literally if definition appears after usage due to streaming nature).
  • Theming: Configurable themes (Default, Monochrome, or custom) to control output appearance.
  • HTML Stripping: Removes HTML tags from the output by default.
  • Word Wrapping: Automatically wraps text to fit the specified console width.
  • .NET Library & PowerShell Usage: Provides a C# library (ConsoleInk.Net) and can be used directly from PowerShell.
  • Hyperlinks: Supports true OSC-8 hyperlinks in terminal emulators that support them, with fallback to styled text rendering.
  • Code Blocks: Handles both indented and fenced code blocks with proper line preservation, indentation control, and syntax-highlighting style.

Feature Details

Hyperlinks

ConsoleInk.NET supports two styles of hyperlink rendering:

  1. True Hyperlinks (OSC-8): When UseHyperlinks = true (default) and the terminal supports it, clickable links are rendered using the OSC-8 ANSI escape sequence standard.
  2. Styled Text Fallback: When UseHyperlinks = false or in terminals without hyperlink support, links are rendered with styled text showing the URL in parentheses.
varoptions=newMarkdownRenderOptions{UseHyperlinks=true,// Enable true hyperlinks (default)Theme=newConsoleTheme{LinkTextStyle=Ansi.Underline+Ansi.FgBrightBlue,// Customize link text appearanceLinkUrlStyle=Ansi.FgBrightCyan// Customize URL text appearance (when not using hyperlinks)}};// Render markdown with hyperlinksstringmarkdown="Visit [GitHub](https://github.com/) for more info.";MarkdownConsole.Render(markdown,Console.Out,options);

Code Blocks

ConsoleInk.NET supports both indented and fenced code blocks with careful handling of line breaks:

  1. Indented Code Blocks: Code indented with 4 spaces or a tab.
  2. Fenced Code Blocks: Code surrounded by triple backticks (```), optionally specifying a language.

Code blocks preserve line breaks, maintain indentation within the block as written in the original markdown, and are rendered with optional syntax highlighting styles.

varoptions=newMarkdownRenderOptions{Theme=newConsoleTheme{CodeBlockStyle=Ansi.FgBrightBlack// Light gray code blocks}};// Example with fenced code blockstringmarkdown= """
# Code Example
```csharp
// This code will be rendered with proper indentation
if (condition)
{
Console.WriteLine("Indented line");
}

Regular text continues after the code block. """;

MarkdownConsole.Render(markdown, Console.Out, options);


## Installation
You can install the library via NuGet.
### NuGet Package Manager
```powershell
Install-Package ConsoleInk.Net -Version 0.1.4 # Adjust version if needed

.NET CLI

dotnet add package ConsoleInk.Net --version 0.1.4 # Adjust version if needed

PowerShell Module (ConsoleInk)

A native PowerShell module is included! Use the ConvertTo-Markdown cmdlet for Markdown rendering directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

All debugging logs and manual type checks have been removed—the module now provides clean, user-friendly output. If Import-Module succeeds, all cmdlets will work as shown in the demo. Troubleshooting is only needed if you see a true error message.

PowerShell Module Quick Start

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

See samples/PowerShell/Demo-Module-PSGallery.ps1 for a comprehensive, feature-rich example covering:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Cmdlet:

  • ConvertTo-Markdown

Supports pipeline and file input, width, theme selection, color toggling, and hyperlinks. See the Demo-Module.ps1 for a full-featured demonstration.

Tip: The .NET namespace for all types is ConsoleInk (e.g., [ConsoleInk.MarkdownRenderOptions]).

Usage

C# Library (ConsoleInk.Net)

Add a reference to the ConsoleInk.Net package or project.

See the src/ConsoleInk.Demo project for a runnable example.

usingConsoleInk.Net;// Namespace is ConsoleInkusingSystem.IO;// --- Batch Rendering ---stringmarkdown="""# Hello Console!This is **ConsoleInk.NET**.* Renders Markdown* Uses *ANSI* codes""";// Configure options (optional)varoptions=newMarkdownRenderOptions{ConsoleWidth=100,Theme=ConsoleTheme.Default};// Render to a stringstringansiOutput=MarkdownConsole.Render(markdown,options);Console.WriteLine(ansiOutput);// Render directly to the consoleMarkdownConsole.Render(markdown,Console.Out,options);// --- Streaming Rendering ---varinputStream=newStringReader("## Streaming Demo\nContent arrives piece by piece...");// Use the writer within a 'using' block for automatic disposal and completionusing(varwriter=newMarkdownConsoleWriter(Console.Out,options)){char[]buffer=newchar[50];intbytesRead;while((bytesRead=inputStream.Read(buffer,0,buffer.Length))>0){writer.Write(buffer,0,bytesRead);// writer.Flush(); // Optional: Flush periodically if neededSystem.Threading.Thread.Sleep(100);// Simulate delay}// writer.Complete(); // No longer needed! Dispose called implicitly by 'using'.}

To run the included C# demo:

dotnet run --project src/ConsoleInk.Demo/ConsoleInk.Demo.csproj

PowerShell Usage

Option 1: PowerShell Module (Recommended)

The ConsoleInk PowerShell module provides the ConvertTo-Markdown cmdlet for rendering Markdown directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

For a comprehensive, feature-rich example, see Demo-Module-PSGallery.ps1, which covers:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Option 2: Direct DLL Loading

You can also use ConsoleInk.Net directly from PowerShell by loading the compiled DLL. See samples/PowerShell/Demo.ps1 for a working example.

Steps:

  1. Build the Library: Ensure ConsoleInk.Net.dll exists (e.g., run dotnet build src/ConsoleInk.sln).
  2. Run the Script:
pwsh -File ./samples/PowerShell/Demo.ps1

You can specify -LibPath if you want to use a custom build directory.

Building & Testing

  1. Clone the repository:

    git clone https://github.com/stimpy77/ConsoleInk.NET.git
    cd ConsoleInk.NET
  2. Build the library:

    # Builds the ConsoleInk.Net library
    dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj
    • This will compile the ConsoleInk.Net library.
    • If building in Release configuration (dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj -c Release), the NuGet package (.nupkg) and symbols package (.snupkg) will be generated in src/ConsoleInk.Net/bin/Release/.
  3. Build the PowerShell module:

    # Build and copy DLL to PowerShell module
    ./build-psmodule.ps1
    • The PowerShell module requires the ConsoleInk.Net.dll to be copied to src/powershell-module/ConsoleInk/lib/.
    • Note: The DLL is not committed to git and must be built locally.
    • See src/powershell-module/README.md for more details.
  4. Run tests:

    dotnet test src/ConsoleInk.sln

Version Compatibility

  • Library: .NET Standard 2.0 (requires C# 10.0 features; ensure your build environment supports this)
  • Demo & PowerShell Module: .NET Standard 2.0
  • Tests: May target newer .NET for compatibility with latest test SDKs
  • PowerShell: Compatible with PowerShell 7+ and Windows PowerShell 5.1 (when run with .NET Standard 2.0 DLL)

Release Notes

  • 0.1.6 (2025-10-26):
    • Fixed hyperlinks and inline formatting (bold, italic, strikethrough) not rendering in list items
    • Improved PowerShell module build process - DLLs no longer committed to git
    • Added build-psmodule.ps1 script for streamlined PowerShell module builds
    • Fixed PowerShell Demo.ps1 script issues
  • 0.1.4 (2025-06-01):
    • Full .NET Standard 2.0 migration for library, demo, and PowerShell module
    • PowerShell module (ConsoleInk) released: ConvertTo-Markdown and Show-Markdown cmdlets, pipeline/file input, themes, color
    • All build/test/demo projects updated for compatibility and C# 10.0 features
    • Type-mismatch and build errors resolved for .NET Standard
    • Documentation updated for new module and usage

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

ConsoleInk.NET

Build StatusNuGetLicense

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

  • Targets: .NET Standard 2.0 (C# 10.0 features required)
  • NuGet Package:ConsoleInk.Net
  • PowerShell Module: Included (ConsoleInk) for native PowerShell cmdlets
  • Latest Version: 0.1.4
  • Compatible with: .NET Core, .NET Framework, PowerShell 7+, Windows PowerShell 5.1+

Features

  • Streaming Markdown Processing: Renders Markdown incrementally, perfect for real-time display.
  • Zero External Dependencies: Relies only on the .NET Base Class Library (BCL).
  • ANSI Formatting: Outputs text with ANSI escape codes for colors and styles (bold, italic, underline, strikethrough).
  • CommonMark & GFM Support: Handles standard Markdown syntax including headings, lists (ordered, unordered, task lists), code blocks (indented and fenced), blockquotes, links (inline, reference*), images (inline alt text), and emphasis. Basic GFM table support is included. (Reference links render literally if definition appears after usage due to streaming nature).
  • Theming: Configurable themes (Default, Monochrome, or custom) to control output appearance.
  • HTML Stripping: Removes HTML tags from the output by default.
  • Word Wrapping: Automatically wraps text to fit the specified console width.
  • .NET Library & PowerShell Usage: Provides a C# library (ConsoleInk.Net) and can be used directly from PowerShell.
  • Hyperlinks: Supports true OSC-8 hyperlinks in terminal emulators that support them, with fallback to styled text rendering.
  • Code Blocks: Handles both indented and fenced code blocks with proper line preservation, indentation control, and syntax-highlighting style.

Feature Details

Hyperlinks

ConsoleInk.NET supports two styles of hyperlink rendering:

  1. True Hyperlinks (OSC-8): When UseHyperlinks = true (default) and the terminal supports it, clickable links are rendered using the OSC-8 ANSI escape sequence standard.
  2. Styled Text Fallback: When UseHyperlinks = false or in terminals without hyperlink support, links are rendered with styled text showing the URL in parentheses.
varoptions=newMarkdownRenderOptions{UseHyperlinks=true,// Enable true hyperlinks (default)Theme=newConsoleTheme{LinkTextStyle=Ansi.Underline+Ansi.FgBrightBlue,// Customize link text appearanceLinkUrlStyle=Ansi.FgBrightCyan// Customize URL text appearance (when not using hyperlinks)}};// Render markdown with hyperlinksstringmarkdown="Visit [GitHub](https://github.com/) for more info.";MarkdownConsole.Render(markdown,Console.Out,options);

Code Blocks

ConsoleInk.NET supports both indented and fenced code blocks with careful handling of line breaks:

  1. Indented Code Blocks: Code indented with 4 spaces or a tab.
  2. Fenced Code Blocks: Code surrounded by triple backticks (```), optionally specifying a language.

Code blocks preserve line breaks, maintain indentation within the block as written in the original markdown, and are rendered with optional syntax highlighting styles.

varoptions=newMarkdownRenderOptions{Theme=newConsoleTheme{CodeBlockStyle=Ansi.FgBrightBlack// Light gray code blocks}};// Example with fenced code blockstringmarkdown= """
# Code Example
```csharp
// This code will be rendered with proper indentation
if (condition)
{
Console.WriteLine("Indented line");
}

Regular text continues after the code block. """;

MarkdownConsole.Render(markdown, Console.Out, options);


## Installation
You can install the library via NuGet.
### NuGet Package Manager
```powershell
Install-Package ConsoleInk.Net -Version 0.1.4 # Adjust version if needed

.NET CLI

dotnet add package ConsoleInk.Net --version 0.1.4 # Adjust version if needed

PowerShell Module (ConsoleInk)

A native PowerShell module is included! Use the ConvertTo-Markdown cmdlet for Markdown rendering directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

All debugging logs and manual type checks have been removed—the module now provides clean, user-friendly output. If Import-Module succeeds, all cmdlets will work as shown in the demo. Troubleshooting is only needed if you see a true error message.

PowerShell Module Quick Start

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

See samples/PowerShell/Demo-Module-PSGallery.ps1 for a comprehensive, feature-rich example covering:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Cmdlet:

  • ConvertTo-Markdown

Supports pipeline and file input, width, theme selection, color toggling, and hyperlinks. See the Demo-Module.ps1 for a full-featured demonstration.

Tip: The .NET namespace for all types is ConsoleInk (e.g., [ConsoleInk.MarkdownRenderOptions]).

Usage

C# Library (ConsoleInk.Net)

Add a reference to the ConsoleInk.Net package or project.

See the src/ConsoleInk.Demo project for a runnable example.

usingConsoleInk.Net;// Namespace is ConsoleInkusingSystem.IO;// --- Batch Rendering ---stringmarkdown="""# Hello Console!This is **ConsoleInk.NET**.* Renders Markdown* Uses *ANSI* codes""";// Configure options (optional)varoptions=newMarkdownRenderOptions{ConsoleWidth=100,Theme=ConsoleTheme.Default};// Render to a stringstringansiOutput=MarkdownConsole.Render(markdown,options);Console.WriteLine(ansiOutput);// Render directly to the consoleMarkdownConsole.Render(markdown,Console.Out,options);// --- Streaming Rendering ---varinputStream=newStringReader("## Streaming Demo\nContent arrives piece by piece...");// Use the writer within a 'using' block for automatic disposal and completionusing(varwriter=newMarkdownConsoleWriter(Console.Out,options)){char[]buffer=newchar[50];intbytesRead;while((bytesRead=inputStream.Read(buffer,0,buffer.Length))>0){writer.Write(buffer,0,bytesRead);// writer.Flush(); // Optional: Flush periodically if neededSystem.Threading.Thread.Sleep(100);// Simulate delay}// writer.Complete(); // No longer needed! Dispose called implicitly by 'using'.}

To run the included C# demo:

dotnet run --project src/ConsoleInk.Demo/ConsoleInk.Demo.csproj

PowerShell Usage

Option 1: PowerShell Module (Recommended)

The ConsoleInk PowerShell module provides the ConvertTo-Markdown cmdlet for rendering Markdown directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

For a comprehensive, feature-rich example, see Demo-Module-PSGallery.ps1, which covers:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Option 2: Direct DLL Loading

You can also use ConsoleInk.Net directly from PowerShell by loading the compiled DLL. See samples/PowerShell/Demo.ps1 for a working example.

Steps:

  1. Build the Library: Ensure ConsoleInk.Net.dll exists (e.g., run dotnet build src/ConsoleInk.sln).
  2. Run the Script:
pwsh -File ./samples/PowerShell/Demo.ps1

You can specify -LibPath if you want to use a custom build directory.

Building & Testing

  1. Clone the repository:

    git clone https://github.com/stimpy77/ConsoleInk.NET.git
    cd ConsoleInk.NET
  2. Build the library:

    # Builds the ConsoleInk.Net library
    dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj
    • This will compile the ConsoleInk.Net library.
    • If building in Release configuration (dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj -c Release), the NuGet package (.nupkg) and symbols package (.snupkg) will be generated in src/ConsoleInk.Net/bin/Release/.
  3. Build the PowerShell module:

    # Build and copy DLL to PowerShell module
    ./build-psmodule.ps1
    • The PowerShell module requires the ConsoleInk.Net.dll to be copied to src/powershell-module/ConsoleInk/lib/.
    • Note: The DLL is not committed to git and must be built locally.
    • See src/powershell-module/README.md for more details.
  4. Run tests:

    dotnet test src/ConsoleInk.sln

Version Compatibility

  • Library: .NET Standard 2.0 (requires C# 10.0 features; ensure your build environment supports this)
  • Demo & PowerShell Module: .NET Standard 2.0
  • Tests: May target newer .NET for compatibility with latest test SDKs
  • PowerShell: Compatible with PowerShell 7+ and Windows PowerShell 5.1 (when run with .NET Standard 2.0 DLL)

Release Notes

  • 0.1.6 (2025-10-26):
    • Fixed hyperlinks and inline formatting (bold, italic, strikethrough) not rendering in list items
    • Improved PowerShell module build process - DLLs no longer committed to git
    • Added build-psmodule.ps1 script for streamlined PowerShell module builds
    • Fixed PowerShell Demo.ps1 script issues
  • 0.1.4 (2025-06-01):
    • Full .NET Standard 2.0 migration for library, demo, and PowerShell module
    • PowerShell module (ConsoleInk) released: ConvertTo-Markdown and Show-Markdown cmdlets, pipeline/file input, themes, color
    • All build/test/demo projects updated for compatibility and C# 10.0 features
    • Type-mismatch and build errors resolved for .NET Standard
    • Documentation updated for new module and usage

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ConsoleInk.NET

Build StatusNuGetLicense

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

  • Targets: .NET Standard 2.0 (C# 10.0 features required)
  • NuGet Package:ConsoleInk.Net
  • PowerShell Module: Included (ConsoleInk) for native PowerShell cmdlets
  • Latest Version: 0.1.4
  • Compatible with: .NET Core, .NET Framework, PowerShell 7+, Windows PowerShell 5.1+

Features

  • Streaming Markdown Processing: Renders Markdown incrementally, perfect for real-time display.
  • Zero External Dependencies: Relies only on the .NET Base Class Library (BCL).
  • ANSI Formatting: Outputs text with ANSI escape codes for colors and styles (bold, italic, underline, strikethrough).
  • CommonMark & GFM Support: Handles standard Markdown syntax including headings, lists (ordered, unordered, task lists), code blocks (indented and fenced), blockquotes, links (inline, reference*), images (inline alt text), and emphasis. Basic GFM table support is included. (Reference links render literally if definition appears after usage due to streaming nature).
  • Theming: Configurable themes (Default, Monochrome, or custom) to control output appearance.
  • HTML Stripping: Removes HTML tags from the output by default.
  • Word Wrapping: Automatically wraps text to fit the specified console width.
  • .NET Library & PowerShell Usage: Provides a C# library (ConsoleInk.Net) and can be used directly from PowerShell.
  • Hyperlinks: Supports true OSC-8 hyperlinks in terminal emulators that support them, with fallback to styled text rendering.
  • Code Blocks: Handles both indented and fenced code blocks with proper line preservation, indentation control, and syntax-highlighting style.

Feature Details

Hyperlinks

ConsoleInk.NET supports two styles of hyperlink rendering:

  1. True Hyperlinks (OSC-8): When UseHyperlinks = true (default) and the terminal supports it, clickable links are rendered using the OSC-8 ANSI escape sequence standard.
  2. Styled Text Fallback: When UseHyperlinks = false or in terminals without hyperlink support, links are rendered with styled text showing the URL in parentheses.
varoptions=newMarkdownRenderOptions{UseHyperlinks=true,// Enable true hyperlinks (default)Theme=newConsoleTheme{LinkTextStyle=Ansi.Underline+Ansi.FgBrightBlue,// Customize link text appearanceLinkUrlStyle=Ansi.FgBrightCyan// Customize URL text appearance (when not using hyperlinks)}};// Render markdown with hyperlinksstringmarkdown="Visit [GitHub](https://github.com/) for more info.";MarkdownConsole.Render(markdown,Console.Out,options);

Code Blocks

ConsoleInk.NET supports both indented and fenced code blocks with careful handling of line breaks:

  1. Indented Code Blocks: Code indented with 4 spaces or a tab.
  2. Fenced Code Blocks: Code surrounded by triple backticks (```), optionally specifying a language.

Code blocks preserve line breaks, maintain indentation within the block as written in the original markdown, and are rendered with optional syntax highlighting styles.

varoptions=newMarkdownRenderOptions{Theme=newConsoleTheme{CodeBlockStyle=Ansi.FgBrightBlack// Light gray code blocks}};// Example with fenced code blockstringmarkdown= """
# Code Example
```csharp
// This code will be rendered with proper indentation
if (condition)
{
Console.WriteLine("Indented line");
}

Regular text continues after the code block. """;

MarkdownConsole.Render(markdown, Console.Out, options);


## Installation
You can install the library via NuGet.
### NuGet Package Manager
```powershell
Install-Package ConsoleInk.Net -Version 0.1.4 # Adjust version if needed

.NET CLI

dotnet add package ConsoleInk.Net --version 0.1.4 # Adjust version if needed

PowerShell Module (ConsoleInk)

A native PowerShell module is included! Use the ConvertTo-Markdown cmdlet for Markdown rendering directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

All debugging logs and manual type checks have been removed—the module now provides clean, user-friendly output. If Import-Module succeeds, all cmdlets will work as shown in the demo. Troubleshooting is only needed if you see a true error message.

PowerShell Module Quick Start

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

See samples/PowerShell/Demo-Module-PSGallery.ps1 for a comprehensive, feature-rich example covering:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Cmdlet:

  • ConvertTo-Markdown

Supports pipeline and file input, width, theme selection, color toggling, and hyperlinks. See the Demo-Module.ps1 for a full-featured demonstration.

Tip: The .NET namespace for all types is ConsoleInk (e.g., [ConsoleInk.MarkdownRenderOptions]).

Usage

C# Library (ConsoleInk.Net)

Add a reference to the ConsoleInk.Net package or project.

See the src/ConsoleInk.Demo project for a runnable example.

usingConsoleInk.Net;// Namespace is ConsoleInkusingSystem.IO;// --- Batch Rendering ---stringmarkdown="""# Hello Console!This is **ConsoleInk.NET**.* Renders Markdown* Uses *ANSI* codes""";// Configure options (optional)varoptions=newMarkdownRenderOptions{ConsoleWidth=100,Theme=ConsoleTheme.Default};// Render to a stringstringansiOutput=MarkdownConsole.Render(markdown,options);Console.WriteLine(ansiOutput);// Render directly to the consoleMarkdownConsole.Render(markdown,Console.Out,options);// --- Streaming Rendering ---varinputStream=newStringReader("## Streaming Demo\nContent arrives piece by piece...");// Use the writer within a 'using' block for automatic disposal and completionusing(varwriter=newMarkdownConsoleWriter(Console.Out,options)){char[]buffer=newchar[50];intbytesRead;while((bytesRead=inputStream.Read(buffer,0,buffer.Length))>0){writer.Write(buffer,0,bytesRead);// writer.Flush(); // Optional: Flush periodically if neededSystem.Threading.Thread.Sleep(100);// Simulate delay}// writer.Complete(); // No longer needed! Dispose called implicitly by 'using'.}

To run the included C# demo:

dotnet run --project src/ConsoleInk.Demo/ConsoleInk.Demo.csproj

PowerShell Usage

Option 1: PowerShell Module (Recommended)

The ConsoleInk PowerShell module provides the ConvertTo-Markdown cmdlet for rendering Markdown directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

For a comprehensive, feature-rich example, see Demo-Module-PSGallery.ps1, which covers:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Option 2: Direct DLL Loading

You can also use ConsoleInk.Net directly from PowerShell by loading the compiled DLL. See samples/PowerShell/Demo.ps1 for a working example.

Steps:

  1. Build the Library: Ensure ConsoleInk.Net.dll exists (e.g., run dotnet build src/ConsoleInk.sln).
  2. Run the Script:
pwsh -File ./samples/PowerShell/Demo.ps1

You can specify -LibPath if you want to use a custom build directory.

Building & Testing

  1. Clone the repository:

    git clone https://github.com/stimpy77/ConsoleInk.NET.git
    cd ConsoleInk.NET
  2. Build the library:

    # Builds the ConsoleInk.Net library
    dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj
    • This will compile the ConsoleInk.Net library.
    • If building in Release configuration (dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj -c Release), the NuGet package (.nupkg) and symbols package (.snupkg) will be generated in src/ConsoleInk.Net/bin/Release/.
  3. Build the PowerShell module:

    # Build and copy DLL to PowerShell module
    ./build-psmodule.ps1
    • The PowerShell module requires the ConsoleInk.Net.dll to be copied to src/powershell-module/ConsoleInk/lib/.
    • Note: The DLL is not committed to git and must be built locally.
    • See src/powershell-module/README.md for more details.
  4. Run tests:

    dotnet test src/ConsoleInk.sln

Version Compatibility

  • Library: .NET Standard 2.0 (requires C# 10.0 features; ensure your build environment supports this)
  • Demo & PowerShell Module: .NET Standard 2.0
  • Tests: May target newer .NET for compatibility with latest test SDKs
  • PowerShell: Compatible with PowerShell 7+ and Windows PowerShell 5.1 (when run with .NET Standard 2.0 DLL)

Release Notes

  • 0.1.6 (2025-10-26):
    • Fixed hyperlinks and inline formatting (bold, italic, strikethrough) not rendering in list items
    • Improved PowerShell module build process - DLLs no longer committed to git
    • Added build-psmodule.ps1 script for streamlined PowerShell module builds
    • Fixed PowerShell Demo.ps1 script issues
  • 0.1.4 (2025-06-01):
    • Full .NET Standard 2.0 migration for library, demo, and PowerShell module
    • PowerShell module (ConsoleInk) released: ConvertTo-Markdown and Show-Markdown cmdlets, pipeline/file input, themes, color
    • All build/test/demo projects updated for compatibility and C# 10.0 features
    • Type-mismatch and build errors resolved for .NET Standard
    • Documentation updated for new module and usage

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ConsoleInk.NET

Build StatusNuGetLicense

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

  • Targets: .NET Standard 2.0 (C# 10.0 features required)
  • NuGet Package:ConsoleInk.Net
  • PowerShell Module: Included (ConsoleInk) for native PowerShell cmdlets
  • Latest Version: 0.1.4
  • Compatible with: .NET Core, .NET Framework, PowerShell 7+, Windows PowerShell 5.1+

Features

  • Streaming Markdown Processing: Renders Markdown incrementally, perfect for real-time display.
  • Zero External Dependencies: Relies only on the .NET Base Class Library (BCL).
  • ANSI Formatting: Outputs text with ANSI escape codes for colors and styles (bold, italic, underline, strikethrough).
  • CommonMark & GFM Support: Handles standard Markdown syntax including headings, lists (ordered, unordered, task lists), code blocks (indented and fenced), blockquotes, links (inline, reference*), images (inline alt text), and emphasis. Basic GFM table support is included. (Reference links render literally if definition appears after usage due to streaming nature).
  • Theming: Configurable themes (Default, Monochrome, or custom) to control output appearance.
  • HTML Stripping: Removes HTML tags from the output by default.
  • Word Wrapping: Automatically wraps text to fit the specified console width.
  • .NET Library & PowerShell Usage: Provides a C# library (ConsoleInk.Net) and can be used directly from PowerShell.
  • Hyperlinks: Supports true OSC-8 hyperlinks in terminal emulators that support them, with fallback to styled text rendering.
  • Code Blocks: Handles both indented and fenced code blocks with proper line preservation, indentation control, and syntax-highlighting style.

Feature Details

Hyperlinks

ConsoleInk.NET supports two styles of hyperlink rendering:

  1. True Hyperlinks (OSC-8): When UseHyperlinks = true (default) and the terminal supports it, clickable links are rendered using the OSC-8 ANSI escape sequence standard.
  2. Styled Text Fallback: When UseHyperlinks = false or in terminals without hyperlink support, links are rendered with styled text showing the URL in parentheses.
varoptions=newMarkdownRenderOptions{UseHyperlinks=true,// Enable true hyperlinks (default)Theme=newConsoleTheme{LinkTextStyle=Ansi.Underline+Ansi.FgBrightBlue,// Customize link text appearanceLinkUrlStyle=Ansi.FgBrightCyan// Customize URL text appearance (when not using hyperlinks)}};// Render markdown with hyperlinksstringmarkdown="Visit [GitHub](https://github.com/) for more info.";MarkdownConsole.Render(markdown,Console.Out,options);

Code Blocks

ConsoleInk.NET supports both indented and fenced code blocks with careful handling of line breaks:

  1. Indented Code Blocks: Code indented with 4 spaces or a tab.
  2. Fenced Code Blocks: Code surrounded by triple backticks (```), optionally specifying a language.

Code blocks preserve line breaks, maintain indentation within the block as written in the original markdown, and are rendered with optional syntax highlighting styles.

varoptions=newMarkdownRenderOptions{Theme=newConsoleTheme{CodeBlockStyle=Ansi.FgBrightBlack// Light gray code blocks}};// Example with fenced code blockstringmarkdown= """
# Code Example
```csharp
// This code will be rendered with proper indentation
if (condition)
{
Console.WriteLine("Indented line");
}

Regular text continues after the code block. """;

MarkdownConsole.Render(markdown, Console.Out, options);


## Installation
You can install the library via NuGet.
### NuGet Package Manager
```powershell
Install-Package ConsoleInk.Net -Version 0.1.4 # Adjust version if needed

.NET CLI

dotnet add package ConsoleInk.Net --version 0.1.4 # Adjust version if needed

PowerShell Module (ConsoleInk)

A native PowerShell module is included! Use the ConvertTo-Markdown cmdlet for Markdown rendering directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

All debugging logs and manual type checks have been removed—the module now provides clean, user-friendly output. If Import-Module succeeds, all cmdlets will work as shown in the demo. Troubleshooting is only needed if you see a true error message.

PowerShell Module Quick Start

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

See samples/PowerShell/Demo-Module-PSGallery.ps1 for a comprehensive, feature-rich example covering:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Cmdlet:

  • ConvertTo-Markdown

Supports pipeline and file input, width, theme selection, color toggling, and hyperlinks. See the Demo-Module.ps1 for a full-featured demonstration.

Tip: The .NET namespace for all types is ConsoleInk (e.g., [ConsoleInk.MarkdownRenderOptions]).

Usage

C# Library (ConsoleInk.Net)

Add a reference to the ConsoleInk.Net package or project.

See the src/ConsoleInk.Demo project for a runnable example.

usingConsoleInk.Net;// Namespace is ConsoleInkusingSystem.IO;// --- Batch Rendering ---stringmarkdown="""# Hello Console!This is **ConsoleInk.NET**.* Renders Markdown* Uses *ANSI* codes""";// Configure options (optional)varoptions=newMarkdownRenderOptions{ConsoleWidth=100,Theme=ConsoleTheme.Default};// Render to a stringstringansiOutput=MarkdownConsole.Render(markdown,options);Console.WriteLine(ansiOutput);// Render directly to the consoleMarkdownConsole.Render(markdown,Console.Out,options);// --- Streaming Rendering ---varinputStream=newStringReader("## Streaming Demo\nContent arrives piece by piece...");// Use the writer within a 'using' block for automatic disposal and completionusing(varwriter=newMarkdownConsoleWriter(Console.Out,options)){char[]buffer=newchar[50];intbytesRead;while((bytesRead=inputStream.Read(buffer,0,buffer.Length))>0){writer.Write(buffer,0,bytesRead);// writer.Flush(); // Optional: Flush periodically if neededSystem.Threading.Thread.Sleep(100);// Simulate delay}// writer.Complete(); // No longer needed! Dispose called implicitly by 'using'.}

To run the included C# demo:

dotnet run --project src/ConsoleInk.Demo/ConsoleInk.Demo.csproj

PowerShell Usage

Option 1: PowerShell Module (Recommended)

The ConsoleInk PowerShell module provides the ConvertTo-Markdown cmdlet for rendering Markdown directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

For a comprehensive, feature-rich example, see Demo-Module-PSGallery.ps1, which covers:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Option 2: Direct DLL Loading

You can also use ConsoleInk.Net directly from PowerShell by loading the compiled DLL. See samples/PowerShell/Demo.ps1 for a working example.

Steps:

  1. Build the Library: Ensure ConsoleInk.Net.dll exists (e.g., run dotnet build src/ConsoleInk.sln).
  2. Run the Script:
pwsh -File ./samples/PowerShell/Demo.ps1

You can specify -LibPath if you want to use a custom build directory.

Building & Testing

  1. Clone the repository:

    git clone https://github.com/stimpy77/ConsoleInk.NET.git
    cd ConsoleInk.NET
  2. Build the library:

    # Builds the ConsoleInk.Net library
    dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj
    • This will compile the ConsoleInk.Net library.
    • If building in Release configuration (dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj -c Release), the NuGet package (.nupkg) and symbols package (.snupkg) will be generated in src/ConsoleInk.Net/bin/Release/.
  3. Build the PowerShell module:

    # Build and copy DLL to PowerShell module
    ./build-psmodule.ps1
    • The PowerShell module requires the ConsoleInk.Net.dll to be copied to src/powershell-module/ConsoleInk/lib/.
    • Note: The DLL is not committed to git and must be built locally.
    • See src/powershell-module/README.md for more details.
  4. Run tests:

    dotnet test src/ConsoleInk.sln

Version Compatibility

  • Library: .NET Standard 2.0 (requires C# 10.0 features; ensure your build environment supports this)
  • Demo & PowerShell Module: .NET Standard 2.0
  • Tests: May target newer .NET for compatibility with latest test SDKs
  • PowerShell: Compatible with PowerShell 7+ and Windows PowerShell 5.1 (when run with .NET Standard 2.0 DLL)

Release Notes

  • 0.1.6 (2025-10-26):
    • Fixed hyperlinks and inline formatting (bold, italic, strikethrough) not rendering in list items
    • Improved PowerShell module build process - DLLs no longer committed to git
    • Added build-psmodule.ps1 script for streamlined PowerShell module builds
    • Fixed PowerShell Demo.ps1 script issues
  • 0.1.4 (2025-06-01):
    • Full .NET Standard 2.0 migration for library, demo, and PowerShell module
    • PowerShell module (ConsoleInk) released: ConvertTo-Markdown and Show-Markdown cmdlets, pipeline/file input, themes, color
    • All build/test/demo projects updated for compatibility and C# 10.0 features
    • Type-mismatch and build errors resolved for .NET Standard
    • Documentation updated for new module and usage

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

ConsoleInk.NET

Build StatusNuGetLicense

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

  • Targets: .NET Standard 2.0 (C# 10.0 features required)
  • NuGet Package:ConsoleInk.Net
  • PowerShell Module: Included (ConsoleInk) for native PowerShell cmdlets
  • Latest Version: 0.1.4
  • Compatible with: .NET Core, .NET Framework, PowerShell 7+, Windows PowerShell 5.1+

Features

  • Streaming Markdown Processing: Renders Markdown incrementally, perfect for real-time display.
  • Zero External Dependencies: Relies only on the .NET Base Class Library (BCL).
  • ANSI Formatting: Outputs text with ANSI escape codes for colors and styles (bold, italic, underline, strikethrough).
  • CommonMark & GFM Support: Handles standard Markdown syntax including headings, lists (ordered, unordered, task lists), code blocks (indented and fenced), blockquotes, links (inline, reference*), images (inline alt text), and emphasis. Basic GFM table support is included. (Reference links render literally if definition appears after usage due to streaming nature).
  • Theming: Configurable themes (Default, Monochrome, or custom) to control output appearance.
  • HTML Stripping: Removes HTML tags from the output by default.
  • Word Wrapping: Automatically wraps text to fit the specified console width.
  • .NET Library & PowerShell Usage: Provides a C# library (ConsoleInk.Net) and can be used directly from PowerShell.
  • Hyperlinks: Supports true OSC-8 hyperlinks in terminal emulators that support them, with fallback to styled text rendering.
  • Code Blocks: Handles both indented and fenced code blocks with proper line preservation, indentation control, and syntax-highlighting style.

Feature Details

Hyperlinks

ConsoleInk.NET supports two styles of hyperlink rendering:

  1. True Hyperlinks (OSC-8): When UseHyperlinks = true (default) and the terminal supports it, clickable links are rendered using the OSC-8 ANSI escape sequence standard.
  2. Styled Text Fallback: When UseHyperlinks = false or in terminals without hyperlink support, links are rendered with styled text showing the URL in parentheses.
varoptions=newMarkdownRenderOptions{UseHyperlinks=true,// Enable true hyperlinks (default)Theme=newConsoleTheme{LinkTextStyle=Ansi.Underline+Ansi.FgBrightBlue,// Customize link text appearanceLinkUrlStyle=Ansi.FgBrightCyan// Customize URL text appearance (when not using hyperlinks)}};// Render markdown with hyperlinksstringmarkdown="Visit [GitHub](https://github.com/) for more info.";MarkdownConsole.Render(markdown,Console.Out,options);

Code Blocks

ConsoleInk.NET supports both indented and fenced code blocks with careful handling of line breaks:

  1. Indented Code Blocks: Code indented with 4 spaces or a tab.
  2. Fenced Code Blocks: Code surrounded by triple backticks (```), optionally specifying a language.

Code blocks preserve line breaks, maintain indentation within the block as written in the original markdown, and are rendered with optional syntax highlighting styles.

varoptions=newMarkdownRenderOptions{Theme=newConsoleTheme{CodeBlockStyle=Ansi.FgBrightBlack// Light gray code blocks}};// Example with fenced code blockstringmarkdown= """
# Code Example
```csharp
// This code will be rendered with proper indentation
if (condition)
{
Console.WriteLine("Indented line");
}

Regular text continues after the code block. """;

MarkdownConsole.Render(markdown, Console.Out, options);


## Installation
You can install the library via NuGet.
### NuGet Package Manager
```powershell
Install-Package ConsoleInk.Net -Version 0.1.4 # Adjust version if needed

.NET CLI

dotnet add package ConsoleInk.Net --version 0.1.4 # Adjust version if needed

PowerShell Module (ConsoleInk)

A native PowerShell module is included! Use the ConvertTo-Markdown cmdlet for Markdown rendering directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

All debugging logs and manual type checks have been removed—the module now provides clean, user-friendly output. If Import-Module succeeds, all cmdlets will work as shown in the demo. Troubleshooting is only needed if you see a true error message.

PowerShell Module Quick Start

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

See samples/PowerShell/Demo-Module-PSGallery.ps1 for a comprehensive, feature-rich example covering:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Cmdlet:

  • ConvertTo-Markdown

Supports pipeline and file input, width, theme selection, color toggling, and hyperlinks. See the Demo-Module.ps1 for a full-featured demonstration.

Tip: The .NET namespace for all types is ConsoleInk (e.g., [ConsoleInk.MarkdownRenderOptions]).

Usage

C# Library (ConsoleInk.Net)

Add a reference to the ConsoleInk.Net package or project.

See the src/ConsoleInk.Demo project for a runnable example.

usingConsoleInk.Net;// Namespace is ConsoleInkusingSystem.IO;// --- Batch Rendering ---stringmarkdown="""# Hello Console!This is **ConsoleInk.NET**.* Renders Markdown* Uses *ANSI* codes""";// Configure options (optional)varoptions=newMarkdownRenderOptions{ConsoleWidth=100,Theme=ConsoleTheme.Default};// Render to a stringstringansiOutput=MarkdownConsole.Render(markdown,options);Console.WriteLine(ansiOutput);// Render directly to the consoleMarkdownConsole.Render(markdown,Console.Out,options);// --- Streaming Rendering ---varinputStream=newStringReader("## Streaming Demo\nContent arrives piece by piece...");// Use the writer within a 'using' block for automatic disposal and completionusing(varwriter=newMarkdownConsoleWriter(Console.Out,options)){char[]buffer=newchar[50];intbytesRead;while((bytesRead=inputStream.Read(buffer,0,buffer.Length))>0){writer.Write(buffer,0,bytesRead);// writer.Flush(); // Optional: Flush periodically if neededSystem.Threading.Thread.Sleep(100);// Simulate delay}// writer.Complete(); // No longer needed! Dispose called implicitly by 'using'.}

To run the included C# demo:

dotnet run --project src/ConsoleInk.Demo/ConsoleInk.Demo.csproj

PowerShell Usage

Option 1: PowerShell Module (Recommended)

The ConsoleInk PowerShell module provides the ConvertTo-Markdown cmdlet for rendering Markdown directly in the console, with full support for pipeline input, file input, themes, width, color options, and hyperlinks.

Install from PowerShell Gallery:

Install-Module-Name ConsoleInk -Scope CurrentUser

Import the module:

Import-Module ConsoleInk

Render Markdown from a string:

'## Hello from ConsoleInk!'|ConvertTo-Markdown

Render Markdown from a file:

ConvertTo-Markdown-Path ./README.md

Customize output:

'## Monochrome'|ConvertTo-Markdown-Theme Monochrome
'## No Color'|ConvertTo-Markdown-NoColor
'## Custom Width'|ConvertTo-Markdown-Width 100

Pipeline usage:

Get-Content ./README.md |ConvertTo-Markdown

For a comprehensive, feature-rich example, see Demo-Module-PSGallery.ps1, which covers:

  • Pipeline input
  • File input
  • Theme selection (Default/Monochrome)
  • Width selection
  • Hyperlink rendering (OSC 8)
  • Error handling

Option 2: Direct DLL Loading

You can also use ConsoleInk.Net directly from PowerShell by loading the compiled DLL. See samples/PowerShell/Demo.ps1 for a working example.

Steps:

  1. Build the Library: Ensure ConsoleInk.Net.dll exists (e.g., run dotnet build src/ConsoleInk.sln).
  2. Run the Script:
pwsh -File ./samples/PowerShell/Demo.ps1

You can specify -LibPath if you want to use a custom build directory.

Building & Testing

  1. Clone the repository:

    git clone https://github.com/stimpy77/ConsoleInk.NET.git
    cd ConsoleInk.NET
  2. Build the library:

    # Builds the ConsoleInk.Net library
    dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj
    • This will compile the ConsoleInk.Net library.
    • If building in Release configuration (dotnet build src/ConsoleInk.Net/ConsoleInk.Net.csproj -c Release), the NuGet package (.nupkg) and symbols package (.snupkg) will be generated in src/ConsoleInk.Net/bin/Release/.
  3. Build the PowerShell module:

    # Build and copy DLL to PowerShell module
    ./build-psmodule.ps1
    • The PowerShell module requires the ConsoleInk.Net.dll to be copied to src/powershell-module/ConsoleInk/lib/.
    • Note: The DLL is not committed to git and must be built locally.
    • See src/powershell-module/README.md for more details.
  4. Run tests:

    dotnet test src/ConsoleInk.sln

Version Compatibility

  • Library: .NET Standard 2.0 (requires C# 10.0 features; ensure your build environment supports this)
  • Demo & PowerShell Module: .NET Standard 2.0
  • Tests: May target newer .NET for compatibility with latest test SDKs
  • PowerShell: Compatible with PowerShell 7+ and Windows PowerShell 5.1 (when run with .NET Standard 2.0 DLL)

Release Notes

  • 0.1.6 (2025-10-26):
    • Fixed hyperlinks and inline formatting (bold, italic, strikethrough) not rendering in list items
    • Improved PowerShell module build process - DLLs no longer committed to git
    • Added build-psmodule.ps1 script for streamlined PowerShell module builds
    • Fixed PowerShell Demo.ps1 script issues
  • 0.1.4 (2025-06-01):
    • Full .NET Standard 2.0 migration for library, demo, and PowerShell module
    • PowerShell module (ConsoleInk) released: ConvertTo-Markdown and Show-Markdown cmdlets, pipeline/file input, themes, color
    • All build/test/demo projects updated for compatibility and C# 10.0 features
    • Type-mismatch and build errors resolved for .NET Standard
    • Documentation updated for new module and usage

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

ConsoleInk.NET is a lightweight, zero-dependency .NET library for rendering Markdown text directly into ANSI-formatted output suitable for modern console applications, PowerShell, and CI environments. It focuses on streaming processing, enabling efficient rendering of Markdown content as it arrives.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages