Refactored Command::from_message(...) to be more easily understood.
This commit is contained in:
parent
2b7129c74a
commit
442115330e
1 changed files with 408 additions and 333 deletions
|
@ -229,8 +229,7 @@ impl<'a> Command<'a> {
|
||||||
/// Converts a Message into a Command.
|
/// Converts a Message into a Command.
|
||||||
#[stable]
|
#[stable]
|
||||||
pub fn from_message(m: &'a Message) -> IoResult<Command<'a>> {
|
pub fn from_message(m: &'a Message) -> IoResult<Command<'a>> {
|
||||||
/* FIXME: Re-write this using match as so:
|
Ok(if let "PASS" = m.command[] {
|
||||||
if let "PASS" = m.command[] {
|
|
||||||
match m.suffix {
|
match m.suffix {
|
||||||
Some(ref suffix) => {
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
|
@ -241,132 +240,142 @@ impl<'a> Command<'a> {
|
||||||
PASS(m.args[0][])
|
PASS(m.args[0][])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
*/
|
|
||||||
Ok(if let "PASS" = m.command[] {
|
|
||||||
if m.suffix.is_some() {
|
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
|
||||||
PASS(m.suffix.as_ref().unwrap()[])
|
|
||||||
} else {
|
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
|
||||||
PASS(m.args[0][])
|
|
||||||
}
|
|
||||||
} else if let "NICK" = m.command[] {
|
} else if let "NICK" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
NICK(m.suffix.as_ref().unwrap()[])
|
NICK(suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
NICK(m.args[0][])
|
NICK(m.args[0][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "USER" = m.command[] {
|
} else if let "USER" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
USER(m.args[0][], m.args[1][], m.suffix.as_ref().unwrap()[])
|
USER(m.args[0][], m.args[1][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 3 { return Err(invalid_input()) }
|
if m.args.len() != 3 { return Err(invalid_input()) }
|
||||||
USER(m.args[0][], m.args[1][], m.args[2][])
|
USER(m.args[0][], m.args[1][], m.args[2][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "OPER" = m.command[] {
|
} else if let "OPER" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
OPER(m.args[0][], m.suffix.as_ref().unwrap()[])
|
OPER(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
OPER(m.args[0][], m.args[1][])
|
OPER(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "MODE" = m.command[] {
|
} else if let "MODE" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
MODE(m.args[0][], m.args[1][], Some(m.suffix.as_ref().unwrap()[]))
|
MODE(m.args[0][], m.args[1][], Some(suffix[]))
|
||||||
} else if m.args.len() == 3 {
|
}
|
||||||
|
None => if m.args.len() == 3 {
|
||||||
MODE(m.args[0][], m.args[1][], Some(m.args[2][]))
|
MODE(m.args[0][], m.args[1][], Some(m.args[2][]))
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
MODE(m.args[0][], m.args[1][], None)
|
MODE(m.args[0][], m.args[1][], None)
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "SERVICE" = m.command[] {
|
} else if let "SERVICE" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 5 { return Err(invalid_input()) }
|
if m.args.len() != 5 { return Err(invalid_input()) }
|
||||||
SERVICE(m.args[0][], m.args[1][], m.args[2][], m.args[3][], m.args[4][], m.suffix.as_ref().unwrap()[])
|
SERVICE(m.args[0][], m.args[1][], m.args[2][], m.args[3][], m.args[4][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 6 { return Err(invalid_input()) }
|
if m.args.len() != 6 { return Err(invalid_input()) }
|
||||||
SERVICE(m.args[0][], m.args[1][], m.args[2][], m.args[3][], m.args[4][], m.args[5][])
|
SERVICE(m.args[0][], m.args[1][], m.args[2][], m.args[3][], m.args[4][], m.args[5][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "QUIT" = m.command[] {
|
} else if let "QUIT" = m.command[] {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
QUIT(Some(m.suffix.as_ref().unwrap()[]))
|
Some(ref suffix) => QUIT(Some(suffix[])),
|
||||||
} else {
|
None => QUIT(None)
|
||||||
QUIT(None)
|
|
||||||
}
|
}
|
||||||
} else if let "SQUIT" = m.command[] {
|
} else if let "SQUIT" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
SQUIT(m.args[0][], m.suffix.as_ref().unwrap()[])
|
SQUIT(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
SQUIT(m.args[0][], m.args[1][])
|
SQUIT(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "JOIN" = m.command[] {
|
} else if let "JOIN" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
JOIN(m.suffix.as_ref().unwrap()[], None)
|
JOIN(suffix[], None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
JOIN(m.args[0][], Some(m.suffix.as_ref().unwrap()[]))
|
JOIN(m.args[0][], Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 1 {
|
None => if m.args.len() == 1 {
|
||||||
JOIN(m.args[0][], None)
|
JOIN(m.args[0][], None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
JOIN(m.args[0][], Some(m.args[1][]))
|
JOIN(m.args[0][], Some(m.args[1][]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "PART" = m.command[] {
|
} else if let "PART" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
PART(m.suffix.as_ref().unwrap()[], None)
|
PART(suffix[], None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
PART(m.args[0][], Some(m.suffix.as_ref().unwrap()[]))
|
PART(m.args[0][], Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 1 {
|
None => if m.args.len() == 1 {
|
||||||
PART(m.args[0][], None)
|
PART(m.args[0][], None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
PART(m.args[0][], Some(m.args[1][]))
|
PART(m.args[0][], Some(m.args[1][]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "TOPIC" = m.command[] {
|
} else if let "TOPIC" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
TOPIC(m.suffix.as_ref().unwrap()[], None)
|
TOPIC(suffix[], None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
TOPIC(m.args[0][], Some(m.suffix.as_ref().unwrap()[]))
|
TOPIC(m.args[0][], Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 1 {
|
None => if m.args.len() == 1 {
|
||||||
TOPIC(m.args[0][], None)
|
TOPIC(m.args[0][], None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
TOPIC(m.args[0][], Some(m.args[1][]))
|
TOPIC(m.args[0][], Some(m.args[1][]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "NAMES" = m.command[] {
|
} else if let "NAMES" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
NAMES(Some(m.suffix.as_ref().unwrap()[]), None)
|
NAMES(Some(suffix[]), None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
NAMES(Some(m.args[0][]), Some(m.suffix.as_ref().unwrap()[]))
|
NAMES(Some(m.args[0][]), Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 0 {
|
None => if m.args.len() == 0 {
|
||||||
NAMES(None, None)
|
NAMES(None, None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
NAMES(Some(m.args[0][]), None)
|
NAMES(Some(m.args[0][]), None)
|
||||||
|
@ -375,16 +384,17 @@ impl<'a> Command<'a> {
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "LIST" = m.command[] {
|
} else if let "LIST" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
LIST(Some(m.suffix.as_ref().unwrap()[]), None)
|
LIST(Some(suffix[]), None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
LIST(Some(m.args[0][]), Some(m.suffix.as_ref().unwrap()[]))
|
LIST(Some(m.args[0][]), Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 0 {
|
None => if m.args.len() == 0 {
|
||||||
LIST(None, None)
|
LIST(None, None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
LIST(Some(m.args[0][]), None)
|
LIST(Some(m.args[0][]), None)
|
||||||
|
@ -393,40 +403,61 @@ impl<'a> Command<'a> {
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "INVITE" = m.command[] {
|
} else if let "INVITE" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
INVITE(m.args[0][], m.suffix.as_ref().unwrap()[])
|
INVITE(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
INVITE(m.args[0][], m.args[1][])
|
INVITE(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "KICK" = m.command[] {
|
} else if let "KICK" = m.command[] {
|
||||||
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
KICK(m.args[0][], m.args[1][], m.suffix.as_ref().map(|s| s[]))
|
KICK(m.args[0][], m.args[1][], Some(suffix[]))
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
|
KICK(m.args[0][], m.args[1][], None)
|
||||||
|
},
|
||||||
|
}
|
||||||
} else if let "PRIVMSG" = m.command[] {
|
} else if let "PRIVMSG" = m.command[] {
|
||||||
if !m.suffix.is_some() || m.args.len() != 1 { return Err(invalid_input()) }
|
match m.suffix {
|
||||||
PRIVMSG(m.args[0][], m.suffix.as_ref().unwrap()[])
|
Some(ref suffix) => {
|
||||||
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
|
PRIVMSG(m.args[0][], suffix[])
|
||||||
|
},
|
||||||
|
None => return Err(invalid_input())
|
||||||
|
}
|
||||||
} else if let "NOTICE" = m.command[] {
|
} else if let "NOTICE" = m.command[] {
|
||||||
if !m.suffix.is_some() || m.args.len() != 1 { return Err(invalid_input()) }
|
match m.suffix {
|
||||||
NOTICE(m.args[0][], m.suffix.as_ref().unwrap()[])
|
Some(ref suffix) => {
|
||||||
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
|
NOTICE(m.args[0][], suffix[])
|
||||||
|
},
|
||||||
|
None => return Err(invalid_input())
|
||||||
|
}
|
||||||
} else if let "MOTD" = m.command[] {
|
} else if let "MOTD" = m.command[] {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
MOTD(Some(m.suffix.as_ref().unwrap()[]))
|
Some(ref suffix) => MOTD(Some(suffix[])),
|
||||||
} else {
|
None => MOTD(None)
|
||||||
MOTD(None)
|
|
||||||
}
|
}
|
||||||
} else if let "LUSERS" = m.command[] {
|
} else if let "LUSERS" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
LUSERS(Some(m.suffix.as_ref().unwrap()[]), None)
|
LUSERS(Some(suffix[]), None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
LUSERS(Some(m.args[0][]), Some(m.suffix.as_ref().unwrap()[]))
|
LUSERS(Some(m.args[0][]), Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 0 {
|
None => if m.args.len() == 0 {
|
||||||
LUSERS(None, None)
|
LUSERS(None, None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
LUSERS(Some(m.args[0][]), None)
|
LUSERS(Some(m.args[0][]), None)
|
||||||
|
@ -435,23 +466,23 @@ impl<'a> Command<'a> {
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "VERSION" = m.command[] {
|
} else if let "VERSION" = m.command[] {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
VERSION(Some(m.suffix.as_ref().unwrap()[]))
|
Some(ref suffix) => VERSION(Some(suffix[])),
|
||||||
} else {
|
None => VERSION(None)
|
||||||
VERSION(None)
|
|
||||||
}
|
}
|
||||||
} else if let "STATS" = m.command[] {
|
} else if let "STATS" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
STATS(Some(m.suffix.as_ref().unwrap()[]), None)
|
STATS(Some(suffix[]), None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
STATS(Some(m.args[0][]), Some(m.suffix.as_ref().unwrap()[]))
|
STATS(Some(m.args[0][]), Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 0 {
|
None => if m.args.len() == 0 {
|
||||||
STATS(None, None)
|
STATS(None, None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
STATS(Some(m.args[0][]), None)
|
STATS(Some(m.args[0][]), None)
|
||||||
|
@ -460,61 +491,67 @@ impl<'a> Command<'a> {
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "LINKS" = m.command[] {
|
} else if let "LINKS" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
LINKS(None, Some(m.suffix.as_ref().unwrap()[]))
|
LINKS(None, Some(suffix[]))
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
LINKS(Some(m.args[0][]), Some(m.suffix.as_ref().unwrap()[]))
|
LINKS(Some(m.args[0][]), Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 0 {
|
None => if m.args.len() == 0 {
|
||||||
LINKS(None, None)
|
LINKS(None, None)
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "TIME" = m.command[] {
|
} else if let "TIME" = m.command[] {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
TIME(Some(m.suffix.as_ref().unwrap()[]))
|
Some(ref suffix) => TIME(Some(suffix[])),
|
||||||
} else {
|
None => TIME(None)
|
||||||
TIME(None)
|
|
||||||
}
|
}
|
||||||
} else if let "CONNECT" = m.command[] {
|
} else if let "CONNECT" = m.command[] {
|
||||||
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
CONNECT(m.args[0][], m.args[1][], m.suffix.as_ref().map(|s| s[]))
|
CONNECT(m.args[0][], m.args[1][], Some(suffix[]))
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
|
CONNECT(m.args[0][], m.args[1][], None)
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if let "TRACE" = m.command[] {
|
} else if let "TRACE" = m.command[] {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
TRACE(Some(m.suffix.as_ref().unwrap()[]))
|
Some(ref suffix) => TRACE(Some(suffix[])),
|
||||||
} else {
|
None => TRACE(None)
|
||||||
TRACE(None)
|
|
||||||
}
|
}
|
||||||
} else if let "ADMIN" = m.command[] {
|
} else if let "ADMIN" = m.command[] {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
TIME(Some(m.suffix.as_ref().unwrap()[]))
|
Some(ref suffix) => ADMIN(Some(suffix[])),
|
||||||
} else {
|
None => ADMIN(None)
|
||||||
TIME(None)
|
|
||||||
}
|
}
|
||||||
} else if let "INFO" = m.command[] {
|
} else if let "INFO" = m.command[] {
|
||||||
if m.args.len() != 0 { return Err(invalid_input()) }
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
TIME(Some(m.suffix.as_ref().unwrap()[]))
|
Some(ref suffix) => INFO(Some(suffix[])),
|
||||||
} else {
|
None => INFO(None)
|
||||||
TIME(None)
|
|
||||||
}
|
}
|
||||||
} else if let "SERVLIST" = m.command[] {
|
} else if let "SERVLIST" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
SERVLIST(Some(m.suffix.as_ref().unwrap()[]), None)
|
SERVLIST(Some(suffix[]), None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
SERVLIST(Some(m.args[0][]), Some(m.suffix.as_ref().unwrap()[]))
|
SERVLIST(Some(m.args[0][]), Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 0 {
|
None => if m.args.len() == 0 {
|
||||||
SERVLIST(None, None)
|
SERVLIST(None, None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
SERVLIST(Some(m.args[0][]), None)
|
SERVLIST(Some(m.args[0][]), None)
|
||||||
|
@ -523,24 +560,28 @@ impl<'a> Command<'a> {
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "SQUERY" = m.command[] {
|
} else if let "SQUERY" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
SQUERY(m.args[0][], m.suffix.as_ref().unwrap()[])
|
SQUERY(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
SQUERY(m.args[0][], m.args[1][])
|
SQUERY(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "WHO" = m.command[] {
|
} else if let "WHO" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
WHO(Some(m.suffix.as_ref().unwrap()[]), None)
|
WHO(Some(suffix[]), None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
WHO(Some(m.args[0][]), Some(m.suffix.as_ref().unwrap()[] == "o"))
|
WHO(Some(m.args[0][]), Some(suffix[] == "o"))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 0 {
|
None => if m.args.len() == 0 {
|
||||||
WHO(None, None)
|
WHO(None, None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
WHO(Some(m.args[0][]), None)
|
WHO(Some(m.args[0][]), None)
|
||||||
|
@ -549,34 +590,36 @@ impl<'a> Command<'a> {
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "WHOIS" = m.command[] {
|
} else if let "WHOIS" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
WHOIS(None, m.suffix.as_ref().unwrap()[])
|
WHOIS(None, suffix[])
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
WHOIS(Some(m.args[0][]), m.suffix.as_ref().unwrap()[])
|
WHOIS(Some(m.args[0][]), suffix[])
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 1 {
|
None => if m.args.len() == 1 {
|
||||||
WHOIS(None, m.args[0][])
|
WHOIS(None, m.args[0][])
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
WHOIS(Some(m.args[0][]), m.args[1][])
|
WHOIS(Some(m.args[0][]), m.args[1][])
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "WHOWAS" = m.command[] {
|
} else if let "WHOWAS" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
WHOWAS(m.suffix.as_ref().unwrap()[], None, None)
|
WHOWAS(suffix[], None, None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
WHOWAS(m.args[0][], None, Some(m.suffix.as_ref().unwrap()[]))
|
WHOWAS(m.args[0][], None, Some(suffix[]))
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
WHOWAS(m.args[0][], Some(m.args[1][]), Some(m.suffix.as_ref().unwrap()[]))
|
WHOWAS(m.args[0][], Some(m.args[1][]), Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 1 {
|
None => if m.args.len() == 1 {
|
||||||
WHOWAS(m.args[0][], None, None)
|
WHOWAS(m.args[0][], None, None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
WHOWAS(m.args[0][], None, Some(m.args[1][]))
|
WHOWAS(m.args[0][], None, Some(m.args[1][]))
|
||||||
|
@ -585,57 +628,69 @@ impl<'a> Command<'a> {
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "KILL" = m.command[] {
|
} else if let "KILL" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
KILL(m.args[0][], m.suffix.as_ref().unwrap()[])
|
KILL(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
KILL(m.args[0][], m.args[1][])
|
KILL(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "PING" = m.command[] {
|
} else if let "PING" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
PING(m.suffix.as_ref().unwrap()[], None)
|
PING(suffix[], None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
PING(m.args[0][], Some(m.suffix.as_ref().unwrap()[]))
|
PING(m.args[0][], Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 1 {
|
None => if m.args.len() == 1 {
|
||||||
PING(m.args[0][], None)
|
PING(m.args[0][], None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
PING(m.args[0][], Some(m.args[1][]))
|
PING(m.args[0][], Some(m.args[1][]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "PONG" = m.command[] {
|
} else if let "PONG" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
PONG(m.suffix.as_ref().unwrap()[], None)
|
PONG(suffix[], None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
PONG(m.args[0][], Some(m.suffix.as_ref().unwrap()[]))
|
PONG(m.args[0][], Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 1 {
|
None => if m.args.len() == 1 {
|
||||||
PONG(m.args[0][], None)
|
PONG(m.args[0][], None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
PONG(m.args[0][], Some(m.args[1][]))
|
PONG(m.args[0][], Some(m.args[1][]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "ERROR" = m.command[] {
|
} else if let "ERROR" = m.command[] {
|
||||||
if m.suffix.is_some() && m.args.len() == 0 {
|
match m.suffix {
|
||||||
ERROR(m.suffix.as_ref().unwrap()[])
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
|
ERROR(suffix[])
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
|
},
|
||||||
|
None => return Err(invalid_input())
|
||||||
}
|
}
|
||||||
} else if let "AWAY" = m.command[] {
|
} else if let "AWAY" = m.command[] {
|
||||||
if m.args.len() == 0 {
|
match m.suffix {
|
||||||
AWAY(m.suffix.as_ref().map(|s| s[]))
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
|
AWAY(Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
|
},
|
||||||
|
None => return Err(invalid_input())
|
||||||
}
|
}
|
||||||
} else if let "REHASH" = m.command[] {
|
} else if let "REHASH" = m.command[] {
|
||||||
if m.args.len() == 0 {
|
if m.args.len() == 0 {
|
||||||
|
@ -656,17 +711,17 @@ impl<'a> Command<'a> {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
} else if let "SUMMON" = m.command[] {
|
} else if let "SUMMON" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 0 {
|
Some(ref suffix) => if m.args.len() == 0 {
|
||||||
SUMMON(m.suffix.as_ref().unwrap()[], None, None)
|
SUMMON(suffix[], None, None)
|
||||||
} else if m.args.len() == 1 {
|
} else if m.args.len() == 1 {
|
||||||
SUMMON(m.args[0][], Some(m.suffix.as_ref().unwrap()[]), None)
|
SUMMON(m.args[0][], Some(suffix[]), None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
SUMMON(m.args[0][], Some(m.args[1][]), Some(m.suffix.as_ref().unwrap()[]))
|
SUMMON(m.args[0][], Some(m.args[1][]), Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 1 {
|
None => if m.args.len() == 1 {
|
||||||
SUMMON(m.args[0][], None, None)
|
SUMMON(m.args[0][], None, None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
SUMMON(m.args[0][], Some(m.args[1][]), None)
|
SUMMON(m.args[0][], Some(m.args[1][]), None)
|
||||||
|
@ -675,21 +730,28 @@ impl<'a> Command<'a> {
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "USERS" = m.command[] {
|
} else if let "USERS" = m.command[] {
|
||||||
if m.args.len() == 0 {
|
match m.suffix {
|
||||||
USERS(m.suffix.as_ref().map(|s| s[]))
|
Some(ref suffix) => {
|
||||||
} else if m.args.len() == 1 {
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
|
USERS(Some(suffix[]))
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
USERS(Some(m.args[0][]))
|
USERS(Some(m.args[0][]))
|
||||||
} else {
|
}
|
||||||
return Err(invalid_input())
|
|
||||||
}
|
}
|
||||||
} else if let "WALLOPS" = m.command[] {
|
} else if let "WALLOPS" = m.command[] {
|
||||||
if m.suffix.is_some() && m.args.len() == 0 {
|
match m.suffix {
|
||||||
WALLOPS(m.suffix.as_ref().unwrap()[])
|
Some(ref suffix) => {
|
||||||
} else if m.args.len() == 1 {
|
if m.args.len() != 0 { return Err(invalid_input()) }
|
||||||
|
WALLOPS(suffix[])
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
WALLOPS(m.args[0][])
|
WALLOPS(m.args[0][])
|
||||||
} else {
|
}
|
||||||
return Err(invalid_input())
|
|
||||||
}
|
}
|
||||||
} else if let "USERHOST" = m.command[] {
|
} else if let "USERHOST" = m.command[] {
|
||||||
if m.suffix.is_none() {
|
if m.suffix.is_none() {
|
||||||
|
@ -704,53 +766,66 @@ impl<'a> Command<'a> {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
} else if let "SAJOIN" = m.command[] {
|
} else if let "SAJOIN" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
SAJOIN(m.args[0][], m.suffix.as_ref().unwrap()[])
|
SAJOIN(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
SAJOIN(m.args[0][], m.args[1][])
|
SAJOIN(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "SAMODE" = m.command[] {
|
} else if let "SAMODE" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
if m.args.len() == 1 {
|
Some(ref suffix) => if m.args.len() == 1 {
|
||||||
SAMODE(m.args[0][], m.suffix.as_ref().unwrap()[], None)
|
SAMODE(m.args[0][], suffix[], None)
|
||||||
} else if m.args.len() == 2 {
|
} else if m.args.len() == 2 {
|
||||||
SAMODE(m.args[0][], m.args[1][], Some(m.suffix.as_ref().unwrap()[]))
|
SAMODE(m.args[0][], m.args[1][], Some(suffix[]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
},
|
||||||
} else if m.args.len() == 2 {
|
None => if m.args.len() == 2 {
|
||||||
SAMODE(m.args[0][], m.args[1][], None)
|
SAMODE(m.args[0][], m.args[1][], None)
|
||||||
} else if m.args.len() == 3 {
|
} else if m.args.len() == 3 {
|
||||||
SAMODE(m.args[0][], m.args[1][], Some(m.args[2][]))
|
SAMODE(m.args[0][], m.args[1][], Some(m.args[2][]))
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "SANICK" = m.command[] {
|
} else if let "SANICK" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
SANICK(m.args[0][], m.suffix.as_ref().unwrap()[])
|
SANICK(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
SANICK(m.args[0][], m.args[1][])
|
SANICK(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "SAPART" = m.command[] {
|
} else if let "SAPART" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
SAPART(m.args[0][], m.suffix.as_ref().unwrap()[])
|
SAPART(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
SAPART(m.args[0][], m.args[1][])
|
SAPART(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if let "SAQUIT" = m.command[] {
|
} else if let "SAQUIT" = m.command[] {
|
||||||
if m.suffix.is_some() {
|
match m.suffix {
|
||||||
|
Some(ref suffix) => {
|
||||||
if m.args.len() != 1 { return Err(invalid_input()) }
|
if m.args.len() != 1 { return Err(invalid_input()) }
|
||||||
SAQUIT(m.args[0][], m.suffix.as_ref().unwrap()[])
|
SAQUIT(m.args[0][], suffix[])
|
||||||
} else {
|
},
|
||||||
|
None => {
|
||||||
if m.args.len() != 2 { return Err(invalid_input()) }
|
if m.args.len() != 2 { return Err(invalid_input()) }
|
||||||
SAQUIT(m.args[0][], m.args[1][])
|
SAQUIT(m.args[0][], m.args[1][])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return Err(invalid_input())
|
return Err(invalid_input())
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue