<commit_before># ``IrcMessage#``
> A fast IRC message parser written in C# for the .NET Framework

## Installation
We currently only support NuGet for installation

    Install-Package IrcMessageSharp

## Usage
```C#
var line = ":matt!brainling@cloak PRIVMSG #csharp :Hello world!"

// Can throw FormatException
var message = IrcMessage.Parse(line);

// Exception safe
IrcMessage message;
if(IrcMessage.TryParse(line, out message)) {
    // We have a valid message here
}

// Create a new message
var message = new IrcMessage {
    Prefix = "matt!brainling@cloak"
    Command = "PRIVMSG"
}
message.Params.Add("#csharp");
message.Params.Add("Hello world!");

// Writes: :matt!brainling@cloak PRIVMSG #csharp :Hello world!
Console.WriteLine(message.ToString());

```

The IrcMessage object has the following properties:
- `Command string`: The command parsed from the IRC message
- `Prefix string`: A prefix if one was parsed from the message, otherwise String.Empty
- `Params IList<string>`: The parameters parsed from the message. Can be empty.
- `Tags IDictionary<string, string>`: The tags parsed from the message. Can be empty. Tags with no value (flags) will have the value 'true' in the dictionary.

## Credit
Based on the work of **<NAME>** (expr) and his excellent [irc-message JavaScript library](https://github.com/expr/irc-message)

## Roadmap
Version Roadmap
- 0.6.0: Implement irc-message's utility functions
- 0.7.0: More work on the streaming infrastructure, IrcStreamReader is a bit bare bones
- 1.0.0: API stabialized and most bugs squashed

## Suport
If you find a bug or issue, please report it here on GitHub and I'll fix it ASAP.
<commit_msg>Updated with a minor readme tweak<commit_after># ``IrcMessage#``
> A fast IRC message parser written in C# for the .NET Framework

## Installation
We currently only support NuGet for installation

    Install-Package IrcMessageSharp

## Usage
```C#
var line = ":matt!brainling@cloak PRIVMSG #csharp :Hello world!"

// Can throw FormatException
var message = IrcMessage.Parse(line);

// Exception safe
IrcMessage message;
if(IrcMessage.TryParse(line, out message)) {
    // We have a valid message here
}

// Create a new message
var message = new IrcMessage {
    Prefix = "matt!brainling@cloak"
    Command = "PRIVMSG"
}
message.Params.Add("#csharp");
message.Params.Add("Hello world!");

// Writes: :matt!brainling@cloak PRIVMSG #csharp :Hello world!
Console.WriteLine(message.ToString());

```

The IrcMessage object has the following properties:
- `Command string`: The command parsed from the IRC message
- `Prefix string`: A prefix if one was parsed from the message, otherwise String.Empty
- `Params IList<string>`: The parameters parsed from the message. Can be empty.
- `Tags IDictionary<string, string>`: The tags parsed from the message. Can be empty. Tags with no value (flags) will have the value 'true' in the dictionary.

## Credit
Based on the work of **<NAME>** ([expr](https://github.com/expr)) and his excellent [irc-message JavaScript library](https://github.com/expr/irc-message)

## Roadmap
Version Roadmap
- 0.6.0: Implement irc-message's utility functions
- 0.7.0: More work on the streaming infrastructure, IrcStreamReader is a bit bare bones
- 1.0.0: API stabialized and most bugs squashed

## Suport
If you find a bug or issue, please report it here on GitHub and I'll fix it ASAP.

{'fraction_non_alphanumeric': 0.10649658854939187, 'fraction_numerical': 0.005339661821417977, 'mean_word_length': 4.456310679611651, 'pattern_counts': {'":': 2, '<': 9, '<?xml version=': 0, '>': 11, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3032681', 'n_tokens_mistral': 1039, 'n_tokens_neox': 982, 'n_words': 405}