aboutsummaryrefslogtreecommitdiff
path: root/src/ident.rs
blob: 6dd7de8473f67dd22c98a98ccd011bfc72144fcb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use regex::Regex;
use std::borrow::ToOwned;

static PATTERN: Regex = regex!("(.*)!(.*)@(.*)");

#[derive(Debug, Clone)]
pub struct Ident {
    pub nickname: String,
    pub user: String,
    pub host: String
}

impl Ident {
    pub fn parse(s: &str) -> Option<Ident> {
        let c = match PATTERN.captures(s) {
            Some(c) => c,
            None => return None
        };
        Some(Ident {
            nickname: c.at(1).unwrap().to_owned(),
            user: c.at(2).unwrap().to_owned(),
            host: c.at(3).unwrap().to_owned()
        })
    }
}