39 lines
857 B
Rust
39 lines
857 B
Rust
use command::{IrcCommand, IrcCommandLine, Numeric, Stringy};
|
|
|
|
use std::io;
|
|
use std::io::prelude::*;
|
|
|
|
use std::ops::Range;
|
|
|
|
pub struct SimpleIrcCommand {
|
|
command: Vec<u8>,
|
|
arguments: (Vec<Range<usize>>, Vec<u8>),
|
|
source: Vec<u8>,
|
|
}
|
|
|
|
impl IrcCommandLine for SimpleIrcCommand {
|
|
fn get_command<'a>(&'a self) -> IrcCommand<'a> {
|
|
IrcCommand::new(&self.command)
|
|
}
|
|
|
|
fn get_argument<'a>(&'a self, arg: usize) -> &'a [u8] {
|
|
&self.arguments.1[self.arguments.0[arg].clone()] // awful API there, rust.
|
|
}
|
|
|
|
fn get_argument_count(&self) -> usize {
|
|
self.arguments.0.len()
|
|
}
|
|
|
|
fn get_source<'a>(&'a self) -> &'a [u8] {
|
|
&self.source
|
|
}
|
|
}
|
|
|
|
pub struct NoIrcConnection;
|
|
|
|
impl NoIrcConnection {
|
|
pub fn read_command<R: Read>(reader: R) -> io::Result<SimpleIrcCommand> {
|
|
unimplemented!()
|
|
}
|
|
}
|