Updated get_source_nickname behavior to match spec (fixes #40).
This commit is contained in:
parent
7eebe9ad25
commit
8104894c28
1 changed files with 14 additions and 1 deletions
|
@ -47,7 +47,14 @@ impl Message {
|
||||||
|
|
||||||
/// Gets the nickname of the message source, if it exists.
|
/// Gets the nickname of the message source, if it exists.
|
||||||
pub fn get_source_nickname(&self) -> Option<&str> {
|
pub fn get_source_nickname(&self) -> Option<&str> {
|
||||||
self.prefix.as_ref().and_then(|s| s.find('!').map(|i| &s[..i]))
|
self.prefix.as_ref().and_then(|s|
|
||||||
|
match (s.find('!'), s.find('@'), s.find('.')) {
|
||||||
|
(_, _, Some(_)) => None,
|
||||||
|
(Some(i), _, None) => Some(&s[..i]),
|
||||||
|
(None, Some(i), None) => Some(&s[..i]),
|
||||||
|
(None, None, None) => Some(&s)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Converts a Message into a String according to the IRC protocol.
|
/// Converts a Message into a String according to the IRC protocol.
|
||||||
|
@ -152,6 +159,12 @@ mod test {
|
||||||
assert_eq!(Message::new(
|
assert_eq!(Message::new(
|
||||||
Some("test!test@test"), "PING", None, None
|
Some("test!test@test"), "PING", None, None
|
||||||
).get_source_nickname(), Some("test"));
|
).get_source_nickname(), Some("test"));
|
||||||
|
assert_eq!(Message::new(
|
||||||
|
Some("test@test"), "PING", None, None
|
||||||
|
).get_source_nickname(), Some("test"));
|
||||||
|
assert_eq!(Message::new(
|
||||||
|
Some("test"), "PING", None, None
|
||||||
|
).get_source_nickname(), Some("test"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Add table
Reference in a new issue