56 lines
1.5 KiB
Markdown
56 lines
1.5 KiB
Markdown
# ircparser
|
|
|
|
An IRC (RFC1459) parser and formatter, built in Rust.
|
|
|
|
`ircparser` should work on basically any Rust version, but the earliest version checked in the CI is v1.31 (the first version with Rust 2018 support).
|
|
|
|
## Setup
|
|
|
|
To use the latest stable version of `ircparser`, add it to your Cargo.toml file like so:
|
|
|
|
```toml
|
|
[dependencies]
|
|
ircparser = "^0.2.1"
|
|
```
|
|
|
|
You can also use the latest development version by specifying the following:
|
|
|
|
```toml
|
|
[dependencies]
|
|
ircparser = { git = "https://github.com/parafoxia/ircparser" }
|
|
```
|
|
|
|
## Usage
|
|
|
|
`ircparser` currently only has one public function — `parse`.
|
|
This function takes a line of an IRC message, and parses it into an easy-to-use `Line` object.
|
|
|
|
```rs
|
|
use ircparser;
|
|
|
|
fn main() {
|
|
let msg = "@id=123;name=rick :nick!user@host.tmi.twitch.tv PRIVMSG #rickastley :Never gonna give you up!";
|
|
match ircparser::parse(msg) {
|
|
Ok(x) => {
|
|
let line = x;
|
|
|
|
assert_eq!(&line.tags["id"], "123");
|
|
if line.source.is_some() {
|
|
assert_eq!(line.source.unwrap(), ":nick!user@host.tmi.twitch.tv");
|
|
}
|
|
assert_eq!(line.command, "PRIVMSG");
|
|
assert_eq!(line.params[0], "#rickastley");
|
|
assert_eq!(line.params[1], "Never gonna give you up!");
|
|
}
|
|
Err(e) => {
|
|
println!("A parsing error occured: {e}");
|
|
return;
|
|
}
|
|
};
|
|
}
|
|
```
|
|
|
|
## License
|
|
|
|
The `ircparser` crate for Rust is licensed under the [BSD 3-Clause License](https://github.com/parafoxia/ircparser/blob/main/LICENSE).
|