buffer 3.3.0
See the version list below for details.
dotnet add package buffer --version 3.3.0
NuGet\Install-Package buffer -Version 3.3.0
<PackageReference Include="buffer" Version="3.3.0" />
<PackageVersion Include="buffer" Version="3.3.0" />
<PackageReference Include="buffer" />
paket add buffer --version 3.3.0
#r "nuget: buffer, 3.3.0"
#addin nuget:?package=buffer&version=3.3.0
#tool nuget:?package=buffer&version=3.3.0
⚡️ Better Input for C# with buffer
<div align="center"> <img src="https://raw.githubusercontent.com/pradosh-arduino/buffer/ac911024b63e8a7f5b245be591859991fe23aec4/buffer.gif" alt="Buffer package in action" style="width: 80%; height: auto;" /> </div>
Ever wished Console.ReadLine()
could give you real-time input? Want full control over what the user types as they type it?
Introducing buffer
— a lightweight NuGet package that gives you real-time input handling and total buffer control in C#. Perfect for building interactive CLI tools, REPLs, or anything where ReadLine()
just doesn’t cut it.
✨ Features
✅
Real-time updates while users type📜
Real-time Syntax highlighting.🧠
Manual control over the input buffer🧵
Thread-safe & supports multithreading🔠
Access buffer aschar[]
orstring
💻
Compatible with a wide range of .NET Frameworks🎉
Emoji support for fun prompts🔒
Secure input handling🛠️
Easy to use and integrate📦
Lightweight and fast🔧
Customizable buffer size
🚀 Quick Start
🧩 Installation
Add it via CLI:
dotnet add package buffer
Or visit the NuGet page →
🔧 How It Works
- Initialize the input buffer
- With a buffer size
- Without a buffer size
- Start listening for input
- Read the buffer manually as
char[]
orstring
- Clear the buffer when you’re done
🧪 Example
using Prad.Buffer;
...
PradBuffer InputBuffer = new PradBuffer();
// Start capturing input (does NOT return value)
InputBuffer.GetInput();
// Read it manually
string value = InputBuffer.GetBufferAsString();
// Clear when done
InputBuffer.ClearBuffer();
🧩 Manual Buffer Size Example
using Prad.Buffer;
...
PradBuffer InputBuffer = new PradBuffer(10);
// Start capturing input (does NOT return value)
InputBuffer.GetInput(); // Only 10 characters can be stored. (0 to 9)
// Read it manually
string value = InputBuffer.GetBufferAsString();
// Clear when done
InputBuffer.ClearBuffer();
Here is a demo of Limited Buffer Size of 10 characters
<div align="center"> <img src="https://raw.githubusercontent.com/pradosh-arduino/buffer/main/buffer-limit.gif" alt="buffer-limit" style="width: 70%; height: auto;" /> </div>
🧩 Syntax Highlighting in Real-time
PradBuffer Buffer = new PradBuffer();
Console.WriteLine("Enter something to get started, ");
string s = "";
// Supports Console Colors
Buffer.SyntaxHighlights.Add("prad", ConsoleColor.Red);
// Supports Integers, color will be selected with respective to ConsoleColor enum.
Buffer.SyntaxHighlights.Add("static", 9);
// Directly supports ANSI Escape codes. **Beware any mistakes CAN and WILL break the input.**
Buffer.SyntaxHighlights.Add("public", "\x1b[32m"); // Green ANSI Escape code.
// ! Throws exception if any other data type is being used.
// Buffer.SyntaxHighlights.Add("=", 56.3d);
Buffer.EnableSyntaxHighlighting = true;
while(true){
Buffer.GetInput("> ");
s = Buffer.GetBufferAsString();
Buffer.ClearBuffer();
if(s == "exit") break;
Console.WriteLine($"Value Entered : \"{s}\"");
}
Demo of Syntax Highlighting
<div align="center"> <img src="https://raw.githubusercontent.com/pradosh-arduino/buffer/main/syntax-highlights.gif" alt="Syntax Highlighting Demo" style="width: 70%; height: auto;" /> </div>
🚀 Using its maximum potential
Here is a code example which uses Multithreading to get the input buffer in real-time.
using Prad.Buffer;
class sample_program {
static PradBuffer buffer = new PradBuffer();
static void Main(string[] args) {
Thread thread = new Thread(invoker);
thread.Start();
buffer.GetInput("command > ");
string value = buffer.GetBufferAsString();
buffer.ClearBuffer();
Console.WriteLine(value);
}
static void invoker(){
if(buffer.Length > 0)
Console.WriteLine(buffer.GetBufferAsString());
Thread.Sleep(1000);
invoker();
}
}
🛠️ Unlock the full power of buffer
by using multi-threading to get realtime data even before the user has completed typing.
🛠 Overloaded Input Methods
Option 1 – No prompt
InputBuffer.GetInput();
<waits here for input>
Option 2 – With custom prompt
InputBuffer.GetInput("command > ");
command > <waits here for input>
🤝 Contributing
Contributions are always welcome!
Steps
# 1. Fork the repo
# 2. Create a branch
git checkout -b feature-name
# 3. Make changes & commit
git commit -m "Add feature-name"
# 4. Push and open PR
git push origin feature-name
Please:
- Stick to the existing code style
- Write helpful commit messages
- Document new features
- Add tests when possible ✅
🔗 Links
- 📦 NuGet Package
- 🧑💻 GitHub Source
- 📝 Blog Post
Give it a ⭐ if you like it and share it with your fellow devs!
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
3.3.1 | 156 | 4/14/2025 |
3.3.0 | 151 | 4/14/2025 |
3.2.0 | 157 | 4/14/2025 |
3.1.0 | 153 | 4/14/2025 |
3.0.0 | 151 | 4/13/2025 |
2.1.3 | 97 | 4/13/2025 |
2.1.2 | 92 | 4/13/2025 |
2.1.1 | 132 | 4/9/2025 |
2.1.0 | 129 | 4/9/2025 |
2.0.1 | 126 | 4/8/2025 |
2.0.0 | 123 | 4/8/2025 |
1.2.0 | 127 | 4/7/2025 |
1.1.3 | 132 | 4/6/2025 |
1.1.2 | 129 | 4/6/2025 |
1.1.1 | 97 | 4/6/2025 |
1.1.0 | 98 | 4/6/2025 |
1.0.0 | 120 | 4/1/2025 |